HAARFTE/Assets/DemoGame/GameScript/Hotfix/Procedure/Logic/GameSceneLogicProcedure.cs

65 lines
2.0 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using ZGame;
namespace ZC
{
[Procedure(ProcedureType.GameSceneLogicProcedure)]
class GameSceneLogicProcedure : ProcedureBase
{
private Dictionary<string, List<GameObject>> dic = new Dictionary<string, List<GameObject>>();
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();
ZCGame.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>() { gameObject };
}
}
public override void Dispose()
{
base.Dispose();
EventManager.Instance.Unsubscribe(LoadModelEventArgs.EventId, this.LoadModelEvent);
EventManager.Instance.Unsubscribe(DeleteModelEventArgs.EventId, this.DeleteModelEvent);
ZCGame.ObjectManager.Remove(this.testZhongLi.Id);
}
public override void OnEnter()
{
base.OnEnter();
}
public override void OnLeave()
{
base.OnLeave();
}
}
}