/// <summary> /// Register SmartRef for automatic event unbinding when gameobject is destroyed. /// Note: adds a MonoBehaviour to the gameobject when first called. /// </summary> public static void UnbindOnDestroy(SmartRefBase r, GameObject go, bool enableUnityEventNow = true) { SmartRefUnbinder helper = null; if (!_all.TryGetValue(go, out helper)) { helper = go.AddComponent <SmartRefUnbinder>(); _all.Add(go, helper); } helper._refs.Add(r); if (enableUnityEventNow) { r.unityEventOnReceive = true; } }
/// <summary> /// Register SmartRef for automatic event unbinding when gameobject is destroyed. /// Note: adds a MonoBehaviour to the gameobject when first called. /// </summary> public static void UnbindOnDestroy(SmartRefBase r, GameObject go, bool enableUnityEventNow = true) { if (enableUnityEventNow) { r.unityEventOnReceive = true; } #if UNITY_EDITOR // OnEditorChangePlayMode will automatically go through registered SmartRefs on Start if (!_isPlaying) { return; } #endif SmartRefUnbinder helper = null; if (!_all.TryGetValue(go, out helper)) { helper = go.AddComponent <SmartRefUnbinder>(); _all.Add(go, helper); } helper._refs.Add(r); }