一、基础概念

1、物体与空物体

物体(Game Object),其实是一个节点或容器。一般所谓的“物体”,即有形状的东西,对应的Mesh,网格信息代表了物体(形状)。

空物体(Empty Object),即空对象、空节点。空物体不可见(没有网格),但空物体也有坐标,可以移动。空物体常用于节点的组织和管理,或用于标记一个位置。

2、父子关系

父子关系,指两个物体之间的关系。在Hierarchy窗口中,拖动物体B,到物体A下,子物体会随着父物体一并移动。删除父物体时,子物体也会一并删除。子物体的坐标是相对于父物体的,即相对坐标。

3、世界坐标系与本地坐标系

Global,即世界坐标系。以世界中心为轴,6个方向代表了上、下、东、西、南、北。

Local,即本地坐标系。以物体自身为轴,6个方向代表了上、下、前、后、左、右。

Y轴称为Up,Z轴称为Forward,X轴称为Right。一般地,在建模软件里建模时,模型的正面与Z轴的方向一致。移动一个物体时,一般就是让这个物体向前运动,Forward。

4、轴心与几何中心

Pivot,即轴心。指一个物体的操作基准点。

Center,即几何中心。对于基本体来说,轴心点默认位于几何中心,但并不是所有物体的轴心都在几何中心点。

在Unity中,默认情况下显示的是Pivot操作模式,即轴心模式。另外一种模式是几何中心点模式。可选择切换物体在移动、旋转和缩放时,是以哪个点作为操作基准点。一般使用的是Pivot模式。

5、组件

Component,即组件。代表一个具体功能,例如,Light,光源。Directional Light,平行光源。Mesh Filter,网格过滤器,用来加载网格数据。Mesh Renderer,负责渲染。

二、Unity编辑器

Unity Editor是一个具有“所见即有得”功能的编辑器,可以在其中调整场景的地形、灯光、动画、模型、材质、音频等参数,也包括调整用户在脚本中自定义的参数。这些参数调整的结果,都可以通过编辑器中的动态预览功能进行实时查看。开发者就像造物主,在这里尽情地创造自己的世界。

对于用户的个性化需求,Unity Editor提供编写编辑器脚本,或使用第三方插件的方式来创建属于自己的编辑界面和功能。

unity 单例基类 unity基础_开发者

 

 

Unity Editor

1、Scene - 场景编辑窗口

unity 单例基类 unity基础_开发者_02

 

 

Scene - 场景编辑窗口

Scene窗口是Unity编辑器中最主要的一个窗口,可以通过鼠标拖拽的方式,在窗口里摆放各种Game Object,可视化地编辑场景。它所显示的场景视图,就是开发者所看到的视野。如果以拍摄电影来比喻,Scene view就是在摄影棚中,电影导演的视野。

2、Game - 游戏运行窗口

unity 单例基类 unity基础_文件名_03

 

 

Game - 游戏运行窗口

Game窗口所呈现的是Scene中的摄像机视野里的景象,即游戏真实运行起来后,玩家所看到的景象。开发者不能在此窗口编辑,只能观看。比作电影的话,就是摄像机放映出的影像。

3、Hierarchy - 场景物体列表窗口

unity 单例基类 unity基础_开发者_04

 

 

Hierarchy - 场景物体列表窗口

Hierarchy窗口使用树形结构列出当前场景中的所有Game Object,以及Game Object之间的层级关系。在Scene窗口中有些细小的对象比较难选择,就可以在Hierarchy窗口中进行选择。

4、Inspector - 属性编辑列表窗口

unity 单例基类 unity基础_Game_05

 

 

Inspector - 属性编辑列表窗口

Inspector窗口,即属性面板。当开发者在Scene或Hierarchy窗口中选中一个Game Object,则Inspector里就会显示该Game Object对应的各种属性。可通过底部的Add Component按钮,为选中的Game Object增加需要显示的属性。

5、Project - 项目资源列表窗口

unity 单例基类 unity基础_文件名_06

 

 

Project - 项目资源列表窗口

Project窗口罗列出所有工程中创建或导入的各种资源,包括场景、脚本、材质、音效、贴图等。如果直接将Project中的资源拖入Scene中,则表示将该资源添加进这个当前的游戏场景,同时,也会同步在Hierarchy里显示。

6、Console - 打印输出窗口

