这个HideFlags是一个enum 。而且其中的作用和DontDestroyOnLoad函数的作用是一致的。HideFlags的枚举成员有 : DontSava , HideAndDontSave , HideInHierarchy , HideInInspector , None(默认),NotEditable。
我的Unity版本是:5.4.0f3。在这个版本测试 :
一 ,DontSave和HideAndDontSave的效果是一样的。HideAndDontSave的功能:如果GO被HideAndDontSave表示go.hideFlags = HideFlags.DontSave(在Transform中则无效)。在退出程序时,需要手动销毁,不然会产生内存泄漏:DestroyImmediate函数,在
面板中会隐藏 ,但是使用DontSave也会隐藏。不管了。
具体:
public void OnApplicationQuit()
{
@go = GameObject.Find("Cube");
if (@go != null)
{
Debug.Log("必须要强制消除上个Scene的Cube!");
DestroyImmediate(@go);
}
}
它们和DontDestroyOnLoad的效果是一样的。会重复制造@go(子对象不会)。这点一定要注意,虽然说在Hierarchy看不见 , 但在Scene面板中拖动一下,就会发现在复制。
二,HideInHierarchy 在Hierarchy面板中隐藏(子对象有效)。只有在Awake方法中使用才有效。
三,HideInInspector在Inspector面板中隐藏(子对象无效)。若在GO中使用,则GO中所有的组件将隐藏。若对某个组件使用,则只有其组件隐藏。