如何学好 Unity?
我喜欢游戏开发,想学学Unity,希望大牛指导一下 最近在知乎和微博上经常有人问我如何开始学习Unity3D,在我看来,这样分为几个阶段:初学者,先从Unity官网的视频开始看起,地址在此,跟着视频做出你的第一个游戏吧,所有的资源,代码在Asset Store都可以下载到。熟练者,关注Unity圣典和Unity User Manual,在这一阶段,要把在第一阶段所忽略的内容进行选择性的补充学习。进阶者,关注Unity社区,Unity Answers,Unity Wiki和知乎的Unity板块,在这一阶段,要对Unity的各种细节问题,优化,底层原理和新的技术方案都要进行思考和学习。在以上几个模块中,知乎的Unity板块尤其值得关注,干货满满而且都是中文,建议通读。
在进阶者这一阶段,你才可以对一些中间件进行学习,具体学习什么样的Asset,还要由你的项目需求决定,不过无论如何还是推荐学习这几个Asset:Behavior Designer(AI), DoTween(Tween动画), PlayMaker(可视化编程),Shader Forge(可视化的Shader编写)和Elementals(粒子特效)。
当你将进阶者的学习内容完成之后,你就已经是一个合格的Unity工程师了,开发一个游戏对你来说不再是一个问题,各种工作也是手到擒来。
如果你还觉得不过瘾的话,就可以尝试反编译一些市面上流行的Unity3D游戏来获取代码,毕竟真实生产环境中的代码才是最值得深入研究的,在这部分我还是要推荐啪啪三国的代码,相当整洁。
在完成以上的学习过程中,看一些第三方的博客也是蛮有用的手段,在这里无耻地推销一下我的博客 这个问题是初学者最想问的,在这里答一下:
1、首先照着官方或者其他入门视频教程,一步一步做出一个简单的小游戏,一边做一边熟悉Unity界面。
尝试认识和理解GameObject,Component,Script等基本概念。不用多么复杂,这样就挺好:
2、做完几个小项目后,基本熟悉了unity环境后就可以脱离视频试着自己去做点东西了。
在做的过程中无可避免的会出现“想实现一个功能但不知道如何去做”的问题。
这时候需要去补一下C#编程基础。可以先丢开Unity,花一些时间系统学习C#,或者找一个拥有相似功能项目的源码结合学习。
在学的过程中一定要先想办法自己动手实践,然后再参考别人的方法。编程相关的东西看再多次都不如自己动手写一次。
等到实现基本功能没大问题后,剩下的就是多做项目多练习,这一步没有捷径可以走。
Unity的功能组件非常的多和杂,指望通读一遍官方文档一口气吃下并不现实。如图,这还只是大概的目录而已。
3、这时候可以尝试着去做一个自己感兴趣,复杂一些的项目,然后逐个去填平过程中踩到的坑。
或者针对遇到的问题单独写一个例子深入研究,把它彻底搞懂。
最后,学习的过程中应该渐渐明确一个目的:最终要学会的是游戏开发,并不仅仅是一个游戏引擎的使用。
后面的学习的过程中可以多往底层方向思考,即"这个组件的实现原理是什么",或者可以尝试自己写一些功能插件。
关于C#和Unity3D入门学习可以参考我们B站的视频教程:
https://space.bilibili.com/38043731/#/还有知乎专栏:
游戏开发入门指南——Unity+ 学会Unity 其实不难,但要说在任一领域做精的话,都是需要下大功夫的。以下是针对程序来说的学习路线
初步熟悉Unity
熟悉Unity的开发环境,界面,文档:(知道有问题时去哪里找很重要)熟悉Unity的基本概念:(包括但不限于)
Game Object & ComponentPrefabTagLayerMono Behaviour 的生命周期
熟悉Unity的资源管理
知晓常用的游戏开发资源从哪里来,到哪里去,包括但不限于:模型,材质,动画,数据表,配置表.....熟悉Unity的工程结构
内置目录区分清楚工程文件中哪些是引擎生成的文件,在协同工作时避免这些文件产生冲突形成一些良好的习惯,整理干净工程。
熟悉Unity中各个常用的子系统及其相关组件,知道怎么去使用是第一步
物理动画UI图形渲染...
熟悉在Unity中的游戏开发编程
3D数学常用API熟悉常用的数据结构编程基础薄弱的,还要恶补一下编程功底
使用Unity产出作品,形成自己的正向反馈
经过之前的熟悉过程,到这里应该已经有一定的熟悉程度了,那么别停下,开始做些个人作品吧。Asset Store上面有很多值得学习的完整工程,找自己感兴趣的,下载下来,开始复刻,在复刻的过程中,学习别人的经验自己给自己定一个小目标,使用Unity开发点自己的东西
深入学习
在这个阶段,如果可以的话,最好先明确了自己未来的发展方向,要知晓自己未来想做什么, 以下我列出了一些,可能的发展方向,每种方向,都有不同的深入学习的路线。所以选好了,就朝着一个方向努力吧,不要朝三暮四。
独立开发者
用到什么学什么,是这个路线的唯一真理,一切跟着你的项目走
Gameplay工程师
这个路线会学的稍微杂一些, 但有几项是必须要融会贯通的,一个好的Gameplay工程师其实是非常难得的,特别是在这个大环境就是程序员都喜欢往底层做而忽视直接跟用户接触的上层逻辑。
数学知识基础物理知识基础熟练掌握,且深入理解动画系统熟练掌握,且深入理解UI系统熟练掌握,且深入理解物理系统熟练掌握,且深入理解渲染系统网络,AI.... 等等总的来说,就是得熟悉引擎的方方面面,还得懂游戏。
引擎工程师
鉴于渲染部分是任何一个引擎的核心模块,所以先从这里研究起吧,但这也绝对不是引擎的全貌。尝试下自己实现个软件渲染器,非常有利于深入理解渲染管线。打牢C++基础,毕竟现代游戏引擎,底层都是C++。由于Unity毕竟是个闭源引擎,其源码你是看不到了,就算有,也是老版本的了。所以找些其他引擎的源码读读吧。基于Unity实现自己的扩展模块。
游戏设计师
用到什么学什么,做到自己能实现游戏原型,就够了
....
这里还有一些教程,希望能帮到你:游戏开发入门指南 2019年4月更新:
我现在的方向偏图形,看了冯乐乐的书,明白了原理,但是实际开发中还是太多困惑。
找了一个进阶一点也更全一点的教程,看起来很不错,还没有仔细研究。
Unity C# and Shader Tutorials
2018年答案:Youtube 关键字:Brackeys
优势:
逻辑很清晰
没有废话,他的音频是用专门的录音设备录的
声音很干净,不像很多视频,嗯啊的词汇一堆
要求:
英语别太差就行,youtube上有字幕,也有翻译,但还是推荐看英文
教程真的走心,佩服 对于Unity学习
做了5年的Unity,很深的一个体会是,于Unity其实不用过分关注具体实现,尤其是现在网络资源如此的丰富。
个人觉得就Unity学习,掌握几个很重要的点,
1.基本编程语言功底,C#、js、数据结构、算法
2.Unity资源流原理(Unity如何处理资源关系的,mate、 library、prefab之间的关系 dll如何被引用等等),基于这些关系去构建自己的资源管理结构。
3.做好对象生命周期管理(利于管理内存、利于更加灵活结构化)
4.善用unity文档和answer
这几点处理好了就足够用了,然后我们关注的具体实现,网络上很多现成的解决方案,处理这些解决方案,这些解决方案不要直接拿来用,看看人家的思路明白其作用用自己的理解去实现自己的解决方案。
我是很不赞同去看网络上的demo来学习Unity的,Untiy的思想是可以用任意脚本对象去构建一个项目,这是非常方便非常灵活的,这是个很大的优点,然而这对于新手来说是很可怕的缺点,就像往一个容器里放入很多散落的个体,然而在项目这些个体又是项目有引用关系的,那么个体之间的偶合关系处理的不好那这就会成一个项目很大的问题。然而目前网络上的demo,大部分都是不够结构化不够框架化的初级demo。于初学者很悲催的一点是,如果一开始你从这些demo上去理解Unity,你就会进入完全基于实现的误区。很多问题都靠挂载脚本来解决,于产品级项目这样的思想是很可怕的,会严重影响产品迭代速度、管理成本以及时间成本。甚至很多教学视频往往也是把新手引入了这个误区。 谢邀,楼上选易的答案已经比较全面啦,对于初学者、高级者、进阶者的要求是不一样的,如果答主的意志力比较强的话参考已有答案中的资料已经是非常丰富了,在此从开源项目的角度推荐一些优质的 Unity 项目,供大家一起交流学习。
目前 Unity 已成为最受欢迎的移动游戏引擎,在国内也有很多采用 Unity 开发的客户端游戏以及网页游戏,比如成都九众的《将魂》,《老友记》,骏梦的《仙剑奇侠传OL》等。不过,随着开发者和制作室越来越多,这对 Unity 既是一种挑战也是一种机遇。
1. 项目名称:基于 Unity 的游戏框架 Game Framework
项目简介: Game Framework 是一个基于 Unity 5.3+ 引擎的游戏框架,主要对游戏开发过程中常用模块进行了封装,很大程度地规范开发过程、加快开发速度并保证产品质量。
项目地址:OzhizuO/UnityGameFramework - 码云 Gitee.com
2. 项目名称:基于 Unity3d 的城市跑酷
项目简介: 本项目是基于 Unity3d StrangeIOC 框架的创意 3D 城市跑酷项目。主角在城市中不断的逃跑白天要躲避警察,晚上要躲避恶魔,无尽的跑酷,最终摆脱顽敌迎来短暂的自由。
项目地址:keyle_xiao/SuperStrange - 码云 Gitee.com
3. 项目名称:基于 Unity3D 的经典炸弹人
项目简介: 自己用 Unity3D 制作的经典炸弹人全套源码,无限关卡版,还原了经典炸弹人的所有功能,供大家相互学习。
项目地址:Foldcc/炸弹人-无限 - 码云 Gitee.com
4. 项目名称:unity3d 客户端的服务器端 demo
项目简介: 该 demo 实现了 mmo 游戏的基础模块 aoi (基于兴趣范围的广播),世界聊天, 空间管理等。
项目地址:BossHX/xingo_demo - 码云 Gitee.com
5. 项目名称:高仿村庄保卫者游戏
项目简介: 模仿村庄保卫者游戏,全部使用 Unity 的 uGUI 制作,基于 Unity 5 版本。目前包括:UI 部分、战斗部分、道具部分,功能基本完成。
本游戏是一款半自动是防守游戏,简单回合制战斗,除脚本外,其他所有音乐、音效、图像等素材均来源于网络,版权归原作者所有。
项目地址:孤月蓝风/VillageGuardians - 码云 Gitee.com
6. 项目名称:火炬之光 Unity RPG MMO
项目简介: 该游戏为一款网络 MMO Unity RPG 游戏,主要使用了 C# 作为工程的开发语言。通过 python protobuffer 等技术用于配置表管理和网络协议生成。该 RPG 游戏主要包含以下功能:
AI状态机换装系统技能系统网络系统UI系统等
项目地址:李勇2/unityRpg - 码云 Gitee.com
来码云 http://Gitee.com
发现更多优质开源项目:最新推荐 - 码云 - 开源中国
让团队流畅、高效开发:码云企业版 - 码云 - 开源中国 谢邀。
一根网线,一台电脑,一颗充满激情的心,足矣。
网上有无数的教程教学,Demo案例,只要肯学一定可以。
个人建议,关键在于动手,读万编不如写一遍。按自己的兴趣找一个方向找个简单的教程,动手做一遍。
学过一遍之后应该知道自己的问题在哪里了,然后加强这些方面的能力并更系统的学习,更多的阅读,多沟通交流最好找相关工作,注意代码能力这是基础。
关键在于实践。 谢邀。
入门、进阶、精通,是学习所有东西必经阶段,之前的一些回答已经讲的很详细了,什么官网教程,各种Manual,书籍,在线教程等等,我也不重复了。
我只是想歪个楼,Unity本身并不是一种体系(或者叫系统学问),他只是计算机图形学+游戏开发+各种其他系统的一种表现,题主的愿望如果是想学习游戏开发,unity是一个很好的入手工具,但它背后必然蕴含这一些通用系统知识。就像圆珠笔、毛笔、纸张等等只是写作的工具,你如果想学会写作,那么文字、修辞、表达等等相关的系统知识不可少之。说白了,你有没有想过,如果不用unity,你如何制作游戏?
另外,我本身在使用unity的过程中,遇到过大量的tricks,比如什么“要把这个gameObject放到另外一个gameObject下面”,“UI叠加的时候需要使用一个canvas”等等,这些所谓的知识并非长久,unity在数年的迭代过程中也早已变更很多,早期有很多tricks在后来都废掉了,很多机制也被替换了(光照系统大换过一次,渲染模型也变过,assetbundle更是变过好几次),但是他背后的图形学、编程效率、构架等等不会变更,其实说白了,就是unity迭代过快,没有的东西先加上,后面很多使用者反馈说不好用,或者使用插件做一些东西,在之后的版本中又被官方自己解决或更改了,那么之前的那些tricks迅速不灵了。
还好,这些还是有信息来源的,比如Unity的官方blog,所以如果你是想在以后的工作中使用unity开发游戏,记得别忘了关注这个blog,使用一些rss订阅工具订阅一下吧。
PS,另外吐槽一些一些公司招聘,筛人的方法除了履历、文凭以外,就拼命问一些tricks的东西,以tricks的数量级来作为标准,我也是醉了。这些东西,分分钟学会,分分钟被抛弃或变更,其实没有任何意义。 新手:首先是要了解 Unity 的基本操作。熟悉 Unity 中的基本概念。如果英语好建议看官方视频。
Unity - Learn - Modules
英语吃力可以看泰课在线,游戏蛮牛的基础课程。
泰课在线
蛮牛教育
操作基本熟悉之后可以看 C# 的基础课程,不要求学的有多深入,但是基本的语法要学的差不多。与此同时,可以看一些简单的 2D 案例。2D 比 3D 要简单不少。我觉得通过案例学习是进步很快的。可能刚开始会觉得很吃力,但是一些API 用的多了,自然会有一些印象。
入门:我推荐先学一些 UI 的知识,包括 NGUI UGUI,国内仍然有很多项目在用 NGUI 。做一些 UI的小案例可以熟悉这些 UI 框架的用法。其他一些模块,包括 DOTween,Mecanim 动画等等。也建议做一些小案例熟悉用法。当你对 Unity 的大部分知识会了基本的使用后,可以开始跟着做一些稍微大型一点的 3D 游戏 Demo。推荐一个视频:
黑暗之光-视频教程
里面包含了背包系统,技能系统,状态系统,商店系统,小地图等功能。是使用 NGUI 开发,但是如果你也可以自己用 UGUI 开发。遇到不会的 API ,去官方文档查。
Unity User Manual (2017.1)
学习了这些稍微大一点的案例,就需要深入学习一下 C#。对委托,线程,网络,泛型,文件都要有一个系统的学习。
进阶:可以自己动手写一个简单的 UIFramework ,封装一些常用的操作。比如:
MrNerverDie/Unity-UI-Framework
进阶对代码要求更高。对程序的可维护性也越高。可以学习一些常用的数据结构和算法。包括设计模式,推荐《设计模式与游戏完美开发》《游戏编程模式》两本书。至于 Shader,在大公司里面技术美术主要负责 Shader ,而且 Shader 需要静下心来学习。如果只是入门的话推荐《Shader入门精要》。另外包括 xlua 热更新,AI 编程,性能优化都要有一个基本功扎实的学习,如果有兴趣,可以深入。关于网络方面,建议自己写一个 C# 或者 C++ 的服务器,然后在自己用 Unity 写前端。至于书籍推荐,Milo 那个书单有很多书,可以选取几本书来读。
游戏程序员的学习之路(中文版)
另外如果是刚开始写小游戏 Demo 的话,《Unity游戏设计与实现 南梦宫一线程序员的开发实例》值得一读。