给即将入行或者刚刚入行Unity游戏开发的一些朋友的建议
题外话:刚好最近几个月带了一个校招生,由于个人原因要离职了,所有这个同学想让我给他指定一个一年的学习计划,其实一年计划具体做什么是很难指定的,因为一年说长不长说短不短,要看你们项目开发到什么时期了,你在里面做什么功能。比如你们项目进入中后期,经常通宵出版本,这样给你留下的自学时间很少,你很难完成计划任务。所有我就没有给他写计划任务,而是写了一些自己这么多年的感悟和学习方向给他(同时也给一些刚刚入行游戏开发的朋友),希望未来几年他能有所成长,达到自己的预期或者想要成长的高度。
内容如下:
一、Unity方面的知识
1、知道什么是游戏引擎,Unity又是个什么东西。他能做什么东西。最好找一本介绍游戏引擎的书看一下,可以系统的理解一下什么是游戏引擎,能做什么。
2、全面的了解unity,把unity的各个功能模版都看一遍,最好能找个例子测试一下你看完这个模块之后学习到了哪些知识点。通过对unity各个模块的学习你就知道一个游戏引擎有什么构成,需要哪些知识,你需要学习哪些知识了。(比如游戏的输入交互接口input、用户的交互gui,官方的ugui可以学习一下他们的设计思想,音频系统audio,粒子系统particle,动画系统Mecanim,地编系统terrain,物理系统physics,导航网格系统navmesh,渲染系统包括shader,开发者自定义窗口组件的editor系统,资源的打包管理和加载系统等等)找一本unity的书,一般书里面都会详细介绍,书里面没有的你也可以去网络上面找资料或者去官网上面查阅资料学习。
3、全面的把unity的每个个api都手动测试一下。尽量都测试,这个量非常多,你可以看官方的document,结合第二点,看到哪个模块测试哪个模块也行,尽量都测试一下,虽然好多api你在现在项目开发中用不到,但是未来还是有可能用到的,而且你对unity提个的api都非常熟悉之后,对你的处理问题的思维扩展和设计一个更好的解决方案也是非常有帮助的。感觉感觉,只有你见识的多了,自然而然的想到的解决方案就越大,就越容易找个一个最优的方案。
4、对unity或者游戏引擎有了个全面的认识和了解之后,开始确定一个主要的研究方向,比如你想设计gui系统,你可以什么学习unity的ugui是怎么设计的,他需要哪些基类支持,又提供了哪些接口,问什么提够这些接口,是不是所有的游戏引擎都有这些接口,如果你给自己的项目设计和包装一套UI框架,你该怎么设计一套自己的项目的UI系统管理框架,比如他们怎么统计打开、加载、关闭,怎么设计统一的动画效果等等。UI系统是一个非常复杂的系统,怎么能让他自动化,省时省力,便于维护这是最终目的。能做到每个UI功能系统只需要策划或者美术自己拖拖拽拽就可以自动生成代码和UI布局,我们只需要编辑逻辑脚本,模块迭代也只需要替换一个组件,相同的组件和可以全部自动更新替换掉,包括代码内的函数注册等等,越智能化和自动化就越好。或者你喜欢动画系统,你也可以什么学习一下Mecanim是怎么设计的,你也可以为自己的系统设计一套动画系统管理器,比如当美术资源的自动导入时检查美术资源是否符合规范,是否可以帮他们自动生成动画状态机,把资源自动分类放到项目规划好的目录下面生成相应的Prefab等等。你可以可以设计自己的行为树来管理项目内的动画直接的切换和处理等比如用到战斗中,方便策划测试和编辑等等。还有渲染系统等等。给自己定一个明确的方向,开始深入学习吧,骚年。
二、编程方面的知识
1、开发语言的学习,深入学习一门开发语言,把它们的语法和设计思路都完全了解和明白,然后在学习一些其他语言,来看看其他语言和你自己精通的语言有什么区别,又有哪些共同点,它们是怎么设计的。开发语言是你的基础,做什么开发都需要,如果你对开发语言的学习和认识很浅,是很难写出高效的代码。
比如建议学习一下c、c++、java、c#作为你要精通的一本主语言,然后在学习一些其他的语言比如lua、js、python、php、NodeJS等等
2、数据结构的学习,数据结构也是编程中的非常重要的知识,他能让你设计出更好更高效的算法,可以开阔你的思维。一般大学都会开这门课程,建议平时在从头到尾把数据结果开一遍,最好把里面的知识点用不懂的开发语言都实现一遍,加深自己的理解。这里就不具体举例了,反正按照书本由浅到深一点一点学习。尽量都全部深入理解和掌握,虽然好多知识点在实际项目中很难用到,但是说必定那天就用到了。
3、设计模式的学习,找一两本设计模式的书看看一下,其实你在学习unity各个模块和设计一下系统的时候都已经应用了设计模式的思想,只是你你没有系统的学习或者有个更全面的认识,比如Mecanim系统的状态机就是设计模式里面的一种状态模式的思想。深入的理解和学习设计模式可以开阔你的设计思路,能设计出更好系统框架。
三、个人的一些胡言乱语
我个人感觉吧,像刚刚毕业入行游戏开发的,刚开始都有些迷茫或者都这个行业认识不过,不知道该做什么,每天就是策划给什么策划案就做什么功能,一年之后回头想想自己做了什么,学到了什么自己都不知道。其实你不仅仅要高效快速的完成策划的功能点,还要在做完这些功能的时候能从中学到知识,给自己充能,设计更好的方式来实现他。不能只局限于把这个东西做完。有时候想学的东西又太多,比如你看到好多dalao他们做渲染啦、做性能优化啦、做框架设计了等等时候你突然也想做着工作,其实一个项目组是不会让每个人都做这些的,而且新人也不会安排你去做这些东西,因为你对这些东西认知还很浅显,容易出问题。这是你不要泄气或者说做这没前途做那没前途,其实从实际出发做你现在手上的工作任务,把它当成非常重要的东西,用另一种思想去设计他,追求做到最好,然后你在从你的工作任务发散,去学习一些相关的知识来补充和完善你的工作任务。人的时间和精力是有限的,先从基础学起,给自己制定一个机会,比如定个两个4年机会,第一个4年之后学到什么程度,第二个四年之后达到什么程度等等。刚毕业个人建议,前1-2年是学习基础知识的时间。后面2两年是给自己确定一个未来的研究方向或者说自己的特长方向,比如UI系统设计,或者editor编辑器开发设计,或者渲染方面学习等等,后面的几年就深入学习你自己选择的方向,最后能形成博客文章发表出来你自己的人事和经验就可以了。