(2-1)Unity3D/设计模式:状态模式(State)

来源:互联网 发布:服务器网卡聚合linux 编辑:程序博客网 时间:2024/05/20 03:39

该篇博客暂未写完,请勿继续查看!


1.目的:用状态模式实现游戏场景的转换。

在Unity3D中,有着场景(Scene)的概念(例如不同的关卡,就可以设计为不同的场景),而游戏在同一时刻,只会在一个场景中运行,那么我们就可以把不同的场景看作是不同的状态,即一个场景用一个场景类来表示,每个场景类负责实现该场景特有的逻辑。这时就可以用状态模式的转换原理,来实现游戏场景的转换。

2.实现:

2.1 定义场景类的接口(ISceneState.cs)

(2.1.1)既然一个场景要用一个场景类来表示,就有很多场景类,它们拥有共同需要执行的方法,而且在状态转换时满足多态的特性,那么首先就要定义一个场景类的接口,让所有场景类继承自该接口,并要求各个场景类实现接口定义的方法。

(2.1.2)编写ISceneState.cs脚本代码如下:

2.1 编写游戏循环脚本(GameLoop.cs)

(2.1.1)在开始场景(StartScene)中创建一个空的GameObject并更名为GameLoop。
这里写图片描述

(2.1.2)创建一个C#脚本文件,命名为GameLoop.cs,并将其挂载到GameLoop游戏对象上。
这里写图片描述

(2.1.3)编写GameLoop.cs脚本代码如下:

public class GameLoop : MonoBehaviour {    SceneStateController sceneStateController = new SceneStateController ();    void Awake () {        //切换场景时该游戏对象不会被销毁        GameObject.DontDestroyOnLoad (this);    }    void Start () {    }    void Update () {    }}

(2.1.4)GameLoop.cs继承自MonoBehaviour,目的是依赖于Unity3D定时自动调用的Update ()方法来实现游戏循环,所以我们可以在Update ()方法中实现玩家输入和游戏逻辑定时更新。

(2.1.5)GameLoop.cs中主要持有了SceneStateController类对象,

原创粉丝点击