ObjectReferenceValue 未在 CustomPropertyDrawer 中更新

ObjectReferenceValue not updating in CustomPropertyDrawer

提问人:FlamesWillBurst 提问时间:5/23/2023 更新时间:5/23/2023 访问量:64

问:

我正在尝试创建一个自定义属性抽屉,该抽屉允许我打开和编辑可编写脚本对象的属性,但是我希望这样做,以便如果我以这种方式创建新的可编写脚本的对象(仅在内存中而不是在磁盘上),那么它应该创建一个新的实例。

[CustomPropertyDrawer(typeof(CharacterData))]
public class CharacterDataPropertyDrawer : PropertyDrawer
{
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        EditorGUI.BeginProperty(position, label, property);
        if (GUI.Button(position, "Edit Properties"))
        {
            if (property.objectReferenceValue == null)
            {
                property.objectReferenceValue = ScriptableObject.CreateInstance<CharacterData>();
                if (property.objectReferenceValue == null)
                    Debug.Log("this is still null");
            }
            EditorUtility.OpenPropertyEditor(property.objectReferenceValue);
            //EditorUtility.OpenPropertyEditor(ScriptableObject.CreateInstance<CharacterData>());//This works but does not get saved obviously
        }
        EditorGUI.EndProperty();
    }
}

我试图我能够为这个可折叠的对象创建一个新的 instace 并对其进行编辑,但我总是得到这仍然是 null 的 debe。

我尝试使用apply serializedObject.ApplyModifiedProperties();但这也没有成功

OOP 按引用传递 unity-editor scriptable-object

评论


答: 暂无答案