Unity 编辑器脚本:如何以编程方式更新自定义编辑器序列化属性
本文关键字:编辑器 更新 方式 自定义 序列化 属性 编程 脚本 Unity | 更新日期: 2023-09-27 18:32:40
标题已经说了...
我有一个用于 Unity 中 C# 类的自定义编辑器脚本,用户可以通过 UI 设置多个参数。但有一种情况是,属于 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 脚本,但是通过脚本设置时,值更新不会反映在编辑器 UI 中(仅当用户通过 UI 更改它时)。如何使更改在通过脚本更新时也反映在内?
在覆盖中使用它:
public override void OnInspectorGUI ()
{
if (GUI.changed)
{
value = mynewvalue;
}
}