65 lines
2.0 KiB
C#
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();
|
||
|
}
|
||
|
}
|
||
|
}
|