Console窗口用于显示代码编译过程中,或者是游戏运行过程中的报错、警告和测试信息,主要用于查错和调试。如果Unity界面中没有Console窗口,可在Window->General->Console中调出此窗口。点击Clear,清除打印信息。

 

 

三、常用组件

1、摄像机

Camera,即摄像机。负责拍摄游戏画面。摄像机的Z轴指向,即为拍摄方向。拍到的画面,呈现在Game窗口中,也就是玩家最终看见的画面。

调整摄像机的角度,可用两种方式。第一种,手动。手工移动、旋转摄像机,对准目标。第二种,GameObject->Align With View,与3D视图对齐。先在3D视图里摆好角度,此为观察者视角,然后选中Main Camera,执行Align With View。此时,摄像机视角与观察者视角完全相同。

2、Transform组件

Transform,即变换组件。物体的基本参数有Position,位置(相对坐标)、Rotation,旋转(欧拉角)、Scale缩放。Transform就是用来描述一个物体在空间中的位置坐标、旋转量和缩放量。所有物体都有Transform组件,而且不能被删除。

3、AudioSource组件

AudioSource组件,用于播放音乐/音效。创建一个物体,Add Component,Audio | Audio Source,将音乐文件(*.mp3/wav/aiff)拖到AudioSource.AudioClip属性。

四、脚本的运行

1、HelloWorld脚本

(1)添加一个脚本文件。右键Create->C# Script后生成的脚本模板,文件名必须规范,文件名即为类名,如Simple。

(2)在VS中编辑代码。双击在VS(Visual Studio)中打开脚本,检查类名与文件名是否一致。C#文件名必须和类名一致,否则无法挂载。如果要修改类名,可在VS中右键重命名。添加一行打印输出,并保存文件。

void Start()
{
    Debug.Log("Hello World!我的第一个脚本!");  /* Debug是Unity API中的一个工具类 */
}

(3)编译代码。编译的过程是自动的,保存脚本,回到Unity界面时会自动重新编译。

(4)挂载脚本。脚本必须挂载到物体上,才会被调用。有两种方法,点击Add Component,选Script->Simple。或者,直接将脚本拖到Inspector窗口的最下方。

(5)运行游戏。点击Play按钮,运行游戏。在Console窗口中,观察输出。再次点击Play按钮,游戏结束运行。

unity 单例基类 unity基础_unity 单例基类_07

 

 

unity 单例基类 unity基础_开发者_08

 

 

Console窗口查看打印输出

2、消息函数

Unity是一个完全面向对象的框架,对象由框架创建,如下图所示。所有的脚本,都统一继承于MonoBehavior,模板中已自动生成Start和Update两个消息函数。

unity 单例基类 unity基础_Game_09

 

 

新建C#脚本后生成的模板

常见的消息函数主要有以下几个:

(1)Awake,初始化,仅执行一次

(2)Start,初始化,仅执行一次

(3)Update,帧更新,每帧调用一次

(4)OnEnable,每当组件启用时调用

(5)OnDisable,每当组件禁用时调用

Awake先于Start调用,两个都是初始化函数,都仅执行一次。它们的区别在于组件的状态,如果脚本所挂载的组件被禁用的话,那么,Start方法不会被调用,而Awake方法总是被调用。

已禁用的组件,其消息函数中的Start方法和Update方法不会被调用。

3、脚本的参数

脚本的参数,用于控制脚本组件的功能。

脚本参数的用法:

(1)参数的名称,即变量名,在脚本中,必须定义为public,才能在检测器中显示。

(2)参数的默认值,即变量的默认值,可以在Reset菜单中重置。

(3)参数的工具提示,可以用[Tooltip("xxxxx")]指定。

五、各类文件

1、资源文件

Assets目录下的文件,即为资源。使用Meta来描述文件,每个资源文件/文件夹,都对应一个*.meta描述文件。

常见的类型有,模型文件Model(*.fbx)、图片文件Texture(*.jpg/png/tif/psd等)、音频文件AudioClip(*.mp3/wav/aiff)、脚本文件Script(*.cs)、材质文件Material(*.mat)、场景文件(*.unity)等等。

2、场景文件

场景文件*.unity,记录了场景中的节点数据。包含场景全局设置、节点、节点下挂载的组件、各组件的参数值等。一个场景往往代表一个关卡,可以创建多个不同的场景。

3、资源包

Unity中的资源包(Unity Package),即对Assets下的资源进行打包。选择一个资源文件,或一个目录。右键,Export Package,生成*.unitypackage资源包。