Unity gameObject.SetActive 未启用其对象

问题描述 投票:0回答:2

这对我来说是个奇怪的情况...当禁用 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));
    }
}
c# unity3d
2个回答
0
投票

你把剧本附在什么地方?。因为您无法从作为同一对象的组件附加的脚本中启用对象。如果您认为首先禁用了对象,那么脚本和对象都被禁用,这是有道理的。这意味着您可以禁用它但不能再次启用它。为此,您需要将此脚本附加到另一个对象才能工作,就像一个空的父对象一样。


0
投票

可能的原因是您在 Awake() 方法中禁用了 gameObject - 因此当您稍后尝试激活它时,将调用 Awake(),并且 gameObject 再次被停用。文档说每次当不活动的 GO 再次激活时都会调用 Awake() :Awake 被调用当包含脚本的活动游戏对象在场景加载时被初始化时,或者当设置先前不活动的游戏对象时积极

© www.soinside.com 2019 - 2024. All rights reserved.