当父GameObject
被触发时,我会将孩子SetActive
的{{1}}设为真。
与此图片一样,GameObject
是父BallIndigo1
而GameoOject
是x
中的GameObject
。
我写了这样的代码:
SetActive(false)
但结果说:
我不知道为什么会这样,以及如何解决它。
答案 0 :(得分:0)
你得到这个是因为传递给OnTriggerEnter2D
函数col.transform
的GameObject没有孩子。您可以在致电col.transform.childCount > 0
之前检查是否col.transform.GetChild(0)
来解决此问题。
void OnTriggerEnter2D(Collider2D col)
{
if (col.gameObject.activeSelf == true)
{
if (col.transform.childCount > 0 && col.transform.GetChild(0) != null)
{
col.transform.GetChild(0).gameObject.SetActive(true);
}
else
{
Debug.Log("No child");
}
}
}
如果你100%确定这个Object有一个孩子,那么还有一个正在检测到没有孩子的GameObject。在调用col.transform.GetChild(0)
之前,您必须通过标记或图层过滤掉此GameObject。创建一个名为" Ball"的标签。将要检测的对象设置为此标记。确保这个" Ball"对象有一个孩子。下面的代码应检查该标记,并应该克服该错误。
void OnTriggerEnter2D(Collider2D col)
{
if (col.CompareTag("Ball"))
{
if (col.gameObject.activeSelf == true)
{
if (col.transform.GetChild(0) != null)
{
col.transform.GetChild(0).gameObject.SetActive(true);
}
else
{
Debug.Log("No child");
}
}
}
}