@Usage

2023-04-07
主要区域
.顶部:菜单栏
.上部:左侧的登陆选项、中间的播放控制、右侧的布局设置
.中间:工作区,包括各种功能视图,如场景、游戏、层级、项目和监视等等
.底部:状态栏;项目的实时情况,如控制台输出和其它操作信息
场景 | Scene |
工具栏
View Tool 移动场景
Move Tool 移动游戏对象
Rotate Tool 旋转游戏对象
Scale Tool 缩放游戏对象
Rect Tool Rect游戏对象
Transform Tool 变形游戏对象
游戏 | Game |
.分辨率:分固定尺寸fixed和固定比例aspect,依据产品定位选择;相应的,画布、布局要配合分辨率统一调整
层级 | Hierarchy |
.以目录树的形式显示所有游戏对象
项目 | Project |
.以文件夹的形式显示所有游戏资源
.选择某个文件夹后,在相邻的资源Asset视图中可以看到其中包含的文件或文件夹
监视 | Inspector |
.选择某个游戏对象后,可以查看和对象关联的所有游戏组件
.通常也称为属性面板
.所有的游戏对象
.在层级Hierarchy空白处右键单击,可以查看所有对象
2D游戏对象
.精灵Sprites类,主要是各种基本几何形状,包括:圆形Circle、矩形Square、胶囊形Capsule等等
. Titlemap类的,用于瓦片地图的创建
3D游戏对象
.球体Sphere
.立方体Cube
.胶囊体Capsule
.圆柱体Cylinder
.平面Plane
灯光 Light
音频 Audio
音频
视频 Video
画布 Canvas
.构建用户界面 UI
.文本、面板、图像、按钮等等
画布
相机 Camera
相机
特效 Effects
.粒子系统Particles
.部分功能元素具备二态性,既有对应的游戏对象,又有对应的游戏组件
.在项目Project空白右键单击,可以查看所有组件
变形 Transform
.位置、缩放、旋转等
.每新建一个游戏对象,都建议初始化Reset属性
变形组件
渲染 Render
.渲染游戏对象;可以指定贴图/材质
.可以使用其它3D软件塑造的模型,如3D MAX或Blender
渲染组件
刚体 Rigidbody
.2D刚体Rigidbody2D;物理2D范畴Physical2D
.3D刚体Rigidbody3D;物理范畴Physical[3D]
刚体组件
碰撞 Colider
.碰撞设置,如碰撞类型、碰撞形状
.区分物理2D范畴Physical2D和物理范畴Physical[3D]
碰撞组件
脚本 Script
.Unity的开发支持两种语言:C#和JavaScript;我们采用C#
.有了脚本的参与,人机交互更加丰富,对象/组件才会变得更加生动、丰满
.每个脚本都是一个类Class;所以文件名第一个字母应该大写[大驼峰]
.每个脚本都是一个组件Component,可以通过GetComponent<脚本文件名>();获取脚本并使用其中定义的函数或变量
.脚本文件名和类名必须一致
.脚本之间需要使用的变量必须是公有的-pubic
.脚本通常需要挂载到某个游戏对象实现逻辑控制;也有单纯的作为数据文件/API使用,此时,主类不需要继承默认的MonoBehaviour
.脚本应根据功能分类存放在不同的文件夹中
材质 Material
.基本的属性,如颜色、质感
.通常以球的形式呈现,也称材质球
物理材质 Physical Material
.携带物理属性的材质,如摩擦、反弹等
动画 Animation
.包括动画器和动画状态机
.一个对象通常有很多动画来体现其动作
.利用动画状态机可以实现功能强大、丰富的效果,如多个动画组合使用形成必杀技效果
导航 Navigation
.实现AI的基础功能组件
.角色的地图漫游、定点移动等
场景 Scene
.可以创建多个场景,丰富游戏体验
.设计形式多样的转场效果
导入包 Import Package | Assets菜单
.导入第三方或自己的资源包
导出包 Export Package | Assets菜单
.导出当前项目,方便共享或保存,下次使用时可以再导入
导入包导出包
资源商店 Asset Store | Window菜单
.官方提供的一个平台,有各种资源供用户使用
.建议先使用免费资源;商业化开发再考虑购买资源
包管理器 Package Manager | Window菜单
.管理Unity系统的资源包
.管理整个项目用到的资源包
资源商店和包管理器
.在File菜单下可以看到对应的操作菜单项-发布设置 Build Setting...
.支持的系统有:
Window
.桌面端;默认类型
.项目发布的名字、LOGO、公司等信息
WEB GL
.HTML版本,桌面端支持还可以;移动端支持不是太好
.推荐直接发布为Android版本或IOS版本
Android
.Android移动端,拥有庞大的用户群
.分享给其它用户直接安装使用;也可以挂到相应的应用商店
.需要下载相应的JDK包
安装依赖
IOS
.IOS移动端
.分享给其它用户直接安装使用;也可以挂到相应的应用商店
快捷键 Shortcut
类别 说明
快速复制当前对象 CTRL+D
添加注释 CTRL+K+C
取消注释 CTRL+K+U
格式化文档 CTRL+K+D
格式化选择 CTRL+K+F
控制台console CTRL+SHIFT+C
聚焦对象
.选择某个对象,将鼠标移动到场景Scene中,按F
对齐相机
.调整好视角后,选择相机,右键菜单选择Align With View,可以快速将相机的视角和当前视图保持一致
.不建议通过Transform调整
预制件 Prefab
.方便统一调整对象
.一个对象如果使用超过2次,就应该考虑把它生成预制件
.方法:拖动层级Hierarchy中的对象至项目Project中,系统自动生成对应对象的预制件,层级中的对象成为预制件的一个实例,颜色变为蓝色,以便和普通对象区分
.每次编辑预制件,实例不会自动更新,需要手动更新
动画 Animation
.创建:选择对象,按CTRL+6或Window->Animation->Animation
.动画事件:可以在播放过程中,添加动画事件
浮点类型 float
.以f结束,如1.2f
.默认是0
整型 int
.没有小数点,如12
.默认是0
布尔类型 bool
.只能是true、false;默认是false
.真:true
.假:false
.0为假,非0为真
字符串类型 string
.复杂数据类型
C#中,字符串必须以双引号"包裹
.默认是null
列表 list
.数据集合,类似数组
.要指明数据项的类型
public List<GameObject> list = new List<GameObject>();
向量类型 Vector
.Vetcor3:3维向量类型,物体的位置position、力force、速度velocity等
.Vetcor2:2维向量类型
.Color
游戏对象 GameObject
组件
.Transform、MeshRenderer、AudioSource、Material、Texture、AudioClip
int age = 10;
float speed = 12f;
bool flag = true;
string uname = "cnplaman";
List<string> list = new List<string>{ "hi", "gl" };
分类
Input事件:系统输入类,包括鼠标、键盘、触碰等
on事件:元素/对象本身触发的事件;以On开头;并作为一个子函数位于主函数 / 主类/top-level的内部;这类事件为对象所有,不能共享
碰撞事件:
OnTriggerEnter
OnTriggerEnter2D
OnCollisionEnter
OnCollisionEnter2D
鼠标事件:
OnMouseDown
OnMouseUp
OnMouseOver
OnMouseDrag
其他事件:OnDestroy
鼠标事件
1.鼠标各键定义
左键:0-the primary button
右键:1-the secondary button
中键:2-the middle button
2.事件类型-返回类型为布尔
.GetMouseButton(0|1|2):按下后会持续检测,类似长按事件
.GetMouseButtonDown(0|1|2):按下后,如果不松开就不再检测,即单击
3.使用
Input.GetMouseButton(num)
Input.GetMouseButtonDown(num)
[]鼠标事件
void Update()
{
      if (Input.GetMouseButtonDown(0))
      {
          Debug.Log("左键按下");
      }
      if (Input.GetMouseButtonDown(1))
      {
          Debug.Log("右键按下");
      }
      if (Input.GetMouseButtonDown(2))
      {
          Debug.Log("中键按下");
      }
}
鼠标事件
键盘事件:
1.使用按键名;更多按键请查阅API或利用代码提示选择
.Space键
.Return键
.Escape键
.UpArrow键
2.事件类型-返回类型为布尔
.GetKeyUp
.GetKeyDown
3.使用
Input.GetKeyUp(KeyCode.Keyname)
[]键盘事件
void Update()
{
      if (Input.GetKeyDown(KeyCode.Escape))
      {
          print("Escape down");
      }
      if (Input.GetKeyDown(KeyCode.KeypadEnter))
      {
          print("Pad Enter down");
      }
      if (Input.GetKeyDown(KeyCode.Return))
      {
          print("Enter down");
      }

}
键盘事件
.调试或系统异常或业务逻辑异常可以使用以下方法调试
Debug.Log()
void Start()
{
  print("app start");
  Debug.Log("hi");
  Debug.LogWarning("hi");
  Debug.LogError("hi");
}
控制台输出
print()
.print()实际上就是调用的Debug.Log()