删除游戏对象的最后一个子对象的简单方法

本文关键字:对象 简单 方法 最后一个 删除 游戏 | 更新日期: 2023-09-27 18:11:26

我试图编写一个简单的脚本,获得GameObject的子计数,然后销毁最后一个子(我希望它基本上像一个删除键的功能),但我得到的错误:Can't remove RectTransform because Image (Script) depends on it。有人能告诉我如何解决这个问题吗?

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class DeleteSymbol : MonoBehaviour, IPointerClickHandler
{
    public GameObject deleteButton;
    public GameObject encodePanel;
    public GameObject decodePanel;
    #region IPointerClickHandler implementation
    public void OnPointerClick (PointerEventData eventData)
    {
        int numChildren = encodePanel.transform.childCount;             // get child count
        Debug.Log("There are " + numChildren + " children");
        if (numChildren > 0)
        {
            Destroy(encodePanel.transform.GetChild(numChildren - 1));       // destroy last child
        }
    }
    #endregion
}

删除游戏对象的最后一个子对象的简单方法

用这个解决:

摧毁(encodePanel.transform。

答案是你需要销毁游戏对象本身,但你的代码却试图销毁转换。转换(和其他组件)可能具有不允许单独销毁的依赖项。不幸的是,Unity提供了相同的方法来销毁组件和游戏对象本身,如果选择错误,则会出现无用的错误信息。

所以答案是:

Destroy(encodePanel.transform.GetChild(numChildren - 1).gameObject);