在制作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