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;
}
}