unity-roject-test/Assets/Scripts/Rokojori/Extensions/SceneExtensions.cs

49 lines
778 B
C#
Raw Normal View History

2026-09-25 20:32:02 +00:00
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace Rokojori
{
public static class SceneExtensions
{
public static T Get<T>( this Scene scene )
{
var roots = scene.GetRootGameObjects();
for ( int i = 0; i < roots.Length; i++ )
{
var t = roots[ i ].GetComponentInChildren<T>();
if ( t != null )
{
return t;
}
}
return default(T);
}
public static T GetInOpenScenes<T>()
{
var numScenes = SceneManager.sceneCount;
for ( int i = 0; i < numScenes; i++ )
{
var scene = SceneManager.GetSceneAt( i );
var obj = scene.Get<T>();
if ( obj != null )
{
return obj;
}
}
return default(T);
}
}
}