这对我来说是个奇怪的情况...当禁用 slide.gameObject.SetActive(false) 时效果很好,但是当我需要启用它时它不起作用
奇怪的是调试正确显示了游戏对象名称
你能帮帮我吗?
public void ShowSlide(Transform slide, bool show, float time)
{
if (show)
{
// Show
Debug.Log(slide.gameObject.name);
slide.gameObject.SetActive(true);
// slide.Find("Panel").DOLocalRotate(new Vector3(0, 0, 0), time);
}
else
{
// Hide
slide.Find("Panel").DOLocalRotate(new Vector3(90.0F, 0, 0), time).OnComplete(()=>slide.gameObject.SetActive(false));
}
}
你把剧本附在什么地方?。因为您无法从作为同一对象的组件附加的脚本中启用对象。如果您认为首先禁用了对象,那么脚本和对象都被禁用,这是有道理的。这意味着您可以禁用它但不能再次启用它。为此,您需要将此脚本附加到另一个对象才能工作,就像一个空的父对象一样。
可能的原因是您在 Awake() 方法中禁用了 gameObject - 因此当您稍后尝试激活它时,将调用 Awake(),并且 gameObject 再次被停用。文档说每次当不活动的 GO 再次激活时都会调用 Awake() :“Awake 被调用当包含脚本的活动游戏对象在场景加载时被初始化时,或者当设置先前不活动的游戏对象时积极“