最近一个朋友想学Unity,作为老司机的我说:可以,先给你定几个小目标,明确一下学习方向。闲下来的时候想想独看看不如众看看,倒不如写篇博文,供萌新们参考,以体现程序猿乐于分享的优良传统。
本文的目标是:让新手从懵B到有方向感,并不会有太多实质性的技术介绍
受用人群:初步具有计算机知识和编程能力的,希望学会使用Unity的,新手
那么开始,5分钟带你看完苍老师最新力作!
啊啊啊不,5道题带你入门Unity。明确了吗,你的小目标?
一.Unity好复杂,老司机大哥我有点慌
当你觉得一个东西复杂到慌的时候,肯定是没有认清他
Unity只是一个游戏引擎,本质上就是一个完备的开发环境:一个开发框架,一个可视化编辑器,以及各个平台的Runtime。
其中Runtime是现阶段的你无需关心的,
那么事情就简单了,你需要熟悉的只有
1.框架提供的组件和API
2.如何使用Unity编辑器
细挖下去,里面的内容非常多,现在要做的是,捡重要的看,先入门,其他的以后再说,一步步慢慢的总会学到。
对于框架,必须要了解两个重要的概念Component、GameObject。
在Unity引擎当中,所有的东西都是GameObject,汽车,人物,地面,树木,按钮,文字,光,一切。
也就是说,你只要往内存里生成这些GameObject,就可以构建出你想要的世界了。
那为什么同样都是GameObject会有不同的表现呢?
这都是Component的功劳。Component附着在GameObject上,给GameObject提供属性,重新定义了GameObject表现和行为。
GameObject和Component的这种关系,实际上是一种常见的设计模式——组合。
在一开始,一个空的GameObject既不是汽车,也不是人物,也不是光,什么都不是
但是,给这个GameObject附上一个“灯光”的Component后,他就是一个光源了,甚至还可以给他附上一个“文字”的Component,这样他就是一个有照明效果的文字了。
照这么说,我再附上一个“树”的Component,就变成一颗带文字的,还打着灯的树咯?是的!这看起来像是个圣诞树!
开心,这就是组合的威力,组合能不止数倍于Component数量的让这个世界变得丰富多彩!
题目1:如果现有3个Component,请问理论上能组出多少个不同的GameObject?(不要对题目过度解读)
常用的Component有
Transform:他赋予一个GameObject在3维空间中的位置,朝向,大小
Renderer:他赋予一个GameObject显示能力,让我们能看得见。他的常见子类有MeshRenderer(渲染一个模型),SpriteRenderer(渲染一张图片),CanvasRenderer(自己研究吧)等
Camera:他赋予一个GameObject摄像能力,把拍摄到的物体显示到游戏屏幕上
Light:他赋予一个GameObject成为光源的能力
MonoBehaviour:我们可以继承这个类,来写一个自己的Component,赋予GameObject我们想要的属性
就到这吧,我觉得够了。到目前为止,你只要知道在Unity的框架下,怎么定义一个自己想要的GameObject就好了。
题目2:继承MonoBehaviour写一个闹钟Component,作用是当系统时间到达设定的时间后,被赋予“闹钟”能力的GameObject开始疯狂抖动。是的疯狂抖动!
对于编辑器,我们也不必去理会那些复杂的功能,只需了解一些必须知道的。
Scene窗口:你可以在这里编辑一些你看到的东西,比如调整他们的位置。
Hierarchy窗口:
这里看到的就是所有的GameObject,你在这里,定义你的游戏世界。你可以增加一个GameObject,删除一个GameObject。
甚至把一个你觉得重要或者常用的GameObject保存起来。
ps.注意观察GameObject的父子关系!
Inspector窗口:当你选中一个GameObject时,可以在这里编辑他的Component,添加,删除,或者改变一些属性。
Project窗口:现阶段,你只要知道这里可以存放图片,存放代码,存放Prefab(Prefab:在Hierarchy窗口保存到Project的GameObject)就可以了。总之他就是个仓库。
Console窗口:可以在代码里输出一些重要信息(有时候使用打印语句的方式来调试代码,比断点方便)。
题目3:编辑出一个长相比较奇特的GameObject,并保存成Prefab。继承闹钟Component,重写时间到达行为,这一次闹钟时间到了之后,会加载那个保存好的Prefab显示在屏幕上了!
二.一点实战经验都没有,老司机大哥我还是有点慌啊
你要是说上面看完了,3道题目也做完了,现已经稳如狗的话,那么我就有点慌了。
实战是积累经验最快速有效的方法。
我的方法很简单,两道题目
题目4:开卷有益!至少80%看懂官方demo——《2D Roguelike》的来龙去脉,尽量不要放过一些不明白的细节。资源asset store上能下载到。
题目5:身体力行!做一个小游戏——贪吃蛇。有积分,会变速,吃完东西能变长,撞了会死要重新开局。就和以前Nokia手机里的一样。
三.我好像找到点自信了,决定试着做做看
遇到问题怎么办?
先想,再问百度google,还是没有答案,再问同事朋友,或到社区里跪求dalao。
有没有更具体的学习资料?
我不推荐笼统的学习方式,带着问题去学,学会查资料,API文档,官方的用户手册,各大社区都是你的学习园地。
ps.我不会告诉你,Unity的很多开源插件都很有学习价值。
我好想有点想要放弃?
1个月,还没有做完题目,朋友你还是放弃吧,做这行是要有天赋的,有时候坚持不见得是好事。当然你都看到这了,我相信你能行。
- 还没有人评论,欢迎说说您的想法!