在Unity游戏开发中,会有很多常用的功能需要开发,例如,输入系统,音效系统,行为树系统,对话树系统,本地化系统,寻路系统,Excel导入功能,等等。
行业中的常识是,不要重复造轮子。例如,输入系统的话,有Rewired插件,为什么不直接用呢?音效系统的话,有MasterAudio,为什么不直接用呢?本地化系统的话,有I2Localization,为什么不直接用呢?寻路系统的话,有A* Pathfinding,为什么不直接用呢?
常规的观点是这样的,一个这样的系统,开发一下要花几周时间,还不如直接用现有的,节省了时间。一些常用的系统合起来,可能有5万行代码,1人1年的开发成本,用现有的插件岂不是更快?
自己开发有如下好处:
1. 自己开发出来的系统往往更加简单,因为自己开发的系统只解决一个问题,而一个插件往往需要解决各种不同的需求。这个系统更加简单,就表示,使用起来也更加方便。
2. 自己开发的系统可以做更好的文档,有中文注释和Tooltip。
3. 自己开发的系统可以自己优化,可以提升效率。而别人的插件是不方便优化的。
4. 使用别人的插件,别人将来可能会放弃维护那个插件。而自己的代码就不用担心了。
5. 别人的插件往往代码量非常大,不易于理解。往往自己1千行能解决的问题别人要用1万行。这也是因为别人要照顾各种不同需求导致的。
复杂度的问题,例如:
1. Rewired插件,就是一个难懂的插件,其概念相当复杂,理解起来也非常困难。这样就导致开发的时候总是要重复的去读文档,导致开发效率降低。
2. AI插件Rain具有很高的复杂度,很多的东西,实际上都是不必要的。
效率的问题,例如:
1. MasterAudio需要在场景里面放一个MasterAudio预制体,编辑这个预制体的时候就有速度极慢的问题。
2. I2Localization取一个关键词的速度奇慢,自己做的简单的字典读取数据可以提升到5-10倍的速度。
3. AI插件Rain有运行效率极低的问题
4. 行为树插件BehaviourDesigner节点多了之后,编辑的时候非常卡
如果只是短期做游戏,大量使用插件是可以接受的。但是,如果打算长期做下去,那么,你自己写下来的这些系统,之后都是可以用在后面的游戏中的。
如果只是做三年游戏然后就转行,那么,使用插件是明智的选择。
如果要做游戏10年或者更久,那么,自己精心设计几个系统,在今后的游戏中都能够沿用。而自己设计的系统用在自己的项目中肯定是最优的,最合适的。时间久了之后,反而节省了开发时间,而不是浪费了开发时间。
这些仅限于大部分插件而言。但是,会有个别插件,实现的非常完美,而自己做的话会很麻烦,所以就直接用了,下面就是几个例子:
1. OdinInspector
2. TextMeshPro