独立游戏开发(十三)-- 游戏主流程接入

今天来处理一下游戏流程相关的内容。
因为我这边打算是按照时间递进而加载道具以及病毒的。所以我这边就用了一个状态来判断到了哪种状态。
先定义4中状态:

public enum GameProcessStatus
{
    
    
    Status1 = 1,
    Status2 = 2,
    Status3 = 4,
    Status4 = 8,
}

首先先说明一下,为什么采用1,2,4,8,16这样的数字,本来是想用1234,然后保存到dictionary里面,但我们判断游戏进程的时候肯定是要在update里面循环调用的,如果采用枚举做为key,就会有一些列的装箱操作(可以自行百度为什么会引起装箱)。为了性能,我这边就采用位运算了。

public override void DoUpdate(float deltaTime)
{
    
    
    base.DoUpdate(deltaTime);

    if (_gameMode == GameDefine.GameMode.Easy)
    {
    
    
        if (_gameTime > 8 && !IsHasStatus(GameProcessStatus.Status2))
        {
    
    
            ChangeGameStatus(GameProcessStatus.Status2);
        }
        else if (_gameTime > 15 && !IsHasStatus(GameProcessStatus.Status3))
        {
    
    
            ChangeGameStatus(GameProcessStatus.Status3);
        }
        else if (_gameTime > 25 )
        {
    
    
            if (!IsHasStatus(GameProcessStatus.Status4))
            {
    
    
                ChangeGameStatus(GameProcessStatus.Status4);
            }

            _repeatingTime += deltaTime;
            if (_repeatingTime >= 6)
            {
    
    
                RepeatingCreateVirus();
                _repeatingTime = 0;
            }
        }
    }

    _gameTime += deltaTime;
}

_gameTime为全局的游戏时间,每个状态对应的时间后面可配置;当到达某个时间同时没到一定状态的时候,我们可以切换相应的游戏状态。在每个状态里做对应的事情。当处于最后一个状态时,我们就可以循环生成物件 了,不用人为干扰了。

在这里插入图片描述

我这边测试了一下整个流程,为了方便查看创建流程,我把scence场景也开放了。
可以看到整个游戏的一个整体效果。

上面也可以看到,我们游戏的总体流程已经做完了,数值的调整需要慢慢打磨,接下来需要接入UI框架(其实就开始、结算界面)。UI接入后,就可以接入事件,从而消灭每个病毒都有直观的分数,更有成就感。。。

传送门:独立游戏开发–索引

猜你喜欢

转载自blog.csdn.net/C_yuxuan/article/details/115037178