写在最前
很多小伙伴想进阶Unity主程,进阶Unity架构师,不知道要学哪些知识,今天给大家分享一下比较完整的知识体系,Unity学习路线,介绍一些有干货的博主与教程,给大家做参考。
不管你是已经工作了,还是正在学习中的Unity初学者,如果你想在游戏开发行业中有更高更远的发展,请用五分钟阅读下面的文章。
官方资料
Unity - Scripting API(API 详解)
Unity - Learn - Modules(官方视频教程,适合英语好的同学)
下面是收集的一些不错的视频教程,对照目录可以选择自己合适的教程观看
从浅入深,菜鸟也能学!
1: 编程语言,数据结构与算法
- c#的基本语法与常用的机制:权限,继承,多态, virutal, override委托,协程,foreach,泛型,Lambda表达式,Attrubute,反射,枚举,异常处理try/catch,垃圾回收等。了解这些C#的语法与核心机制,有助于你写出高性能的代码。
(2)掌握常用的数据结构,熟悉每种数据结构背后的实现原理与性能细节: List, Hash表,队列,栈,链表,字典,树,图等;
(3)了解常用的一些算法思想: 分治,动态规划,贪心算法,穷举,预先计算与查表,搜索,排序等。
推荐教程(点击可查看):
2: 熟悉Unity游戏引擎使用的非渲染的核心机制:
- 熟悉开发环境与开发工具: .net, mono,il2cpp,android SDK, android NDK, JDK, visual studio, git,svn等。
(2)熟悉Unity引擎中的各种工具的使用: profiler, stats, frame,debugger, log等;
(3)熟悉Unity编辑器扩展机制来定制开发流程与相关工具:关卡编辑器,地图编辑器,代码自动生成等。
(4)熟悉Unity的跨平台的开发与调试:基于编辑器/iOS/Android/win/mac等平台如何开发与真机调试。
(5)熟悉常用的iOS开发与Android开发的一些核心概念与机制:Activity,OpenGL thread等。
(6)熟悉Unity的各种资源加载策略的机制与用法: Resources, AssetsBundle,StreammingAssets等。
(7)熟悉基于Unity组织大型游戏项目与分工合作的工作展开:美术,程序,策划如何同时开发,将相互影响降到最低等。
(8)熟悉Unity的各种配置与相关参数对游戏与性能的影响:物理引擎的参数,编译的相关参数,unsafe code的相关参数等。
(9)熟悉各种游戏常用的算法原理与方案:寻路导航,网络,http,AOI, ROV动态避障,定点数物理引擎,程序生成地图,行为决策树,状态机,流场寻路等。
(10)熟悉常用的解决方案,框架库,开源项目:
Lua热更新: xLua, ulua;
C# 热更新: ILRuntime,huatuo/HybirdCLR(wolong)
Json文本序列化与反序列化: LitJson库;
二进制序列化与反序列化: Protobuf;
资源管理: YooAssets等;
CSV表格数据管理: CSVParser, Flash闪表工具等。
(11)Unity DOTS 开发: ECS, Burst等;
(12)操作系统的基本知识:文件读写,多线程与同步,虚拟内存,垃圾回收算法等;
推荐教程(点击可查看):
Unity框架设计篇
Unity热更新+AI专题
Unity 游戏开发之面试专区视频教程
3: 熟悉一个游戏项目应该如何管理与如何组织;
- 如何基于git等版本管理工具来管理项目;
- 搭建框架,技术选型,技术验证,让策划,程序,美术能协同工作;
a:目录结构划分与规划,将不同的研发人员分开(美术,策划,核心程序,基础程序);
b:引入基础的库与相关模块: 资源管理框架,网络,protobuf协议,json等;
c:根据游戏的类型来制作一些开发中的编辑工具:地图编辑器,关卡编辑器,技能编辑器等;
d:根据游戏的类型编写通用的框架:资源管理,网络管理,协议管理,声音管理,配置表管理,事件管理,UI管理等。
e: 热更新的技术分析与接入: Lua方案,ILRuntime方案,huatuo/HybirdCLR方案等;
d: 性能测试与技术验证: 做好项目的技术验证与性能验证;
e: 熟悉与服务端进行对接,熟悉网络游戏的解决方案,知道哪些放客户端,哪些放服务端。 - 项目进度管理与任务安排;
a:给项目组的开发人员来合理的分配相关任务;
b:追踪相关进度;
c:引入系统测试与全平台测试,尽快更近问题;
d:建立测试case与bug库记录,记录下现在有的bug与解决情况;
e:阅读团队其它成员的代码,必要时调整重构,确保代码的质量;
推荐教程(点击可查看):
Unity 网络游戏同步视频教程
Unity性能调优【性能优化】视频教程
4: 熟悉Unity引擎的渲染相关的机制与技能(可以往技术美术的角度转型)
-
- 可编程渲染管线的核心机制;
- 内置渲染管线的核心机制;
- URP/HDRP渲染管线的核心机制与处理;
- 熟悉常用的一些渲染机制:阴影计算,法线,漫反射光照计算,镜面反射光照计算, 深度测试等
- 熟悉Shader开发与常见的Shader移植修改;
- 熟悉常见的一些主流游戏的Shader算法与处理技巧;
推荐教程(点击可查看):
Unity Shader进阶视频教程
一、低效率的学习坏习惯
1.被动反复阅读
通常一个新手在学习Unity开发的时候,往往会选择买书去学习,首先这样的学习效率是非常差的,比如在学习C#的时候,是完全不用看书的。书上大多数都是理论知识,你并不知道哪里是重点,所以每个人地方你都会去看,但是事实往往是大多数东西你都不理解。你想要通过书来学C#,可能这本书半年你都看不完,就算看完了又能怎么样,看一遍不可能会,很多人就会选择重复去看,不仅浪费时间,效率也不高。这种学习方式是非常不可取的,你没有那么多时间来学习编程。
2.看书看视频中代码示例认为自己就理解了,从不动手编程.
这是新手在学习Unity'的时候常见的问题,也是大忌,很多人都说,我课程听懂了,但是自己不会动手写,这首先就是学习方法的错误,这是新手学Unity的大忌,不去动手写,不去跟编译器和开发环境做斗争,你永远不知道游戏开发过程中的**事情。
3.拖延
既然你选择了学习Unity,就应该知道,我们这行需要不断去学习新的东西,拖延会让你成为一个真正的“码农”。这也是影响N多人不去学习的理由。解决的办法只有一个,马上去做!一旦你开始去做了,你就会发现一切没有那么难。你的计划再完美,你选的Unity书籍再经典,你挑的Unity视频水平再高,如果你不马上去看,去学,去动手实践,那永远也只是停留在空想的阶段。成功学习的典范就是成功战胜拖延症的典范。
4.喜欢自己闭门造车
学习Unity专业知识,不是都靠自己顽强的意志,更多的是需要跟别人交流,重要的就是跟比你强的人交流,加一些氛围比较好的Unity交流学习群,或者别人的一句话就能让你茅塞顿开,学技术切记不能闭门造车,学习的大忌。
我这里有一个学习氛围特别好的Unity学习小组点击加入,里面聚集了一帮热爱学习Unity的零基础小白,也有一些正在从事Unity游戏开发的技术大佬,欢迎你来交流学习。
5.遇到问题搞不清楚,只能百度,然后自己一团糟
遇到问题的时候,不假思索「百度」,但是很多时候我们是浪费了大量的时间,也搞不清楚自己的问题在哪里。当然了,我这里特指“Unity初学者”而不是已经工作中的人。那些已经在做Unity工作的人当然很多问题都要自己解决,但是对于一个Unity新手来说,能找老师尽量找老师,很多问题我们新手不必浪费太多自己的学习时间,因为那样的效率太慢了。
一些学习的好习惯
1.与其反复阅读,不如经常回顾
大家记住,对于Unity技术性的书籍,绝对不是让你一页一页去看的,像是完成做一样。有一句话说:温故而知新,可以为师矣。学过的知识点,你时常去复习一下,你每天都见到你自然就记住了,而不会像很多人说“学了就忘”你不总去回顾,那能不忘记吗?不如有意识地总结回顾看过的Unity书,学过的知识。只需要每晚趟在床上的时候,回想一下今天都学到了什么?今天自己有进步一点点吗?
2.多做练习,多写代码,从错误中学习
一个优秀的游戏开发者,没有什么聪明人,他们都是一行一行代码积累出来的,对于一个Unity初学者来说,如果你想要找到一份不错的Unity工作,你只能是大量的练习,形成一个好的学习习惯。在初学阶段哪怕对着书本敲也没有什么问题。认真完成书中留的习题,在自己没有尽最大努力的情况下面不要去看答案。不要怕犯错,每一次犯错都是自己进步的机会。
3.多总结问题的解决方案,多写可复用的代码,拒绝复制粘贴
每天把学习中遇到的问题最后的解决方案总结一下,想想为什么出现了这个错误,加深自己的印象,是什么导致了这个错误,犯过一次的错误就尽量不要犯第二次,导致错误的根本原因是什么。是自己的逻辑混乱,粗心大意,还是程序太复杂?
4.对于自己想要学习的内容,制订一下计划,有节奏地学习
一个学习习惯好的人,做什么事情都会有一个明确的计划,对于一个Unity初学者来说,一份好的学习计划是你开始的前提,因为学习一个东西最怕三天打渔,如果能够持续地学习一个东西,我可以把它学习地很好。这时候,你就应该结合我自身的情况,选择一段最佳的学习时间,在这段学习时间里我可以不被打扰,保持高度专注。比如每天早上6.30起床看一个小时书。
5.注意劳逸结合
对于电脑工作者来说,多参加体育锻炼,多去户外走走,运动能够增强人的记忆力,并且有时候还能产生灵感。如果身体不好,你的学习效率会非常低,人的精神状态一旦非常好的时候,做什么都会如鱼得水。想要成为大神,身体好是前提条件。有人30岁成为大神,我资质不好,我35岁成为大神总可以吧。切莫在30岁的时候就把身体弄跨了,然后35岁转行了,永远失去了成长为大神的机会。
6.向别人解释你的知识,多与人讨论
一个NB的Unity开发者,一定是一个很会思考的,有能力就多写博客,多分享自己的所学所思,只要你能写出东西,不怕你写的太低级,这些对于学习者自身也是非常有益的。通过用别人能够理解的语言来解释你学到的东西,本身就要求你对该知识充分理解。另外,很多人经常感叹「跟你讨论一下,我马上变得有思路了」,这其实就是交流的作用。
7: 与团队成员,客户,老板沟通需求,深度交流,有效沟通;
- : 能谦虚的听完其它人的讲话与观点;
- : 记录好别人观点的重点与内在逻辑,并重新梳理,找确认好需求;
- : 针对问题,提出自己的解决方案与疑虑,深度沟通;
- : 每次沟通完后做好小结,发到邮箱等待确认,实现完成的一次有效沟通;.
8: 关注最新的技术前沿动态;
- Unity引擎的技术动态与发展方向;
- 其它引擎的技术动态与发展方向;
- 关注虚拟现实,VR, AR,元宇宙等相关技术动态;
- 关注深度学习AI训练等与游戏,计算机3D相关的交叉领域;
游戏开发技术前沿动态论坛
最后
推荐一位Unity干货博主Blake老师
上面的课程大部分都是他免费分享的
不管是对刚入门的小白或者需要提升的各位来说,他分享的课程都是干货满满的
当然他还有系统学习班,有需求的同学可以去了解一下
最后的最后
这里要注意,对于学习,热情这个点真的是非常重要的。无论你的热情来源是什么,有了这份热情与激情,你才会主动投入更多去学习游戏开发。正是这样,才能真正做到持之以恒。
游戏开发和文学创作,音乐创作一样,都是创作作品。我们作为一个凡人,更希望的是作品能够得到正面的关注,这样才能让我做出更好的作品,也让我更有动力去创造和完善我的作品。
谢谢各位能看到这里,希望这篇文章可以给你指向一条不错的游戏开发之路。
以上,共勉