2016-02-01 1 views
1

Заголовок уже говорит об этом ...Unity Editor Scripting: Как программно модифицировать CustomEditor SerializedProperty?

У меня есть собственный скрипт редактора для класса C# в Unity с тем, что пользователь может установить несколько параметров через интерфейс. Но есть один случай, когда некоторые сериализованные переменные в классе, принадлежащем классу CustomEditor, программно изменяются, и изменение не обновляется в инспекторе.

Как сообщить классу CustomEditor, что он должен обновлять измененную переменную?

Пример кода:

public class Foo 
{ 
    [SerializeField] private float value; 

    public void ChangeValue() 
    { 
     value = 1.0f; 
    } 
} 


[CustomEditor(typeof (Foo))] 
internal class FooEditor : Editor 
{ 
    private Foo self; 
    private SerializedProperty value; 

    internal void OnEnable() 
    { 
     self = (target as Foo); 
     value = serializedObject.FindProperty("value"); 
    } 

    public override void OnInspectorGUI() 
    { 
     serializedObject.Update(); 

    } 
} 

В Foo Я хочу изменить value VIS сценарий, но обновление значение не отражается в редакторе интерфейса при установке с помощью сценария (только тогда, когда пользователь изменяет его с помощью пользовательского интерфейса). Как я могу изменить это изменение, когда оно обновляется через скрипт?

ответ

0

Используйте это на переопределение:

public override void OnInspectorGUI() 
{ 
    if (GUI.changed) 
    { 
     value = mynewvalue; 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^