C#常用设计模式(Unity)——游戏场景的转换——状态模式(State)

文章介绍了游戏场景转换及可能的切换方式,指出传统方式存在的缺点。引入状态模式,阐述其定义、参与者说明和实现范例。使用该模式可减少错误、降低维护难度,实现场景共享。面对新需求,修改代码量少。此外还提及状态模式在角色AI等方面的应用。

此文章原文来源于《设计模式与完美游戏开发》(蔡升达著),笔者只是在学习过程中受益颇多,从而进行了总结,有兴趣的读者可以去阅读原书。

1.场景的转换

当游戏比较复杂的时候,通常会设计多个场景,让玩家在几个场景之间切换,某一个场景可能是角色在一个大地图上行走,另一个场景则可能是在洞穴探险,这样的设计方式类似于舞台剧,一幕幕的呈现,但对于观众来说,同一时间只能看到演员在某一个场景中的演出。

当我们打开一款游戏的时候,可能会遇到以下场景:出现游戏Logo、播放游戏片头、加载游戏数据、出现游戏主画面、等待玩家登录游戏、进入游戏主画面、进入副本打怪······。

我们可以利用“状态图”将各场景的关系连接起来,并且说明他们之间的转换条件以及状态转换的流程,如图所示:

切分场景的好处:将游戏中不同的功能分类在不同的场景中来执行,除了可以将游戏功能执行时需要的环境明确分类之外,"重复使用"也是使用场景转换的好处之一。

范例场景的规划:

2.游戏场景可能的切换方式

public class SceneManager {
    private string m_state = "开始";
    
    // 改换场景
    public void ChangeScene(string StateName) {
        m_state = StateName;

        switch (m_state) {
           case "菜单":
                Application.LoadLevel("MainMenuScene");
                break;
            case "主场景":
                Application.LoadLevel("GameScene");
                break;
        }
    }

    // 更新
    public void Update() {
        switch (m_state) {
            case "开始":
                // ...
                break;
            case "菜单":
                // ...
                break;
            case "主场景":
                // ...
               
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值