在 Unity 中调整游戏对象列表的大小

Resizing a List of GameObjects in Unity

我一直在开发一款允许用户通过单击指定区域来创建目标的游戏。我正在尝试实现它,这样虽然游戏会存储用户创建的所有目标的信息,但一次最多只能显示 9 个目标(如果你愿意,可以显示一系列 'pages')。

问题是我在 'clearing' 这个地区遇到了问题。 我正在尝试通过将比例更改为 0/0/0

来清除目标
if(newPage)
            {
                print("Making New Page...");
                //"Clear" the screen of Targets
                foreach(GameObject obj in targets)
                {
                    obj.gameObject.transform.localScale = new Vector3(0.0f , 0.0f, 0.0f);
                    //print(obj);
                }

                newPage = false;
                totalPages++;
                currentPage++;
            }

一些有用的东西:

targets 是列表的名称
newPage 是一个布尔值,用于指示何时 运行 此代码
totalPages 和 currentPages 用于稍后重新激活目标

两个打印语句都起作用,但 none 的目标实际上消失了。我不太确定为什么它不起作用。

与其缩小对象,不如使用 GameOjbect.SetActive() 函数将其停用更容易:

if(newPage)
    {
        print("Making New Page...");
        //"Clear" the screen of Targets
        foreach(GameObject obj in targets)
        {
            obj.SetActive(false);
            //print(obj);
        }

        newPage = false;
        totalPages++;
        currentPage++;
    }

如果您希望对象在场景中处于活动状态,但只是不可见,那么另一种选择是禁用 MeshRenderer 组件:

obj.GetComponent<MeshRenderer>().enabled = false;