栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

unity 销毁物体Destroy、DestroyImmediate

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unity 销毁物体Destroy、DestroyImmediate

参考:Unity中使用Destroy删除游戏物体的大坑_zxy13826134783的博客-CSDN博客 Destroy(异步销毁):使用Destroy删除游戏物体,游戏物体并不会立即被删除,而是异步执行的,不会影响主线程的执行,说白了,就是它另外开一条道去执行了;该函数给物体加了一个标识符,物体还在内存中,在下一帧时才销毁并从内存中移除。 DestroyImmediate:立即销毁物体并移除内存。使用DestroyImmediate删除游戏物体,游戏物体立即被删除,代码顺序执行,影响主线程的执行 1、首先说一下需要做的功能:
(1)想要ImageTargetParent作为父物体,然后在它下边实例化一些随机的点,输出ImageTargetParent下第0个子物体的位置;
(2)点击“重置”按钮,删除ImageTargetParent下所有子物体,然后再随机实例化一些点,同样输出ImageTargetParent下第0个子物体的位置;  实现方法如下:使用Destroy进行删除,可是发现并不能得到想要的结果,点击“重置”按钮,输出的结果一样。原因就是点击“重置”按钮后此时没有销毁原有的子物体,新增加的子物体索引在原有基础上继续增加,但是在Unity面板是看不到的,因为unity在下一帧时删除了原有的子物体。
using UnityEngine;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
    Transform targetPrefab;
    public Transform targetParent;
    public Button resetButton;
    void Start()
    {
        targetPrefab = Resources.Load("prewfabs/ImageTarget1");
        resetButton.onClick.AddListener(ResetTargetObj);
        CreateTargetObjPosition(); 
    }
    void ResetTargetObj()
    {
        for (int i = 0; i < targetParent.childCount; i++)
        {
            Destroy(targetParent.GetChild(i).gameObject);
        }
        CreateTargetObjPosition();
    }
    void CreateTargetObjPosition()
    {
        int  targetNum = UnityEngine.Random.Range(3, 6);
        for (int i = 0; i < targetNum; i++)
        {
            Transform _tra = Instantiate(targetPrefab, targetParent);
            _tra.localPosition = Vector3.one * UnityEngine.Random.Range(3, 6);
            _tra.gameObject.SetActive(true);
        }
        Debug.Log("**1**:" + targetParent.transform.GetChild(0).localPosition);
    }
}

修改方法如下:将Destroy替换为DestroyImmediate。
注意:此时程序还是不能正常执行,因为一旦DestroyImmediate执行,那么targetParent.childCount的数量就会立刻减1 ,循环不成立;最简单的办法,将循环范围+i,查找子物体的索引变成“ 0 ”;

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/897984.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号