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

本文介绍了一个游戏中的场景切换逻辑实现方案,包括加载不同场景时触发的事件及其处理过程。通过Command模式与游戏Model交互,根据不同场景加载特定UI面板并启动相应协程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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



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


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


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值