Unity 2D 非0基础入门
- 前言
- 学习的逻辑
- 认知世界
- 改造世界
- unity的主循环
- 一、标的
- 二、unity的基础要素
- 三、场景的基础要素与组件
前言
业务需要,有学习unity的要求。在我熟悉的几个平台都搜了一圈,没有找到适合我的学习资料,基本上是那种系列的教程,几十上百个小时的,要连续学上个把星期,习惯摸鱼作息的我,不太可能集中起那么多精力。而官方的文档又过于官方。
学习的逻辑
回顾了自己这些年掌握的技能,虽然也比较坎坷,但似乎没有那个技能是花费许多精力才掌握的,也许也去看了那些时长巨量的视频,但肯定没有一个系列看到超过一半的。
似乎都是用着用着,项目或者目标就完成了。而且也没有哪个事情会等我完全掌握了某个软件,某个技能之后再推进,所以,从零开始的学习方式,已经不适合我们了。
关于学习,会经历种阶段,一种阶段是认识世界,一种阶段是改造世界。认知世界是一种发散和零散的路径,并且主要是零散的;改造世界,是线性或者循环的路径,线性的路径主要对应于零散的认知路径。
认知世界
认知世界的过程是我们最熟悉的一种过程,婴儿时期就已经掌握了这种技能,这是玉米,这是车,这是石头,这是电线杆…这是零散的路径;如果有如我一样从小就败家的,会拆开各种东西看有啥构成的,比如玩具车,它有马达、轮子、齿轮、电池、外壳等部件,这就是一种相对发散的路径,是一种对原理感兴趣的思维。
在物质不发达和认知缺乏的年代,我常常聆听到女人们交流各种“标准流程”,这种流程会经过很多手传达得更远,所以她们虽然善于交际,但更多时候只会做那些被教会的事情,而貌美和善言的女人们,会被传授更多经验,如果她们的男人是不善于开发和设计流程的,也就是碍于面子不敢试错,就会处于困窘之下。
改造世界
改造世界的过程,需要基于一定的认知基础,这种认知基础大约包括一个主循环和附属的工具使用。主循环决定着农民的儿子是农民,木匠的儿子是木匠。
像玉米和菜心,它们作为一种农作物,它的主循环都是种子-发芽成株-结果,但稍微有区别,因为菜心是茎叶作为食材,而玉米则是果实作为食材。这个主循环加入人的因素,就是农民和种植户的主循环,人的认知之于这个主循环,就是提升效率和品质。
认知是如何作用于改造世界的过程的呢,比如种水稻有个过程叫插秧,为啥要插秧呢,其实可以抛的,但这涉及到株距和土地利用率,每种植物成株后,会有一定的冠幅,如果密度小于冠幅,就会影响发育和光合作用,密度过大,又会降低土地使用率,降低亩产量。通过计算机建模,计算出最合理的株距,会让一块地得到最大化的利用。
流程设计又是如何作用于改造世界的过程的呢,还是那块地,如果换做种菜,那么就需要更高密度的浇灌,如果改为自动或者半自动浇灌,会很大程度上提升效率,但是实现这个主循环因素的提升,需要考虑很多问题,如何走水,如何走电,各种材料和工具的获取,各种工具的使用…所以,提升效率,并不简单的是钱的阻力,而是认知能力和方案设计实现能力的体现。
所以,在这个主循环之上,围绕着主循环涉及的环节和因素,进行迭代提升,一如株距的设计、一如土地PH值决定施肥、一如无人机打药等等,但回过头来,循环的因素和链条,始终是种子-浇水施肥除草除虫-收获果实,或许大棚种植改变了某些环节,或者说只是用授粉替换掉了除草除虫。
unity的主循环
一、标的
如果按照一次性的游戏开发来说,unity的路径是线性-循环-线性的,但如果按照多个项目来说,unity的路径就是循环的。但最开始,对于我们来说,并不知道unity开发的循环节点都是什么,循环的相关因素是什么。如果将这个主循环作为盲盒,那至少我们可以从标的入手分析,我们用unity开发的最终标的是什么,很多时候,我们理所当然的认为是游戏,实际标的是可执行的文件,一如我们写一个C语言程序的标的,是一个EXE文件,如果做嵌入式开发,我们的标的也许是BIN或者HEX文件。
生成标的的循环就是
build settings
build
建立unity项目
选择平台和修改配置
标的
unity默认为PC平台,如果要生成IOS、Andriod等其他平台的程序,就需要下载该平台的开发包,如果还需要进行更细节的配置,就很容易找到资料了。
二、unity的基础要素
按照上面的流程,我们会生成一个空的程序,因为我们没有给这个项目装进任何东西,那么,可以给一个unity项目种装进什么呢,build settings界面上面是选择添加场景,所以unity游戏的主体构成是场景(Scenes),场景可以形成游戏的不同界面或者关卡。
场景是游戏资源的容器,它可以装下游戏人物、怪物等资源,但是如果要让人物动起来,跑起来,就需要另一个因素:脚本,脚本就是游戏的逻辑,unity主要支持C#、JavaScript、Lua。
除此之外,一个游戏还会需要音效。
这些要素,都集成到unity的Assets菜单中。场景、脚本、音效,这些容器,属于unity引擎的内建资源,而图片、音乐文件,这些都属于引擎的外部资源,实际区分并没有那么明显,因为内建资源,也可以导出成资源文件,无论内建还是外部的资源,最后都是需要由游戏逻辑去统筹调配的。
三、场景的基础要素与组件
场景的基础要素囊括了在游戏界面上,我们能看见的东西,包括镜头,这些集成到unity引擎的GameObject菜单里,而组件,这些集成在Component菜单的要素就成为一个初学比较难于理解和掌握的点。
这涉及到,我们是如何描述这个世界的,特别是对物体的描述,一般我们都采用名称+属性的方式去描述物体,从拆解和建造的角度来看,有时候我们所指的物体并不是单个个体,而是多个个体的复合体,比如房子,尽管在unity里并不是严格按照这种方式来描述的,但是逻辑上大体是一致的,Component是对GameObject的描述。GameObject Empty是最基本的游戏物体,所以它只有位置及角度之类的属性,根据不同的基础要素,都默认带有不同的属性。
在Unity中,主要的逻辑就是给物体添加组件,也就是在现实中对物体进行属性描述,只有我们对物体某种属性建立了认知,我们才能在这个角度上改变世界。组件,就是我们让游戏引擎理解我们对物体的描述的方式。