Version: 2022.3

描述

Callback invoked when the first scene's objects are loaded into memory but before Awake has been called.

For more info on ordering see RuntimeInitializeOnLoadMethodAttribute.

// Demonstration of the RuntimeInitializeLoadType.BeforeSceneLoad attribute to find inactive objects before Awake has been 
// called for the first scene being loaded. Then from these inactive objects we find which ones will be active after Awake is called later.
using UnityEngine;

class MyClass { [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] private static void FirstSceneLoading() { var components = UnityEngine.Object.FindObjectsByType(typeof(MonoBehaviour), FindObjectsInactive.Include, FindObjectsSortMode.None); var willBeActiveAfterSceneLoad = 0; foreach (var c in components) { if (WillBeActiveAfterSceneLoad(((Component)c).gameObject)) willBeActiveAfterSceneLoad++; } Debug.Log("BeforeSceneLoad. Will be Active after Awake, count: " + willBeActiveAfterSceneLoad); }

static bool WillBeActiveAfterSceneLoad(GameObject gameObject) { Transform current = gameObject.transform; while (current != null) { if (!current.gameObject.activeSelf) return false;

current = current.parent; }

return true; } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961