Unity3D游戏实战之MVC架构设计

Unity3D引擎目前在市场上占有了大部分游戏研发份额,由于其提供了强大的编辑器,对于初学者更容易上手,所以被越来越多的开发者所喜爱。但是在真正开发产品时,很多人喜欢用Unity3D的插件,这样做的结果是游戏产品是由插件堆积而成的,导致了程序模块之间的耦合性增强,不利于游戏本身的功能扩展以及游戏后期版本迭代。所以如果只是自己学习,可以使用插件快速的开发游戏,但是如果开发产品还是慎用的好,能自己动手实现的最好自己去实现,这样也容易驾驭整个产品开发。
说到游戏开发,就不得不提游戏架构设计,一提到架构设计很多开发者对此都有点胆怯,特别是我面试了很多程序员,他们的简历上都写有会架构设计,但是提到架构设计没有一个人回答的让人满意,大部分都是答非所问。在这里就给读者普及一下架构知识,说到架构就不得不提设计模式,设计模式共有23种,这是基本常识,设计模式这本书如果从头学起来,非常抽象,不容易理解。在这里给读者一个建议,就是把游戏开发常用的设计模式:单例模式,工厂模式,抽象工厂模式,状态模式,观察者模式等这几个要重点掌握。除了提到的这几个,还有一个设计模式应用非常广泛就是MVC设计模式,它的全称:Model,View,Controller,中文意思就是模型,视图,控制器。它以前主要是应用在Web端,现在我们拿来将其应用到游戏开发中。
MVC设计模式可以应用在UI界面切换和游戏的战斗中,下面逐一给读者介绍,MVC设计模式非常适合UI的架构,UI界面相当于View,UI转换控制相当于Controller,UI上面的数据变换相当于Model。这样一分析就很清晰了,接下来做的事情就是写代码了,在这里画一幅图帮助我们理清写代码思路:
Unity3D游戏实战之MVC架构设计
窗口之间的切换可以通过状态模式控制Controller进而控制View和Model的显示。View的设计可采用下图的思路:
Unity3D游戏实战之MVC架构设计
上图中,首先定义一个父类用于定义所有窗口的共同属性比如窗口的创建,隐藏,破坏等。子类负责具体功能实现。另外由于窗口类比较多,定义一个ViewManager管理类用于所有窗口的管理。
接下来介绍一下MVC在战斗中的应用,我们开发过一款战斗赛车游戏,游戏中的赛车可以射击战斗,武器可以更换。我们再分析一下,武器更换可以使用View,不同武器其所带的参数是不一样的适用于Model,控制武器更换使用的是Controller。另外关于MVC设计的详细讲解在笔者出版的《Unity3D核心实战技术详解》一书中有详细讲解,并且附有代码参考学习,感兴趣的读者可以自行查看。使用MVC实现的游戏效果图如下所示:
Unity3D游戏实战之MVC架构设计
学习架构设计,关键是要掌握架构思想,在这里只是给读者举了个例子。凡事有利必有弊,读者在做产品设计时也不要一味的强求架构设计,架构设计并不适用任何产品,更不要为了架构而架构,弄巧成拙!

最后欢迎访问IT小屋:姜雪伟个人主页