删除游戏对象的最后一个子对象的简单方法
本文关键字:对象 简单 方法 最后一个 删除 游戏 | 更新日期: 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);