Unity 三年游戏开发项目经验分享
一 本人经历
一年在某5人精英团队(除了我),UI制作,搬砖等打杂活。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。一年主力开发某棋牌游戏(基本就我一个人,因为实在招不到主城,被硬上,该项目也相对很简单,但是五脏六腑居在),从Socket网络连接,UI框架搭建,热更新等,啥活都干,但是干的都勉强能使用。
一年参与某百人游戏研发团队做某客户端核心功能开发。
总结:普通游戏程序员该经历的,我都经历了,除了渲染方面。
二
1.单一原则
这是最简单,又是最难的,这不是一种特定的技术,但是这是一种最重要的思想。游戏开发中,需求变更是最为频繁的。单一原则的坚守,是很难的。一定要秉持这一原则。何谓单一原则:任何类,方法,字段都只做一件事,这样可以极大化的降低代码的耦合性,总之做任何功能,尽量分化,细化为各个独立。
2.里氏转换原则
类B继承类A时,除添加新的方法完成新增功能外,尽量不要重写父类A的方法,也尽量不要
重载父类A的方法。
子类可以扩展父类的功能,但是不能改变父类的功能。
子类可以父类的抽象方法,但是不能覆盖父类的非抽象方法。
即,子类只是可以给父类增加方法。
3.面向接口编程
高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
面向接口编程,而不是面向实现编程。(以抽象为基础搭建起来的架构比以细节为基础搭建起来的架构稳的多,抽象指的是接口或抽象类,细节就是具体的实现类,使用接口或抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作)
比如在编写父类和子类的时候,尽量父类使用抽象方法来与子类交互。
4.接口最少原则
建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。也就是说为各个类建立专用的接口,而不要试图建立一个庞大的接口。
接口是设计时对外部设定的“契约”,通过分散多个接口,可以预防外来变更的扩散,提高系统的
灵活性和可维护性。
5.迪米特原则
一个对象应该对其他对象保持最少的了解。其实有点像单一原则的味道。通俗来说,一个类对自己的依赖的类知道的越少越好。也就是说对于被依赖的类来说,无论逻辑多么复杂,都尽量的将逻辑封装
在类的内部,对外除了提供Public方法,不对外泄露任何信息。
6.开闭原则
一个软件实体如类,模块和函数都应该对扩展开放,对修改关闭。
三.
作为游戏开发,思想上,要绝对的“无欲无求”。何谓无欲无求,就是不要在乎策划的“需求”,无论他说什么,你都要做好还会继续更改的需求的准备。不要寄希望于做完不会再更改,你所做的东西,都要考虑他要是再更改,你该如何。
游戏开发中,没有具体的框架而言。但是务必遵循以上几个原则。所以说,敏捷开发,适用于游戏开发。当然,也要有”MVC”模式的思想。
游戏制作中,分段,分细概念十分重要。
比如在制作某模块功能时,尽量划分细。
注意内存管理:对象池应用十分重要,特效管理播放也需要注意。
Unity对GC的要求十分严格,所以什么Linq之类,不要去使用了,当然类似调用GetComponent也最好不要经常掉。
代码规范方面:
私有方法写在底部,公有方法写在上部。
判定代码质量规则
①可读性
整洁,一个脚本超过三百行,就有问题。正面你分层没有做好。
一个功能一个方法。
四 总结
游戏开发中,编码过程中的逻辑设计务必遵循以上几个原则和抱有MVC分层理念。
