1、Destroy动态销毁函数
删除一个游戏对象,组件或者资源。动态(游戏运行中)的删除某个物体,其资源和内存并没有立即被释放掉
C#:
public GameObject testDestroy;
voidUpdate(){
if(Input.GetKey(KeyCode.Space)){
Destroy(testDestroy);
}
}
2 、DestroyImmediate 立即销毁
立即删除一个游戏对象,组件或者资源,其资料和内存会立即被释放掉
C#=>static voidDestroyImmediate(Object obj, bool allowDestroyingAssets = false);
obj Object to be destroyed. 要销毁的对象
allowDestroyingAssetsSet to true to allow assets to be destoyed. 设置为true允许资源被销毁
该函数只在写编辑器代码时使用,因为延时的销毁永远不会在编辑模式下调用。在游戏代码推荐使用Object.Destroy代替。销毁总是延迟的(但在同一帧内执行),小心使用该函数,因为它能永久销毁资源。
c#:
public Material test_material;
voidUpdate(){
if(Input.GetKey(KeyCode.Space)){
DestroyImmediate(test_material,true);
}
}
3、DontDestroyOnLoad
当加载一个新场景时,目标对象不会被自动销毁。
当加载一个新的级别时,场景中的所有对象都被销毁,然后在新的水平上的对象被加载。为了水平加载调用dontdestroyonload在保存一个对象。如果对象是一个组件或游戏对象,那么它的整个变换层次结构将不会被破坏。
void Start ( ) {
DontDestroyOnLoad(gameObject);
}
void Update ( ){
if(Input.GetKey(KeyCode.Space)){
//场景转换
SceneManager.LoadScene(1);
}
}