美文网首页
2020-02-26【Unity】UnityEngine.Hid

2020-02-26【Unity】UnityEngine.Hid

作者: 持刀的要迟到了 | 来源:发表于2020-02-26 15:48 被阅读0次
    image.png

    说明

    https://forum.unity.com/threads/understanding-of-hideanddontsave-hide-flag.469947/

    官方说明
    根据官方说明:对于设置了这个标识的物体,在Inspector面板中不可编辑(可以思考那个default 的 material面板)。这种物体需要在结束的时候,手动销毁(否则会造成内存泄漏(在场景取消加载的时候,可能这玩意也不见了))

    使用

    Understanding of HideAndDontSave hide flag.
    Unity Serialization





    image.png
    image.png

    小结

    1.Unity在进入播放模式&退出播放模式,或脚本重新编译时,经历了几个步骤:

    • 1:将所有可序列化数据拉出托管范围,在UnityC++端创建数据的内部表示
    • 2:销毁所有与Unity相关的内存/信息,重新加载程序集
    • 3:将C++中保存的数据重新序列化到Unity本地

    2.经过如上步骤,普通的类经过序列化及反序列化,它们这些操作会独立的进行;这意味着一个类可能会被反序列化多次,而假如对象间存在引用关系,它们之间的引用会丢失。

    3.此时需要ScriptableObject登场了。顾名思义,它是个Object,就是实际存在的对象,并且可以编程。(若在文件区中创建一个这个资源文件,它在运行的时候如果被场景引用,它就从一个死的资源文件自动变成一个活得对象。)在进入播放模式&退出播放模式时其运行流程如下:

    • 1:ScriptableObject构造函数被调用
    • 2:数据从Unity的C++端序列化到ScriptableObject中
    • 3:ScriptableObject的OnEnable方法调用

    4.HideFlag用途:作为一个对象如果没有被引用就会被当作垃圾回收。设置这个标志会将其设为Scene的类似子节点,但不会在Hierarchy面板中显示。这样这个对象就不会因为程序集重载而消失(每次播放停止都会造成重新加载及序列化一遍)。这个对象销毁方式:手动调用Destroy。

    相关文章

      网友评论

          本文标题:2020-02-26【Unity】UnityEngine.Hid

          本文链接:https://www.haomeiwen.com/subject/pbkvchtx.html