首页 > Personal > Unity 自定义类序列话遇到的问题
2015
12-31

Unity 自定义类序列话遇到的问题

今天在做一个自定义的ScriptableObject类的自定义Editor编辑器的时候,发下了一个问题,类里面有一下需要序列化的自定义class,在编辑器里面会默认创建出事例来,而且会实例化到Asset文件中去,不管之前是不是赋值为null,
看来像是unity内部实例化时会把标记[Serializable]的自定义类默认创建出来然后实例化,想要像unity内部类比如GameObject一样实例化引用,是不行的,所有的值都实例化了。为了解决这个问题,只能在自定义class中加了个enable标志位来标识这个类是不是需要使用的,如果是false类似作为null处理。想了一下如果想要实例化引用,只能从UnityEngine.Object上继承,然后自定义class自己也要序列化保存起来,如果是null的话在Asset中会是 {fileID: 0}。另外继承自UnityEngine.Object的物体,好像即便new出事例以后和null比较也可能是true,应该是内部做过处理。另外在Editor中实例化的物体如果继承了ISerializationCallbackReceiver接口,发现OnBeforeSerialize会一直被调用,也不知道是什么原因。

最后编辑:
作者:wy182000
这个作者貌似有点懒,什么都没有留下。