独立游戏开发者!进化之路!
Unity
开源游戏引擎
安装
使用UnityHub安装
许可证激活
激活个人版许可证
Unity工程
创建项目时可以创建2D\3D项目,但创建完成后项目结构是相同的,区别在于视图不同,例如图像时作为纹理还是精灵图导入。
创建了3D的项目也可以直接改为3D
创建项目时可以选择使用PlasticSCM进行版本管理
3D or 2D
Unity将游戏场景分为了五类:
- 全3D
 - 正交3D
 - 包含3D图形的2D玩法
 - 包含视差效果的的2D玩法
 - 全2D
 
上述前4项均需要以3D模式创建项目。
项目结构
Unity创建的3D项目大致包含如下一些结构:
1  | Assets // 资源目录,例如场景、脚本、模型等等资源文件均存放于此  | 
如果想要移动工程的话,只需要将Assets和Library移动出去即可
Unity界面

- © Game 视图通过场景摄像机模拟最终渲染的游戏的外观效果。单击 Play 按钮时,模拟开始。
 - (D) Scene 视图可用于直观导航和编辑场景。根据正在处理的项目类型,Scene 视图可显示 3D 或 2D 透视图。
 - (G) The Project 窗口 展示项目文件中Assets文件夹下可以再项目中使用的资源。当往项目中引入资源时,它们会出现在这里
 
脚本创建
在Assets目录下可以通过右键来创建C#脚本文件,双击打开后,会直接跳到VS,实际上VS在其中只起到编辑器的功能
如果要使用其他的编辑工具,可以在Edit -> proferences -> External Tools -> External Script Editor来修改
Unity程序
Rigidbody2D
velocity- 用来设置刚体的速度
 - 其值为一个
Vector2对象用来表示一个2维向量 - 包含两个属性
x,y分别代表两个轴上的分量 
Input
获取键盘输入
GetKey(name)- 其中name可以为KeyCode.Space等对象
 - 该函数能够监听从键盘按下到键盘抬起整个过程的事件
 - 即只要不松开键盘就一直能够监听到
 
GetKeyDown(name)- 监听键盘按下事件
 
GetKeyUp(name)- 监听键盘抬起事件
 
GetButtonDonw(name)- name为字符串,用于监听
"jump"等Unity预定义键盘映射 
- name为字符串,用于监听
 GetAxis(name)- name为字符串
 "Horizontal"等坐标轴变化,使用左右键等Unity预定义为Horizontal的按键可观测其变化- 值为-1~1间的小数
 - 可以理解为监听某个轴上的加速度,加速度逐渐增大,最大值为1最小值为-1
 - 松开后值会逐渐衰减,按下后值会逐渐增大
 
GetAxisRaw(name)- 同上
 - 但取值为-1~1的整数
 
MonoBehaviour
生命周期:
- Start()
- 第一帧加载结束后调用
 
 - Update()
- 加载每一帧时调用
 
 
GetComponent
该方法会搜索当前对象下指定类的Component并返回对象
GetComponent<class>()
封装
public与private
两者的区别除了面对对象中的访问区别外
设置为public的属性可以在Unity的物体对象的脚本中看到,并且进行赋值
但private的属性并不会在其中显示
例如GridBody刚体对象属性,通常设为public,这样我们就能很轻松的在Unity中将精灵的刚体推拽给它以赋值
但很多时候,属性应该默认为private,同时又需要再Unity中显示我们就需要使用SerializeField:
1  | using System.Collections;  | 
Unity中public的属性是默认序列化的,如果不希望public的属性被显示,则需要使用[HidenInInspector]进行隐藏
该特性脱胎于C#的Attribute,类似于python的修饰器,以及java的注解
1  | // 定义  |