Unity 6.3
0 онлайн 2 гостей 3 в системе
Вход

ScriptableObject.Awake()

Описание

Вызывается при создании экземпляра ScriptableObject.

Awake вызывается при создании нового экземпляра ScriptableObject, что происходит в следующих сценариях:

  • При запуске Редактора, для всех ScriptableObjects, на которые делается ссылка в открытых сценах.
  • При создании нового ScriptableObject, созданного в качестве ассета с помощью меню Создать актив в Редакторе
  • При экземплярировании ScriptableObject, экземплярированного во время выполнения через ScriptableObject.CreateInstance или при загрузке ассета во время выполнения.
  • При первой загрузке сцены, которая содержит ссылку на ScriptableObject в окне Hierarchy, или при последующих загрузках, если первоначальный экземпляр с тех пор был удален.
  • При первом выборе ScriptableObject в окне Project, или при последующих выборах, если первоначальный экземпляр с тех пор был удален.

Примечание: ScriptableObjects созданные как ассеты в режиме редактирования не восстанавливаются при вхождении в режим воспроизведения. Для выполнения работы по инициализации в ScriptableObject при входе в режим воспроизведения, используйте ScriptableObject.OnEnable вместо этого.

Пример приведен ниже. В этом примере есть два скрипта. Первый показан как ScriptableObject скрипт. Это реализует код, который отделен от MonoBehaviour. Второй является небольшим MonoBehaviour соответствующий скрипт, который получает значения из ScriptableObject скрипта.

// A ScriptableObject example script.
// The A and B members implement features which
// are unrelated to MonoBehaviour.

using UnityEngine;

public class ScriptObj : ScriptableObject { int a = 10; int[] b = new int[5] {0, 17, 34, 42, 67};

public int A { get {return a; } }

// return value in b array, or -1 if x is out-of-range public int B(int x) { if (x >= 0 && x < 5) return b[x]; else return -1; }

public void Awake() { Debug.Log("Awake"); }

public void OnDestroy() { Debug.Log("OnDestroy"); } }

Следующий скрипт использует вышеуказанный скрипт ScriptableObject.

// create and access the ScriptObj

using UnityEngine;

public class ScriptObjExample : MonoBehaviour { ScriptObj test;

void Start() { test = (ScriptObj)ScriptableObject.CreateInstance(typeof(ScriptObj));

print(test.A); print(test.B(3)); print(test.B(-3)); } }