using System.Collections.Generic; using Unity.Loader; using UnityEngine; namespace ZC { [Procedure(ProcedureType.GameSceneLogicProcedure)] class GameSceneLogicProcedure : ProcedureBase { private Dictionary> dic = new Dictionary>(); TestZhongLi testZhongLi; public override void Init() { base.Init(); EventManager.Instance.Subscribe(LoadModelEventArgs.EventId, this.LoadModelEvent); EventManager.Instance.Subscribe(DeleteModelEventArgs.EventId, this.DeleteModelEvent); testZhongLi = new TestZhongLi(); // Global.ObjectManager.Add(testZhongLi); } private void DeleteModelEvent(object sender, GameEventArgs e) { var args = e as DeleteModelEventArgs; if (this.dic.TryGetValue(args.modelName, out var list)) { GameObject.DestroyImmediate(list[0]); list.RemoveAt(0); } } private void LoadModelEvent(object sender, GameEventArgs e) { var args = e as LoadModelEventArgs; var gameObject = ResourcesLocalComponent.Instance.LoadGameObjectSync(args.modelName); if (this.dic.TryGetValue(args.modelName, out var list)) { list.Add(gameObject); } else { this.dic[args.modelName] = new List() { gameObject }; } } public override void Dispose() { base.Dispose(); EventManager.Instance.Unsubscribe(LoadModelEventArgs.EventId, this.LoadModelEvent); EventManager.Instance.Unsubscribe(DeleteModelEventArgs.EventId, this.DeleteModelEvent); } public override void OnEnter() { base.OnEnter(); } public override void OnLeave() { base.OnLeave(); } } }