博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unity, SerializedObject.FindProperty不要写在Editor的OnEnable里,要写在OnInspectorGUI里
阅读量:7088 次
发布时间:2019-06-28

本文共 1795 字,大约阅读时间需要 5 分钟。

如果像下面这样写:

using UnityEngine;

using System.Collections;
using UnityEditor;
using System.Collections.Generic;
using UnityEngine.Assertions.Must;
[CustomEditor(typeof(xxxControl))]
public class xxxControlEditor : Editor
{
    SerializedProperty m_a;
    void OnEnable(){

    m_a=serializedObject.FindProperty ("m_a");

    }
    public override void OnInspectorGUI()
    {

     /DrawDefaultInspector();

        serializedObject.Update ();

        EditorGUILayout.PropertyField(m_a,true);
        serializedObject.ApplyModifiedProperties ();
    }

}

则在其它Editor或EditorWindow脚本的中调用

    Editor _editor=Editor.CreateEditor(xxxObj.GetComponent<xxxControl>());

就会报如下错误:

NullReferenceException: (null)

UnityEditor.SerializedObject..ctor (UnityEngine.Object[] objs) (at C:/buildslave/unity/build/artifacts/generated/common/editor/SerializedPropertyBindings.gen.cs:72)
UnityEditor.Editor.GetSerializedObjectInternal () (at C:/buildslave/unity/build/artifacts/generated/common/editor/EditorBindings.gen.cs:151)
UnityEditor.Editor.get_serializedObject () (at C:/buildslave/unity/build/artifacts/generated/common/editor/EditorBindings.gen.cs:144)
xxxControlEditor.OnEnable () (at Assets/??/Editor/xxxControlEditor.cs:??)

如果将SerializedObject.FindProperty从OnEnable中改到OnInspectorGUI中,即:

using UnityEngine;

using System.Collections;
using UnityEditor;
using System.Collections.Generic;
using UnityEngine.Assertions.Must;
[CustomEditor(typeof(xxxControl))]
public class xxxControlEditor : Editor
{
    SerializedProperty m_a;
    void OnEnable(){
    }
    public override void OnInspectorGUI()
    {

     /DrawDefaultInspector();

    m_a=serializedObject.FindProperty ("m_a");//serializedObject.FindProperty should be called in OnInspectorGUI() instead of OnEnable()

        serializedObject.Update ();

        EditorGUILayout.PropertyField(m_a,true);
        serializedObject.ApplyModifiedProperties ();
    }

}

则不会出现上述错误。

转载地址:http://pyfql.baihongyu.com/

你可能感兴趣的文章
闲言碎语
查看>>
前端谈谈实现五子棋
查看>>
forEach map
查看>>
一步步教你Android反编译
查看>>
网络协议与分层体系结构
查看>>
苹果爸爸Bug之NSTextAttachment
查看>>
GPU编程(二): GPU架构了解一下!
查看>>
HBase核心知识点总结
查看>>
Django RESTFramework——更新数据 (5)
查看>>
iOS目录解析 彻底搞懂iOS App的目录结构
查看>>
深入浅出JDK动态代理(二)
查看>>
前端实现获取浏览器flash版本号
查看>>
Hybrid小技巧:通过js调用原生对话框(Android)
查看>>
日志服务Python消费组实战(二):实时分发数据
查看>>
从几道面试题看对象的初始化
查看>>
盛极而衰,互联网体育是伪风口还是真趋势?
查看>>
14-《ARKit by Tutorials》读书笔记1:开始入门
查看>>
[MetalKit]33-Ambient-Occlusion-in-Metal环境光遮蔽
查看>>
图解JavaScript算法排序
查看>>
Flask环境搭建(自己学习用)
查看>>