unity/Assets/Scripts/Utils/SceneUtils.cs (33 lines of code) (raw):

using System.Collections; using System.Collections.Generic; using UnityEngine; public class SceneUtils { // Create a named game object and attach a component to it. public static T InstantiateWithController<T>(string name) where T : Component { GameObject game_object = new GameObject(); return game_object.AddComponent<T>() as T; } // Find a named child Component of a given type in a GameObject. public static T Find<T>(GameObject where, string name, T default_value) where T : Component { return Find<T>(where.transform, name, default_value); } // Find a named child Component of a given type in a Component. public static T Find<T>(Component where, string name, T default_value) where T : Component { Transform transform = where.transform; Transform child = transform.Find(name); if (child != null && child.GetComponent<T>() != null) { return child.GetComponent<T>(); } else { return default_value; } } // Find a named child GameObject in a GameObject. public static GameObject Find(GameObject where, string name, GameObject default_value) { return Find(where.transform, name, default_value); } // Find a named child GameObject in a Component. public static GameObject Find(Component where, string name, GameObject default_value) { Transform transform = where.transform; Transform child = transform.Find(name); if (child != null) { return child.gameObject; } else { return default_value; } } }