如何学习unity

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何学习unity相关的知识,希望对你有一定的参考价值。

该怎么学习,最好详细的说下

第一步首先了解Unity3D的菜单,视图界面。这些事最基本的基础,可以像学word操作一样,大致能明白有几个菜单,几个基本的视图,各自起什么作用的就可以了。

第二步理解场景里面的坐标系统,输入系统,简单的向量概念。Unity3D的坐标系统及向量概念如果不理解清楚,不理解世界坐标,局部坐标的关系,即使一个简单的移动,缩放,旋转的几行代码,也会困惑你半天。

第三步学习创建基本的场景的一些基本概念:游戏对象,组件,脚本。在界面上分别体现在层次视图,项目视图及属性视图,要理清楚彼此之间的关系

第四步学习资源导入方面的一些基本元素:网格,材质,贴图,动画等。

第五步学习脚本的生命周期,Start,UpDate,OnGUI这些基本的方法。了解,预制,时间,数学等常用的类及相关方法。理解游戏对象,组件,脚本彼此之间的关系。

第六步进一步学习摄像机,灯光,地形,渲染,粒子系统,物理系统等等,这些每一个深入进出都是一个很复杂的主题。

第七步一些更高级的概念:向量的加减法点乘差乘,光照法线贴图,内存管理,图形优化等等。Unity3D入门容易,真的要精通,那是相当难的。
参考技术A 掌握C#基础,了解 类 ,方法 ,属性 ,抽象,接口,继承,多态 ,单例 ,事件 ,委托 等常用面向对象的知识
2 熟悉Unity软件的操作

3 熟悉Unity插件的使用
全套的学习可以去siki学院看下,里面的视频都很精品,看完一两个入门是可以了一起加起来估计要半年吧
参考技术B 可以给你推荐一些资料:

1、Unity 3D脚本编程:使用C#语言开发跨平台游戏

2、Unity 游戏开发

3、Unity 入门精要(名字不敢全打对,自己查查吧)

4、Unity 极世界

5、xxx学院的unityA计划教程

其实untiy只是一款好用的游戏引擎,内容学下来再看还是不算多的,关键的是要自己动手去做去思考才能慢慢了解开发过程,基础课程讲的内容其实都是差不多的,都是在教使用原理跟C#语法,(NGUI、javascript、非Mecanim的动画知识完全可以不去听,unity5+及以下的也别看了,已经过时了)找个培训机构的课程,跟着练习下来,可以说对unity的基本使用已经入门了。

到了提升实战的阶段,就要接触一些高质量的学习资料才能最快的提升自己,因为这时候你已经有了一定的知识储备对untiy引擎的使用也已经了解了,需要听一些作者把多年开发经验的精髓总结到一个实战项目中或者代码架构清晰有效的的课程,这种课程不用多,跟着学一两部就非常必要有效了,好的甚至可以学两三遍,其实自己学懂掌握一套厉害的架构基本上可以应对一切开发需求了。这时候其他的教程也可以挑着快速的看看,听个大概就可以了,找里面优秀的地方仔细思考思考记下来就可以了,本人是游戏开发爱好者,新入门的爱好者可以加百赌网盘好友焉豆派失陪,有时间可以免费分享资料,自己利用业余时间学习在线下学了好多课程了,最后删了好多好多,因为真的深深的感觉到很多商业性质太强的教程就是浪费学习者宝贵的时间,讲课前没有想好思路,出了bug这里改改那里改改,最后不报错就行了,像这样低质量的,就不建议有基础的开发者再听了。

学习笔记 - Unity是如何将你的项目发布到如此多的平台的?

    很多Unity的开发者是不是都会觉得Unity能把项目导出发布到那么多不同的平台上运行是件很牛X的事情?那么你有没有想过Unity是如何做到的呢?本文就来大体的聊一聊Unity做的这件神奇的事情。

 

概览

    首先来看下Unity支持的平台列表:

依次是iOS, Android, Windows Phone, Tizen, Windows, Windows Store Apps, Mac, Linux/Steam OS, WebGL, PlayStation4, PlayStation Vita, Xbox One, Xbox 360, WiiU, Nintendo 3DS, Oculus Rift, Google Cardboard, Steam VR, PlayStation VR, Gear VR, Microsoft Hololens, Android TV, Samsung SMART TV, tvOS.

实在是太多了。那么Unity的技术人员是不是真的一个个平台去适配呢?答案是否定的,尽管Unity的技术人员为跨平台做了大量的工作,但是Unity仍旧需要依赖几家合作公司来帮助他们在不同的平台上实现一些功能。每当有一个新的平台发布时,Unity的技术人员首先就会检测Unity的每一个功能,看看是不是有功能已经被他的合作方在新平台上实现了,如果有的话,那么Unity对该新平台的支持所花费的时间就会大大减少。现在来看看Unity的一些主要功能:

 

