Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
Unity3d GameObject.Find()的替代方案;_Unity3d - Fatal编程技术网

Unity3d GameObject.Find()的替代方案;

Unity3d GameObject.Find()的替代方案;,unity3d,Unity3d,我试图在益智游戏中加载不同的关卡,但当我隐藏未使用的关卡时,GameObject.Find()不起作用。有没有办法将此函数替换为可以查找隐藏对象的函数?好吧,它相当脏,但如果您以前没有对该对象的引用,可以使用Resources类下的方法:public static t[]FindObjectsOfTypeAll() 从文档示例中: 与Object.FindObjectsOfType相反,此函数还将列出 禁用对象 使用System.Collections.Generic; 使用UnityEngin

我试图在益智游戏中加载不同的关卡,但当我隐藏未使用的关卡时,
GameObject.Find()不起作用。有没有办法将此函数替换为可以查找隐藏对象的函数?

好吧,它相当脏,但如果您以前没有对该对象的引用,可以使用Resources类下的方法:
public static t[]FindObjectsOfTypeAll()

从文档示例中:

与Object.FindObjectsOfType相反,此函数还将列出 禁用对象

使用System.Collections.Generic;
使用UnityEngine;
使用UnityEditor;
公共类示例脚本:MonoBehavior
{
列表GetAllObjectsOnlyinSene()
{
List objectsInScene=new List();
foreach(GameObject进入参考资料中。FindObjectsOfTypeAll(typeof(GameObject))作为GameObject[]))
{
如果(!EditorUtility.ispersist(go.transform.root.gameObject)&&&!(go.hideFlags==hideFlags.NotEditable | | go.hideFlags==hideFlags.hideandonsave))
objectsInScene.Add(go);
}
返回现场;
}
}

为什么不做一些事情,制作一个对象列表或对象列表字典,使您的对象都处于活动状态?您会发现所有的东西都将它们划分为不同的级别,稍后只需使用该引用即可
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class ExampleScript : MonoBehaviour
{
    List<GameObject> GetAllObjectsOnlyInScene()
    {
        List<GameObject> objectsInScene = new List<GameObject>();

        foreach (GameObject go in Resources.FindObjectsOfTypeAll(typeof(GameObject)) as GameObject[])
        {
            if (!EditorUtility.IsPersistent(go.transform.root.gameObject) && !(go.hideFlags == HideFlags.NotEditable || go.hideFlags == HideFlags.HideAndDontSave))
                objectsInScene.Add(go);
        }

        return objectsInScene;
    }
}