【问题标题】:Simple way to Delete the Last Child of a GameObject删除游戏对象的最后一个孩子的简单方法
【发布时间】:2015-09-04 16:38:21
【问题描述】:

我正在尝试编写一个简单的脚本来获取 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
}

【问题讨论】:

    标签: c# unity3d parent-child destroy


    【解决方案1】:

    用这个解决了:

    销毁(encodePanel.transform.GetChild(numChildren - 1).gameObject);

    【讨论】:

      【解决方案2】:

      答案是您需要销毁游戏对象本身,但您的代码尝试尝试销毁转换。转换(和其他组件)可能具有不允许单独销毁它们的依赖关系。不幸的是,Unity 提供了相同的方法来销毁组件和游戏对象本身,如果您选择错误,则会显示无用的错误消息。

      所以答案:

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

      是正确的,这就是为什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多