Переменная всегда true в UnitEditor

Программирование на Юнити.

Переменная всегда true в UnitEditor

Сообщение MrDmitry 26 июн 2023, 11:53

Делаю кастомный инспектор для спаунера.
Синтаксис:
Используется csharp
public class Spawn : MonoBehaviour
{
public bool SizeOnTranches;
....


Синтаксис:
Используется csharp
[CustomEditor(typeof(Spawn))]
public class SpawnEditor : Editor
{
    Spawn sw;

    public void OnEnable()
    {
        sw = target as Spawn;
    }

    public override void OnInspectorGUI()
    {
       sw.SizeOnTranches = EditorGUILayout.Toggle("Спаун", sw.SizeOnTranches);
        ....


Теперь в какое положение я бы не переключал SizeOnTranches, в playmode переменная всегда true
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: Переменная всегда true в UnitEditor

Сообщение 1max1 26 июн 2023, 14:12

Почитай примеры как писать кастомные редакторы https://docs.unity3d.com/Manual/editor- ... itors.html
Синтаксис:
Используется csharp
        serializedObject.Update();
        // тут меняем переменную через SerializedProperty
        serializedObject.ApplyModifiedProperties();
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Переменная всегда true в UnitEditor

Сообщение MrDmitry 27 июн 2023, 07:00

Эти строчки у меня были. Вот полный код

Синтаксис:
Используется csharp
using UnityEditor;
using static Spawn;

[CustomEditor(typeof(Spawn))]
public class SpawnEditor : Editor
{
    Spawn sw;

    public void OnEnable()
    {
        sw = target as Spawn;
    }

    public override void OnInspectorGUI()
    {
        sw.DropDown = (TypeSpawn)EditorGUILayout.EnumPopup("Тип спуна", sw.DropDown);
        sw.SizeOnTranches = EditorGUILayout.Toggle("Спаун по размеру", sw.SizeOnTranches);
        if(!sw.SizeOnTranches)
        {
            if (sw.DropDown == TypeSpawn.Квадрат)
            {
                sw.spawnRadiusX = EditorGUILayout.FloatField("Радиус по оси X: ", sw.spawnRadiusX);
                sw.spawnRadiusY = EditorGUILayout.FloatField("Радиус по оси Y: ", sw.spawnRadiusY);
            }
            else
                sw.spawnRadiusX = EditorGUILayout.FloatField("Радиус окружности: ", sw.spawnRadiusX);
        }
        EditorGUILayout.LabelField("Префаб ботов");
        EditorGUILayout.PropertyField(serializedObject.FindProperty("BotsPrefab"));
        EditorGUILayout.PropertyField(serializedObject.FindProperty("Wave"));
        EditorGUILayout.PropertyField(serializedObject.FindProperty("Stop"));
        serializedObject.Update();
        serializedObject.ApplyModifiedProperties();
    }
}
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: Переменная всегда true в UnitEditor

Сообщение 1max1 27 июн 2023, 18:05

Это должно работать +-, может ты где-то в апдейте насильно каждый кадр устанавливаешь значение.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13