我正在尝试编写一个简单的脚本来获取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
}
解决了这个问题:
Destroy(encodePanel.transform.GetChild(numChildren - 1).gameObject);
答案是你需要销毁游戏对象本身,但你的代码试图试图破坏转换。转换(和其他组件)可能具有不允许单独销毁它们的依赖关系。不幸的是,Unity提供了相同的方法来销毁组件和游戏对象本身,如果选错了,则会提供无用的错误消息。
所以答案是:
Destroy(encodePanel.transform.GetChild(numChildren - 1).gameObject);
是正确的,这就是原因。