Contents
  1. 1. Roll a ball
  2. 2. Space Shooter

手撸了官方两个例子后稍微回忆一下

Roll a ball

U3D入门第一课,大概讲了一个Unity游戏的基本组成,比如摄像机,光源,实例化的物体和prefabs等。界面和iOS开发差不多,但是调参时基本上需要你自己定制界面。

物体碰撞模块那时候看的似懂非懂(物理引擎我还停留在box2d.js的阶段),到下一课明白基本Trigger的概念,简单来说,就是你希望Rigidbody(刚体)发生碰撞并由此发生相应的后续运动时,那就取消双方的trigger选项;如果你不希望某个物体因接触而运动时,仅仅是作为一个事件的触发器,那就将其设为Trigger。Trigger可以不受物理效果影响,一些可穿透区域的碰撞检测,可以使用Trigger来进行碰撞检测,包括进入和离开。

Is Kinematic 是否参与物理系统,有用的属性,相当于不受力的『恒星』,因为毕竟也是rigidbody,会有质量等参数。

整个游戏没有流程控制,得分事件绑定随意,最后作为PC/Mac/Linux端导出

Space Shooter

U3D入门第二课,教你做一个基本上完整的Web独立游戏(实际上和PC端相同)。最后补充了把此游戏构建于iOS上的补充步骤,包括控制判断和重启判断。

移动端和PC端的操控方式虽然不同,但是逻辑相同,所以这个部分的个人见解是需要把这个部分分离出来(当然这个时候 Oct.20 我已经知道这个实际上是一种游戏中常见的叫做『命令模式』的设计模式。例子中因为逻辑简单,比较简陋,但是如果你需要例如『改键』操作的话,是必须使用的)。

游戏重点包括光源(主光源,辅光源,还有补光),几种不同的碰撞器(简单的说按照游戏要求碰撞几何越简单越好)

任何游戏逻辑都要绑在一个gameobject上,比如总逻辑要绑在一个空的全局游戏对象上,然后任何全局设定相关的游戏参数可以一同绑在它上面,例如游戏总背景音乐。

所有的Controller都是Mono-Class。在Project里的都是类(当然包括Prefabs,当然),而在Hierachey里的物体都是实例化对象(如果你写过Android或者iOS原生应用就会知道这个概念),所以你把Project里的东西拖动至具体指定对象的时候
(非构造器),会发现拖不进去,这是当然的。这个时候我们要必须给实例化的对象加上tag,然后在Start()中用FindGameObject(s)WithTag(or CompareTag)来找到实例化的一个(类)对象。

PascalCase is better than camelCase for naming methods

U5和U4的方法大相径庭,以新的版本为准。

Contents
  1. 1. Roll a ball
  2. 2. Space Shooter