图形

     Unity支持的图形API有:OpenGL, OpenGL ES, WebGL, Metal和DirectX,每个API都针对不同的平台。OpenGL被使用的最为广泛,从MacOS X到iOS设备、再到Linux甚至Windows平台,都可以使用OpenGL。OpenGL ES是与移动设备兼容的图形API,应用在绝大部分Android设备和一些iOS设备上。WebGL是应用在基于浏览器的游戏和应用上的,有了WebGL,就不再需要在浏览器上安装如Flash和Unity web player这样的插件了。Metal是苹果公司新的图形API,与绝大部分最近发售的iOS设备兼容。最后,DirectX是微软公司的图形API,可以在Windows, Windows Phone和Xbox上使用。所以,尽管Unity的技术人员花费了大量时间在图形功能上,但其实绝大部分时间都是在将这些图形API整合到Unity中,而不是从头开始写Unity自己的图形API。

 

物理

     在物理方面。Unity只使用一个工具,那就是Nvidia的PhysX,它支持Unity发布的所有平台。Unity在所有平台上都使用同一个物理引擎的原因是为了保证所有的碰撞、移动以及其他物理效果在各个平台上都保持一致。

 

光照

     在光照烘焙以及实时光照方面,Unity同样依赖第三方工具。在Unity5.x版本之前,使用Autodesk的Beast来烘焙光照效果,从Unity5.x版本开始,使用Geomeric的Enlighten工具来烘焙光照以及计算实时GI。

 

网络

     2014年,Unity发布了Unity Networking,这是Unity自己研发的网络和多人在线解决方案。Unity Networking由两部分组成:网络API(包括高级API与底层API),以及付费的多人在线服务。由于这是Unity自己的内部项目,因此Unity的技术人员就需要把代码兼容到所有平台上。

 

脚本

     Unity支持使用C#和UnityScript来编写脚本代码,那么它是如何让脚本代码在不同平台上运行的呢?答案就是幕后的功臣:Mono。什么是Mono呢?Mono是一个跨平台的、开源的.NET开发框架。我们来看看Mono的历史。微软在2000年发布了.NET框架,称其为“基于互联网标准的新的平台”。来自Xamarin公司的Miguel de Icaza非常热爱.NET,他想用.NET在Linux下进行开发,可惜的是.NET并不支持除Windows以外的平台,于是他就决定自己开发一个环境,然后在2001年,Mono开源项目成立了。所以本质上来说,Mono是一个为了将.NET框架应用在其他平台上的开源项目,它有自己的C#编译器和CLR(Common Language Runtime)。今天来看Mono,它不单已经实现了绝大部分.NET工具,而且还有一些扩展工具。总结一下,Mono是一个开源的、用C/C++实现.NET开发框架,使得.NET可以在其他平台使用的项目。Mono完整支持的系统和架构可参考:http://www.mono-project.com/docs/about-mono/supported-platforms/

     现在回到Unity上,我们已经知道Unity支持使用C#和UnityScript来编写脚本代码,假设我们使用C#来编写脚本代码,那么在使用Java的Android平台或使用object-C的iOS平台上Unity是如何运行我们的项目的呢?Unity难道会把代码编译成每个平台使用的原生代码嘛?答案是否定的,Unity才不会那么蠢,把代码编译成每个平台使用的原生代码。那么在使用Java的Android平台如何运行我们的项目呢?你可能还不知道,你可以在Android上使用C/C++来进行开发,但我们不会这么做,因为Java要方便的多,但是Mono会这么做。是的,Mono负责在各个平台上运行我们的项目。但是你可能想问,我没有在运行设备上安装过Mono啊?!没错,因为每个用Unity发布的项目(以及每个用Mono开发的项目)都搭载了Mono运行环境,Xamarin在解释Mono的运行机制时是这样说的:

既然Unity发布的项目会搭载Mono运行环境,那是不是整个.NET框架都会被包含进去呢?其实并不是,没有使用的类在链接时会被剔除,所以只有你用到的类会被打包到你的项目中。ps: Unity已经开始用IL2CPP技术,详情可见:http://blogs.unity3d.com/2014/05/20/the-future-of-scripting-in-unity/

 

     以上就是和大家分享的内容,希望对你有所帮助。Happy Coding, Happy Life!

 

以上是关于如何学习unity的主要内容,如果未能解决你的问题,请参考以下文章

如何系统的学习 Unity 3D 中的 shader 编写

如何系统的学习 Unity 3D 中的 shader 编写

Unity3D基础教程给初学者看的Unity教程(零):如何学习Unity3D

如何系统的学习 Unity 3D 中的 shader 编写

学习unity3d,如何安排进程,从哪里开始学

如何系统的学习 Unity 3D 中的 shader 编写