Unity核心概念①
一、工具栏
二、父子关系
在Hierarchy窗口中拖动对象到另一对象中可以构建父子关系。
1.子对象会随着父对象的变化而变化。
2.子对象Inspector窗口中Transform信息是相对父对象的。
3.Pivot(轴心点) 指的是一个游戏对象(GameObject)的局部坐标系的原点(0, 0, 0)。它是物体旋转、缩放和移动等变换操作的参考点和中心点。
Global,称为世界坐标系(World Space),是场景中一个唯一的、固定的、绝对的参考系。它的原点 (0, 0, 0)
是整个 Unity 场景的中心点,它的三个轴(X, Y, Z)方向是永恒不变的。
三、反射机制
Unity引擎本质是一个软件,使用它时是处于运行中的,我们是在一个运行中的软件里制作游戏的。Unity开发的本质就是在Unity引擎的基础上利用反射和引擎提供的各种功能进行的拓展开发。
反射的概念:程序正在运行时,可以查看其它程序集或者自身的元数据。一个运行的程序查看本身或者其它程序的元数据的行为就叫做反射在程序运行时,通过反射可以得到其它程序集或者自己程序集中代码的各种信息,比如类、函数、变量、对象等等。我们可以实例化它们,执行它们,操作它们。
四、游戏场景
场景中对象的本质:GameObject类对象是Unity引擎提供给我们的作为场景中所有对象的根本
在游戏场景中出现一个对象。不管是图片、模型、音效、摄像机等等都是依附于GameObject对象的
1.Unity帮助我们实现了对象查找和关联,可以修改Inspector面板中Transform的内容。利用反射,已知对象,类名,变量名,通过反射为该对象设置变量值。
2.新建一个脚本后,添加给一个指定的GameObject对象。利用反射:已知类名,可以获取所有公共成员,故可以在Inspector面板上创建各公共字段信息。
游戏场景的本质:后缀为.unity
它的本质就是一个配置文件,Unity有一套自己识别处理它的机制,但是本质就是把场景对象相关信息读取出来,通过反射来创建各个对象关联各个脚本对象。
Unity的工作机制:本质就是利用反射动态的创建GameObject对象并且关联各种C#脚本对象在其上,让不同的GameObject对象各司其职扮演好自己的角色,根据Unity提供以及我们书写的脚本(C#脚本)呈现一出游戏戏剧。其中对于一个演员来说,GameObject和Transform是必不可少的关键因素。
五、预制体
预制体(Prefab)就是预先设置好的物体。的本质是一个可重复使用的游戏对象模板。当你需要在场景中多次使用同一个游戏对象时,你不需要每次都从头开始创建和配置它。只需要;精心制作好一个样本。将这个样本保存成一个 Prefab 文件(后缀为 .prefab
)。在场景中需要的地方,实例化这个 Prefab。
六、资源的导入与导出
Unity 项目中的 Assets 文件夹里的几乎所有文件都是资源,导入(Import)就是指将外部创建的文件引入到 Unity 项目中的过程。导出(Export)则是指将 Unity 中的资源提取出来,用于其他软件或分发给其他人的过程。
导入资源:
1.在操作系统中复制你的资源文件(如一个 .fbx
模型或 .png
图片)。
2.在 Unity 编辑器的 Project 窗口中,粘贴到目标文件夹。
3.或者,直接拖拽文件/文件夹从系统桌面到 Unity 的 Project 窗口。
导出资源:
1.在 Project 窗口中选择你想要导出的一个或多个资源/文件夹。
2.右键点击,选择Export Package...
。
3.在弹出的窗口中,你可以勾选哪些依赖项要一起打包(Unity会自动分析依赖关系,非常方便)。
4.点击 Export...
,选择一个保存位置,即可生成一个 .unitypackage
文件。
七、脚本
创建规则:
1.不在VS中创建脚本。
2.可以放在Assets文件夹下的任何位置(建议同一文件夹管理)。
3.类名和文件名必须一致,不然不能挂载(因为反射机制创建对象,会通过文件名去找Type)。
4.建议不要使用中文名命名。
5.没有特殊需求,不用管命名空间。
6.创建的脚本默认继承MonoBehavior。
MonoBehavior 基类:
1.创建的脚本默认都继承 MonoBehaviour 继承了它才能够挂载在 GameObject上.
2.继承了 MonoBehavior 的脚本不能 new 只能挂载GameObject上。
3.继承了 MonoBehavior 的脚本不要去写构造函数,因为不会去 new 它,写构造函数没有任何意义。
4.继承了 MonoBehavior 的脚本可以在一个对象上挂多个(如果没有加 DisallowMultipleComponent 特性)。
5.继承 MonoBehavior 的类也可以再次被继承,遵循面向对象继承多态的规则。
不继承MonoBehavior 的类:
1.不能挂载在GameObject上。
2.可以根据自己的想法编写,如果要使用需要自己new。
3.一般是单例模式的类(用于管理模块)或者结构类(用于存储数据)。
4.不用保留默认出现的几个函数。