zoukankan      html  css  js  c++  java
  • Unity 中的销毁方法

     Unity 中提供了三种关于对象销毁的方法:

    • Destroy 方法

    • DestroyImmediate 方法

    • DontDestroyOnLoad 方法

    Destroy 方法

     static void Destroy(Object obj, float t = 0.0F);

     删除一个游戏物体或组件等

     如果 Object 实际上为组件,则会将其从 gameobject 上删除并销毁

     如果实际上为 gameobject 则将销毁它的全部组件及其所有子物体,可以指定多长时间后销毁

     当然,实际上销毁总是存在一定的延迟的,延迟到当前更新循环后和渲染之前

    销毁组件~
     1 using UnityEngine;
     2 
     3 public class DestroyTest : MonoBehaviour
     4 {
     5     void Start()
     6     {
     7         var collider = gameObject.GetComponent<Collider>();
     8         if (collider)
     9         {
    10             Destroy(collider);
    11             print("Collider组件已移除!");
    12         }
    13     }
    14 }

     销毁 Cube 上的 Collider 组件

    销毁该对象(没有子物体的情况)~

     1 using UnityEngine;
     2 
     3 public class DestroyTest : MonoBehaviour
     4 {
     5     bool flag = false;
     6 
     7     void Update()
     8     {
     9         var cube = GameObject.Find("Cube");
    10         if (!flag &&cube)
    11         {
    12             flag = true;
    13             Destroy(cube);
    14             print("Cube对象已移除!");
    15         }
    16     }
    17 }

     找到并销毁 Cube 物体对象

    销毁该对象及所有子物体~

     1 using UnityEngine;
     2 
     3 public class DestroyTest : MonoBehaviour
     4 {
     5     void Start()
     6     {
     7         var cube = GameObject.Find("Cube");
     8         if (cube)
     9         {
    10             Destroy(cube);
    11             print("Cube对象已移除!");
    12         }
    13     }
    14 }

     找到并销毁 Cube 对象及所有子物体

    DestroyImmediate 方法

     static void DestroyImmediate(Object obj, bool allowDestroyingAssets = false);

     尽量使用 Destroy,该函数在写编辑器代码时使用,延时的销毁永远不会在编辑模式下调用

     要注意的是,该函数会将资源永久销毁,绝不要遍历数组然后依次销毁遍历的元素

     其中,allowDestroyingAssets 如果设置为 True 的话(默认为 flase),则资源就允许被销毁

    DontDestroyOnLoad 方法

     static void DontDestroyOnLoad(Object target);

     作用是在加载新场景的时候让指定的目标物体不被自动销毁

     当加载一个新场景时,所有场景中的所有的物体都会被销毁,然后新场景中的物体被加载进来

     为了保持在加载新场景时某物体不被销毁,便使用 DontDestroyOnLoad 保护目标物体

     如果物体是一个组件或游戏对象的话,则所有 的Transform 层次都不会被销毁,全部保留下来

    *** |  以上内容仅为学习参考、学习笔记使用  | ***

  • 相关阅读:
    【ccf线上赛普及组 2020】
    【小总结】2020.3.6
    DP优化
    noip2012day2
    noip2012day1
    3.28真题
    数据结构总结
    noi online 普及组
    小总结
    20200229模拟赛
  • 原文地址:https://www.cnblogs.com/ChenZiRong1999/p/13277830.html
Copyright © 2011-2022 走看看