Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 调整Unity中游戏对象列表的大小_List_Foreach_Unity3d_Gameobject - Fatal编程技术网

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

List 调整Unity中游戏对象列表的大小,list,foreach,unity3d,gameobject,List,Foreach,Unity3d,Gameobject,我一直在开发一款游戏,允许用户通过点击指定区域来创建目标。我正在尝试实现它,这样,当游戏将存储用户创建的所有目标的信息时,一次最多只能显示9个目标(如果您愿意,可以显示一系列“页面”) 问题是我很难“清理”这个区域。 我试图通过将目标的比例更改为0/0/0来清除目标 if(newPage) { print("Making New Page..."); //"Clear" the screen of Targe

我一直在开发一款游戏,允许用户通过点击指定区域来创建目标。我正在尝试实现它,这样,当游戏将存储用户创建的所有目标的信息时,一次最多只能显示9个目标(如果您愿意,可以显示一系列“页面”)

问题是我很难“清理”这个区域。 我试图通过将目标的比例更改为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++;
            }
一些有用的东西:

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


这两个print语句都是功能性的,但没有一个目标真正消失。我不太清楚它为什么不工作。

与其缩小对象,不如使用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;
obj.GetComponent().enabled=false;