Как можно отобразить статические переменные в окне инспектора в Unity?

Как сделать статические поля, такие как `public static int variable`, видимыми в инспекторе Unity, помимо использования атрибута `[SerializeField]`?
  • 4 апреля 2024 г. 16:19
Ответы на вопрос 3
Статические переменные в Unity по умолчанию не отображаются в окне инспектора, так как инспектор отображает только экземплярные переменные объекта, а не статические переменные класса.

Однако, если вам действительно нужно отобразить статические переменные в инспекторе Unity, можно воспользоваться специальными редакторскими средствами Unity (Editor scripting). Например, можно создать кастомный редактор или расширение редактора для вашего скрипта, которое будет отображать статические переменные в окне инспектора.

Пример использования кастомного редактора для отображения статических переменных:

```csharp
using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(YourScript))]
public class YourScriptEditor : Editor
{
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        YourScript script = target as YourScript;

        EditorGUI.BeginChangeCheck();
        int staticVariable = EditorGUILayout.IntField("Static Variable", YourScript.variable);
        if (EditorGUI.EndChangeCheck())
        {
            Undo.RecordObject(script, "Changed Static Variable");
            YourScript.variable = staticVariable;
        }
    }
}
```

Этот подход позволит вам отобразить статические переменные в окне инспектора и изменять их значения прямо из редактора Unity. Помните, что использование кастомных редакторов требует определенных знаний и опыта в редакторской среде Unity.
Это сделать нельзя. 
Для обхода - создай прокси поле объекта и через него обновляй состояние статической переменной
Это называется scriptable object. 
https://docs.unity3d.com/Manual/class-ScriptableOb...
Похожие вопросы