Инициалиация static полей в Unity
Unity не позволяет инициализировать статические переменные через инспектор. Есть ли какие-то способы заменить статические переменные?
Единственное условие: переменную можно читать из всех объектов класса, а задавать только через инспектор. Единственный способ проинициализировать static поле, который я нашёл это создать специальный gameObject для этого:
using UnityEngine;
using UnityEngine.Tilemaps;
public class StaticInit : MonoBehaviour
{
public TileBase[] Acceptable; // Переменная из инспектора
void Start()
{
TilemapSpawner.Acceptable = Acceptable; // Та самая статическая переменная
Destroy(gameObject);
}
}
Но Unity при этом жалуется на null.
Ответы (1 шт):
Автор решения: Yaroslav
→ Ссылка
Через Custom Editor можно все.
public class StaticInit : MonoBehaviour {
public static int Test;
}
using UnityEditor;
[CustomEditor(typeof(StaticInit))]
public class StaticInitEditor : Editor {
private StaticInit _target;
private void OnEnable () {
_target = (StaticInit)target;
}
public override void OnInspectorGUI () {
_target.Test = EditorGUILayout.IntField("My Static Value", _target.Test);
base.OnInspectorGUI();
}
}