GameObject.Find()的替代品;

问题描述 投票:-1回答:1

我试图在益智游戏中加载不同的关卡,但是当我隐藏未使用的关卡时,GameObject.Find();不起作用。有没有一种方法可以用此功能代替可以找到隐藏对象的功能?

unity3d
1个回答
0
投票

嗯,它很脏,但是如果您以前没有对该对象的引用,则可以在Resources类下使用this方法:public static T[] FindObjectsOfTypeAll();

从文档示例:

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

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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.