Описание
Эта функция вызывается, когда объект, доступный для сценария, выходит за пределы области видимости.
Это также вызывается при уничтожении объекта и может использоваться для любого кода очистки. Когда скрипты перезагружаются после завершения компиляции, будет вызван OnDisable, а затем OnEnable после загрузки скрипта.
// Пример скрипта ScriptableObject.
// Элементы A и B реализуют функции, которые
// не связаны с 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; }
}
// возвращаем значение в массиве b или -1, если x выходит за пределы допустимого диапазона
public int B(int x)
{
if (x >= 0 && x <= 5)
return b[x];
else
return -1;
}
public void Awake()
{
Debug.Log("Awake");
}
public void OnEnable()
{
Debug.Log("OnEnable");
}
public void OnDisable()
{
Debug.Log("OnDisable");
}
public void OnDestroy()
{
Debug.Log("OnDestroy");
}
}
Следующий сценарий использует приведенный выше сценарий ScriptableObject.
// создать и получить доступ к 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));
}
}
OnDisable не может быть сопрограммой.