public GameObject InstantiateObject(string path, KVResourceLoader loader, Transform parent) { if (loader.CheckValid()) { var obj = loader.asset as GameObject; if (obj) { GameObject gameObject = Instantiate(obj, parent); KVResourceTracker kvResourceTracker = gameObject.AddComponent <KVResourceTracker>(); kvResourceTracker.key = path; kvResourceTracker.OnDestroyed += OnDestroyTracker; List <Object> objList; if (!_instantiateObjs.TryGetValue(path, out objList)) { objList = new List <Object>(); _instantiateObjs.Add(path, objList); } objList.Add(gameObject.gameObject); return(gameObject); } } Debug.LogError($"loader({loader.assetPath}) can not Instantiate"); return(null); }
void OnDestroyTracker(KVResourceTracker tracker) { List <Object> list; if (_instantiateObjs.TryGetValue(tracker.key, out list)) { list.Remove(tracker.gameObject); } else { Debug.LogError($"OnDestroyTracker({tracker.key}) not found objects"); } }