strange IOC框架 塔防游戏实例应用 (一)

来源:互联网 发布:怎样在淘宝买东西 编辑:程序博客网 时间:2024/05/29 10:54


源码在最后一章放上  主要理解分层



应用场景:进入对应的场景触发相应的逻辑  


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);    }}


0 0