HideFlags
HideFlags枚举
属于Object类的属性;对应一个枚举类;
用来控制对象的销毁,保存和是否在inspector界面中可见;
public enum HideFlags
{
//默认
None = 0,
//不在层级界面显示
HideInHierarchy = 1,
//inspector界面不可见
HideInInspector = 2,
//编辑的时候不会被保存
DontSaveInEditor = 4,
//inspector不可以编辑
NotEditable = 8,
//构建时不会被保存
DontSaveInBuild = 16,
//不能通过Resources.UnloadUnusedAssets被卸载
DontUnloadUnusedAsset = 32,
//几个拼接
DontSave = DontUnloadUnusedAsset | DontSaveInBuild | DontSaveInEditor,
//几个拼接
HideAndDontSave = DontSave | NotEditable | HideInHierarchy,
}
测试代码:
public class HideFlagTest : MonoBehaviour
{
private void Start()
{
gameObject.hideFlags = HideFlags.HideInInspector;
transform.hideFlags = HideFlags.NotEditable;
GetComponent<BoxCollider>().hideFlags = HideFlags.DontSaveInEditor;
}
}
DontSaveInEditor坑
这个枚举个官方说是在编辑模式的时候不会被保存,但是我测试会没有效果依旧会记录;
另外这里有个很大的坑,使用这个之后物体在场景销毁时候不会跟着销毁,需要使用DestroyImmediate手动销毁;
DontSave解释
保留对象到新场景;
功能说明:此属性的功能是用来设置是否将Object对象保留到新的场景(Scene)中,如果使用HideFlags.DontSave,则Object对象将在新场景中被保留下来,对其使用说明如下:
(1)如果GameObject对象被HideFlags.DontSave标识,则在新scene中GameObject的所有组件将被保留下来,但其子类GameObject对象不会被保留到新scene中;
(2)不可以对GameObject对象的某个组件如Transform进行HideFlags.DontSave标识,否则无效;
(3)即使程序已经退出,被HideFlags.DontSave标识的对象会一直存在于程序中,造成内存泄漏,对HideFlags.DontSave标识的对象在不需要或程序退出时需要使用DestroyImmediate手动销毁;