Unity3D游戏开发之状态流框架

在制作Unity游戏时,通常我们可以充分利用其自身的特性来量身定做一系列开发框架。其中我们可以利用Unity中每一帧都会执行脚本中的一些默认函数如Update()、OnGUI()…的特性来设计一种针对Unity的框架——尚且称之为状态流框架。此类型框架在一些项目中都有见到身影,所以这里将其总结一下。

惯例,先上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public enum STATE
{
    START,PAUSE,OVER //枚举 开始,暂停,结束 三种状态
}

private STATE state = START;

void OnGUI()
{
    switch(state){
        case STATE.START:
            //此处添加游戏开始GUI绘制代码
            break;

        case STATE.PAUSE:
            //此处添加游戏暂停GUI绘制代码
            break;

        case STATE.OVER:
            //此处添加游戏结束GUI绘制代码
            break;
       
        default:
            break;
    }
}

我们可以利用枚举于switch结合来进行一个游戏状态的判断,脚本在游戏运行时会不断执行OnGUI()中的代码,此时只需要修改 state 的值即可针对不同的游戏状态绘制出不同的GUI界面。

我们需要在场景中Create一个空物体Empty,将脚本绑定至空物体上,即可将状态流框架控制代码嵌入到游戏中。
同理,我们可以在其他游戏对象的脚本中使用此框架,即在Update()中添加Swich语句来针对不同的状态对游戏对象进行控制:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Update()
{
    switch(state){
        case Main.STATE.START:
            //此处添加游戏开始控制代码
            break;

        case Main.STATE.PAUSE:
            //此处添加游戏暂停控制代码
            break;

        case Main.STATE.OVER:
            //此处添加游戏结束控制代码
            break;
       
        default:
            break;
    }
}

以上即是一个最简化的状态流框架,当然在真实游戏开发中要远比这复杂的多,我们需要根据游戏开发的需求来修改及扩展。
以上为一些个人总结,欢迎大家讨论交流。

BeiTown
2012.12.27

本文链接:Unity3D游戏开发之状态流框架

转载声明:BeiTown原创,转载请注明来源:BeiTown's Coder 编码之源,谢谢


Tags: , , ,

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>