首页 > 解决方案 > Unity GameObject.SetActive 不起作用

问题描述

我为我的游戏编写了一个脚本,通过 GameObject 控制游戏中的插槽。但该脚本无法激活或停用。一切都设置好了,我也尝试了另一个脚本,但它有效。“主”脚本没有。

这是代码:

    // Update is called once per frame
    void Update()
    {
        UpdateBools();
        Crosshair();
        Slots();
    }
    void UpdateBools()
    {
        isPaused = PauseMenu.GamePaused;

    }
    public void Crosshair()
    {
        //Not important
    }
    public void Slots()
    {
        if (database.Slot1 != nothing)
        {
            Slot1.SetActive(true);
            Slot1Active = true;
        }
        else { Slot1.SetActive(false); }
        if (database.Slot2 != nothing)
        {
            Slot2.SetActive(true);
            Slot2Active = true;
        }
        else { Slot2.SetActive(false); }
        if (database.Slot3 != nothing)
        {
            Slot3.SetActive(true);
            Slot3Active = true;
        }
        else { Slot3.SetActive(false); }
        if (database.Slot4 != nothing)
        {
            Slot4.SetActive(true);
            Slot4Active = true;
        }
        else {
            Slot1.SetActive(false);
            Slot2.SetActive(false);
            Slot3.SetActive(false);
            Slot4.SetActive(false);
            Slot1Active = false;
            Slot2Active = false;
            Slot3Active = false;
            Slot4Active = false;
        }
    }
    public void SlotPic()
    {
        //I erased this because stack overflow says: mostly code, add more details but I have every detail
    }

它的工作原理是这样的:如果占用了一个库存槽,它应该被激活。为了测试,我添加了 ActivateEverything()。此外,插槽在激活时应该会改变其图片,但正如我所说,激活对象不起作用。对这项任务很重要的是 void Slots()。

标签: c#unity3d

解决方案


尝试在没有 if else 容器的情况下设置活动。检查您的游戏模式是否未暂停。


推荐阅读