源码在最后一章放上 主要理解分层
应用场景:进入对应的场景触发相应的逻辑
1.加载场景时发出事件
void OnLevelWasLoaded(int level)
{
Args_Scene e = new Args_Scene() { level = level }; //把场景Index传过去
dispatcher.Dispatch(EventType.EnterScene, e);
}
2.对应的Command接收事件进行相应反应处理,并通过Command与游戏信息Model进行交互数据
public class Command_EnterScene : EventCommand {
//游戏信息内容
[Inject]
public Model_Game Model_Game { get; set; }
//相应处理
public override void Execute()
{
Args_Scene e = evt.data as Args_Scene;
Debug.Log("Enter Scene : " + e.level);
switch(e.level) //根据相应的场景Index来做出相应的反应
{
case 1:
UIManager.Instance.CreateUI(UIPanelType.StartPanel);
break;
case 2:
UIManager.Instance.CreateUI(UIPanelType.SelectPanel);
Game.Instance.StartCoroutine(InitLevelCard());
break;
case 3:
UIManager.Instance.CreateUI(UIPanelType.BoardPanel);
UIManager.Instance.CreateUI(UIPanelType.CountDownPanel);
Game.Instance.StartCoroutine(StartCount());
break;
case 4:
UIManager.Instance.CreateUI(UIPanelType.CompletePanel);
break;
}
}
IEnumerator InitLevelCard()
{
yield return new WaitForSeconds(0f);
Args_InitLevelCard e = new Args_InitLevelCard()
{
levels = Model_Game.AllLevels,
GameProgress = Model_Game.GameProgress
};
dispatcher.Dispatch(ViewEventType.InitLevelCard, e);
}
IEnumerator StartCount()
{
yield return new WaitForSeconds(0f);
dispatcher.Dispatch(ViewEventType.StartCount);
dispatcher.Dispatch(ViewEventType.InitMap, Model_Game.PlayLevel);
}
}