public static GameObject GetScenePath(string name, bool autocreate = true) { string[] parts = name.Split('/'); string path = ""; GameObject current = null; Transform parent = null; foreach (string part in parts) { path = path.IsEmpty() ? part : path + "/" + part; current = GameObject.Find(path); if (current.IsNull()) { if (!autocreate) { return(null); } current = new GameObject(part); current.transform.parent = parent; Locate.SetDirty(); } parent = current.transform; } return(current); }
static Locate() { if (!Application.isPlaying) { //Event.Add("On Application Quit",Locate.SetDirty); Events.Add("On Level Was Loaded", Locate.SetDirty).SetPermanent(); Events.Add("On Hierarchy Changed", Locate.SetDirty).SetPermanent(); Events.Add("On Asset Changed", () => Locate.assets.Clear()).SetPermanent(); } Events.Register("On Components Changed"); if (!Locate.setup) { Locate.SetDirty(); } }
public static void SetState() { Locate.SetDirty(); Hook.LoadSettings(); foreach (var current in Locate.GetSceneObjects()) { if (current.name != "@Main") { continue; } current.hideFlags = Hook.hidden ? HideFlags.HideInHierarchy : HideFlags.None; if (Hook.temporary) { current.hideFlags = Hook.hidden ? HideFlags.HideAndDontSave : HideFlags.DontSave; } } Utility.Destroy(new GameObject("@*#&")); }