unity入门API————最常用的基类总结
前言
学校的一个大创项目要用到unity,所以小学一下.但是unity这个体量似乎有点太大了吧…在书店淘了一本张尧写的《Unity3D从入门到实战》,说实在话真的一般,只能领略个unity的大概,所以真要学习还是得看Unity的官方手册,网址如下:(docs.unity.cn/cn).整个学习Unity的过程建议先从粗略了解Unity,然后再顺着一个项目依葫芦画瓢的做一下,能够了解各个的部件和API的作用,然后再顺着之前的项目通过官方手册去系统的学习剩下的知识,构建完整的学习框架.我参照的项目是书上的愤怒的小鸟的项目.接下来的学习就是从这个项目中去一层层抽丝剥茧所了解到的东西,因为是2D项目所以先学unity2D的知识.整个学习笔记系列专拦就是记录自己的学习过程,首先,肯定要从最基础的基类开始学起,所以这篇文章会记录所有基类的学习过程.
最常见的五个API
- Awake:实例化脚本使用
- Start:Update函数第一次运行前使用
- Update:每帧调用一次
- FixedUpdate:每个固定物理时间间隔调用一次
- LateUpdate:每帧调用一次(Update之后)
Object类(引用类型)
Unity可以引用所有对象的类.从 Object 派生的任何公共变量都将在 Inspector 中显示为放置目标,能够从 GUI 设置其值。UnityEngine.Object 是所有 Unity 内置对象的基类。虽然 Object 是一个类,但其本意不是为了在脚本中广泛使用.
变量:
名称 | 解释 | 备注 |
---|---|---|
hideFlags | 该对象应该隐藏、随场景一起保存还是由用户修改? | 参照HideFlags类 |
name | 对象的名称 |
方法:
名称 | 解释 | 备注 |
---|---|---|
GetInstanceID | Gets the instance ID of the object. | |
ToString | 返回对象的名称。 |
静态函数:
名称 | 解释 | 备注 |
---|---|---|
Destroy | 移除 GameObject、组件或资源。 | |
DestroyImmediate | 立即销毁对象 /obj/。强烈建议您改用 Destroy。 | |
DontDestroyOnLoad | 在加载新的 Scene 时,请勿销毁 Object。 | |
FindObjectOfType | 返回第一个类型为 type 的已加载的激活对象。 | |
FindObjectsOfType | Gets a list of all loaded objects of Type type. | |
Instantiate | 克隆 original 对象并返回克隆对象 |
运算函数:
名称 | 解释 | 备注 |
---|---|---|
bool | 该对象是否存在? | |
operator != | 比较两个对象是否引用不同的对象。 | |
operator == | 比较两个对象引用,判断它们是否引用同一个对象。 |
GameObject:Object
Unity 场景中所有实体的基类
变量:
名称 | 解释 | 备注 |
---|---|---|
activeInHierarchy | 定义 GameObject 在 Scene 中是否处于活动状态。 | |
activeSelf | 此 GameObject 的本地活动状态。(只读) | |
isStatic | 获取并设置 GameObject 的 StaticEditorFlags。 | |
layer | The layer the GameObject is in. | |
scene | 该 GameObject 所属的场景。 | |
sceneCullingMask | Unity 用于确定在哪个场景中渲染该 GameObject 的场景剔除遮罩。 | |
tag | 此游戏对象的标签。 | 在start里声明标签(string) |
transform | 附加到此 GameObject 的 Transform |
公共函数:
名称 | 解释 | 备注 |
---|---|---|
AddComponent | 将名为 className 的组件类添加到该游戏对象。 | |
BroadcastMessage | 调用此游戏对象或其任何子项中的每个 MonoBehaviour 上名为 methodName 的方法。 | |
CompareTag | 此游戏对象是否使用 tag 进行了标记? | |
GetComponent | 如果游戏对象附加了类型为 type 的组件,则将其返回,否则返回 null。 | |
GetComponentInChildren | 使用深度首次搜索返回 GameObject 或其任何子项中类型为 type 的组件。 | |
GetComponentInParent | 获取 GameObject 或其任何父项中 Type type 的组件。 | |
GetComponents | 返回 GameObject 中类型为 type 的所有组件。 | |
GetComponentsInChildren | Returns all components of Type type in the GameObject or any of its children children using depth first search. Works recursively. | |
GetComponentsInParent | 返回 GameObject 或其任何父项中类型为 type 的所有组件。 | |
SendMessage | 调用此游戏对象中的每个 MonoBehaviour 上名为 methodName 的方法。 | |
SendMessageUpwards | 调用此游戏对象中的每个 MonoBehaviour 上或此行为的每个父级上名为 methodName 的方法。 | |
SetActive | 根据给定的值 true 或 /false/,激活/停用 GameObject。 | |
TryGetComponent | 获取指定类型的组件(如果存在)。 |
静态函数:
名称 | 解释 | 备注 |
---|---|---|
CreatePrimitive | 创建一个具有原始网格渲染器和相应碰撞体的游戏对象。 | 参照:PrimitiveType类 |
Find | 按 name 查找 GameObject,然后返回它。 | |
FindGameObjectsWithTag | 返回标签为 tag 的活动 GameObjects 的数组。如果未找到任何 GameObject,则返回空数组。 | |
FindWithTag | 返回一个标记为 tag 的活动 GameObject。如果未找到 GameObject,则返回 null。 |
Component:Object
附加到 GameObject 的所有内容(组件)的基本类。
注意,您的代码不会直接创建 Component,而是您编写脚本代码,然后将该脚本附加到 GameObject。 另请参阅:ScriptableObject,通过它可创建不附加到任何 GameObject 的脚本。
变量:
名称 | 解释 | 备注 |
---|---|---|
gameObject | 此组件附加到的游戏对象。始终将组件附加到游戏对象。 | |
tag | 此游戏对象的标签。 | |
transform | 附加到此 GameObject 的 Transform。 |
公共函数:
名称 | 解释 | 备注 |
---|---|---|
BroadcastMessage | 调用此游戏对象或其任何子项中的每个 MonoBehaviour 上名为 methodName 的方法。 | |
CompareTag | Checks the GameObject’s tag against the defined tag. | |
GetComponent | Returns the component of type if the GameObject has one attached. | |
GetComponentInChildren | Returns the Component of type in the GameObject or any of its children using depth first search. | |
GetComponentInParent | Returns the Component of type in the GameObject or any of its parents. | |
GetComponents | 返回 GameObject 中类型为 type 的所有组件。 | |
GetComponentsInChildren | Returns all components of Type type in the GameObject or any of its children using depth first search. Works recursively. | |
GetComponentsInParent | 返回 GameObject 或其任何父项中类型为 type 的所有组件。 | |
SendMessage | 调用此游戏对象中的每个 MonoBehaviour 上名为 methodName 的方法。 | |
SendMessageUpwards | 调用此游戏对象中的每个 MonoBehaviour 上或此行为的每个父级上名为 methodName 的方法。 | |
TryGetComponent | 获取指定类型的组件(如果存在)。 |
Transform:Component
对象的位置、旋转和缩放。
场景中的每个对象都有一个transform。它用于存储和操作对象的位置、旋转和缩放。每个变换都可以有一个父级,让您能够分层应用位置、旋转和缩放。这是“Hierarchy”面板中显示的层级视图。它们还支持枚举器
变量:
名称 | 解释 | 备注 |
---|---|---|
childCount | 父变换具有的子项数。 | |
eulerAngles | 以欧拉角表示的旋转(以度为单位)。 | |
forward | 返回一个标准化矢量,它表示世界空间中变换的蓝轴。 | |
hasChanged | 自上次将标志设置为“false”以来,变换是否发生更改? | |
hierarchyCapacity | 变换的层级视图数据结构的变换容量。 | |
hierarchyCount | 变换的层级视图数据结构中变换的数量。 | |
localEulerAngles | 以欧拉角表示的相对于父变换旋转的旋转(以度为单位)。 | |
localPosition | 相对于父变换的变换位置。 | |
localRotation | 相对于父级变换旋转的变换旋转。 | |
localScale | 相对于 GameObjects 父对象的变换缩放。 | |
localToWorldMatrix | 将点从本地空间转换到世界空间的矩阵(只读)。 | |
lossyScale | 对象的全局缩放。(只读) | |
parent | 变换的父级。 | |
position | 世界空间中的变换位置。 | |
right | 世界空间中变换的红轴。 | |
root | 返回层级视图中最顶层的变换。 | |
rotation | 一个 Quaternion,用于存储变换在世界空间中的旋转。 | |
up | 世界空间中变换的绿轴。 | |
worldToLocalMatrix | 将点从世界空间转换到本地空间的矩阵(只读)。 |
公共函数:
名称 | 解释 | 备注 |
---|---|---|
DetachChildren | 清除所有子项的父级。 | |
Find | Finds a child by name n and returns it. | |
GetChild | 按索引返回变换子项。 | |
GetSiblingIndex | 获取同级索引。 | |
InverseTransformDirection | 将 direction 从世界空间变换到本地空间。与 Transform.TransformDirection 相反。 | |
InverseTransformPoint | 将 position 从世界空间变换到本地空间。 | |
InverseTransformVector | 将 vector 从世界空间变换到本地空间。与 Transform.TransformVector 相反。 | |
IsChildOf | 该变换是否为 parent 的子项? | |
LookAt | 旋转变换,使向前矢量指向 target 的当前位置。 | |
Rotate | 使用 Transform.Rotate 以各种方式旋转 GameObjects。通常以欧拉角而不是四元数提供旋转。 | |
RotateAround | 将变换围绕穿过世界坐标中的 point 的 axis 旋转 angle 度。 | |
SetAsFirstSibling | 将变换移动到本地变换列表的开头。 | |
SetAsLastSibling | 将变换移动到本地变换列表的末尾。 | |
SetParent | 设置变换的父级。 | |
SetPositionAndRotation | 设置变换组件的世界空间位置和旋转。 | |
SetSiblingIndex | 设置同级索引。 | |
TransformDirection | 将 direction 从本地空间变换到世界空间。 | |
TransformPoint | 将 position 从本地空间变换到世界空间。 | |
TransformVector | 将 vector 从本地空间变换到世界空间。 | |
Translate | 根据 translation 的方向和距离移动变换 |
Behaviour:Component
Behaviour 是指可启用或禁用的组件。
另请参阅:MonoBehaviour
变量:
名称 | 解释 | 备注 |
---|---|---|
enabled | 启用的 Behaviour 可更新,禁用的 Behaviour 不可更新。 | |
isActiveAndEnabled | Reports whether a GameObject and its associated Behaviour is active and enabled. |
ScriptableObject:Object
一个类,如果需要创建无需附加到游戏对象的对象时,可从该类派生。
它对仅用于存储数据的资源最有用。
要轻松创建绑定到项目资源的 ScriptableObject 实例,请参阅 CreateAssetMenuAttribute。
静态函数:
名称 | 解释 | 备注 |
---|---|---|
CreateInstance | 创建脚本化对象的实例 |
消息:
名称 | 解释 | 备注 |
---|---|---|
Awake | 当 ScriptableObject 脚本启动时调用此函数。 | |
OnDestroy | 当脚本化对象将销毁时调用此函数。 | |
OnDisable | 当脚本化对象超出范围时调用此函数。 | |
OnEnable | 当对象加载时调用此函数。 | |
OnValidate | Editor-only function that Unity calls when the script is loaded or a value changes in the Inspector. | |
Reset | 重置为默认值。 |
Vector3(值类型)
用于表示 3D 向量和点。
Unity 内部使用该结构传递 3D 位置和方向。 此外,它还包含用于执行常见向量操作的函数。
除了下面列出的函数以外,也可以使用其他类操作向量和点
静态变量:
名称 | 解释 | 备注 |
---|---|---|
back | 用于编写 Vector3(0, 0, -1) 的简便方法。 | |
down | 用于编写 Vector3(0, -1, 0) 的简便方法。 | |
forward | 用于编写 Vector3(0, 0, 1) 的简便方法。 | |
left | 用于编写 Vector3(-1, 0, 0) 的简便方法。 | |
negativeInfinity | 用于编写 Vector3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity) 的简便方法。 | |
one | 用于编写 Vector3(1, 1, 1) 的简便方法。 | |
positiveInfinity | 用于编写 Vector3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity) 的简便方法。 | |
right | 用于编写 Vector3(1, 0, 0) 的简便方法。 | |
up | 用于编写 Vector3(0, 1, 0) 的简便方法。 | |
zero | 用于编写 Vector3(0, 0, 0) 的简便方法。 |
变量:
名称 | 解释 | 备注 |
---|---|---|
magnitude | 返回该向量的长度。(只读) | |
normalized | 返回 magnitude 为 1 时的该向量。(只读) | |
sqrMagnitude | 返回该向量的平方长度。(只读) | |
this[int] | 分别使用 [0]、[1]、[2] 访问 x、y、z 分量。 | |
x | 向量的 X 分量。 | |
y | 向量的 Y 分量。 | |
z | 向量的 Z 分量。 |
构造函数
Vector3:使用给定的 x、y、z 分量创建新向量。
公共函数
名称 | 解释 | 备注 |
---|---|---|
Equals | 如果给定向量与该向量完全相等,则返回 true。 | |
Set | 设置现有 Vector3 的 x、y 和 z 分量。 | |
ToString | Returns a formatted string for this vector. |
静态函数
名称 | 解释 | 备注 |
---|---|---|
Angle | Calculates the angle between vectors from and. | |
ClampMagnitude | 返回 vector 的副本,其大小被限制为 /maxLength/。 | |
Cross | 两个向量的叉积。 | |
Distance | 返回 a 与 b 之间的距离。 | |
Dot | 两个向量的点积。 | |
Lerp | 在两个点之间进行线性插值。 | |
LerpUnclamped | 在两个向量之间进行线性插值。 | |
Max | 返回由两个向量的最大分量组成的向量。 | |
Min | 返回由两个向量的最小分量组成的向量。 | |
MoveTowards | 计算 current 指定的点与 target 指定的点之间的位置,移动距离不超过 maxDistanceDelta 指定的距离。 | |
Normalize | 使该向量的 magnitude 为 1。 | |
OrthoNormalize | 将向量标准化并使它们彼此正交。 | |
Project | 将向量投影到另一个向量上。 | |
ProjectOnPlane | 将向量投影到由法线定义的平面上(法线与该平面正交)。 | |
Reflect | 从法线定义的平面反射一个向量。 | |
RotateTowards | 将向量 current 朝 target 旋转。 | |
Scale | 将两个向量的分量相乘。 | |
SignedAngle | Calculates the signed angle between vectors from and to in relation to axis. | |
Slerp | 在两个向量之间进行球形插值。 | |
SlerpUnclamped | 在两个向量之间进行球形插值。 | |
SmoothDamp | 随时间推移将一个向量逐渐改变为所需目标。 |
运算符:
名称 | 解释 | 备注 |
---|---|---|
operator - | 将一个向量减去另一个向量。 | |
operator != | Returns true if vectors are different. | |
operator * | 将向量乘以一个数值。 | |
operator / | 将向量除以一个数值。 | |
operator + | 将两个向量相加。 | |
operator == | 如果两个向量大致相等,则返回 true。 |
Quaternion(值类型)
四元数用于表示旋转。
它们结构紧凑,不受万向锁影响,可以轻松插值。 Unity 内部使用四元数来表示所有旋转。
它们基于复数,不容易理解。 您几乎不会有机会访问或修改单个四元数分量(x、y、z、w); 大多数情况下,您只需要获取现有旋转(例如,来自 Transform),然后使用它们构造新的旋转 (例如,在两个旋转之间平滑插值)。 您绝大多数时间使用的四元数函数为: Quaternion.LookRotation、Quaternion.Angle、Quaternion.Euler、Quaternion.Slerp、Quaternion.FromToRotation 和 Quaternion.identity。
静态变量
名称 | 解释 | 备注 |
---|---|---|
identity | 单位旋转(只读)。 |
变量
名称 | 解释 | 备注 |
---|---|---|
eulerAngles | 返回或设置旋转的欧拉角表示。 | |
normalized | 返回该四元数,并且量值为 1(只读)。 | |
this[int] | 分别使用 [0]、[1]、[2]、[3] 访问 x、y、z、w 分量。 | |
w | 四元数的 w 分量。请勿直接修改四元数。 | |
x | 四元数的 X 分量。除非您十分了解四元数,否则不要直接进行此种修改。 | |
y | 四元数的 Y 分量。除非您十分了解四元数,否则不要直接进行此种修改。 | |
z | 四元数的 Z 分量。除非您十分了解四元数,否则不要直接进行此种修改。 |
构造函数
Quaternion|使用给定的 x、y、z、w 分量构造新的四元数。
公共函数
名称 | 解释 | 备注 |
---|---|---|
Set | 设置现有四元数的 x、y、z 和 w 分量。 | |
SetFromToRotation | 创建一个从 fromDirection 旋转到 toDirection 的旋转。 | |
SetLookRotation | 使用指定的 forward 和 upwards 方向创建旋转。 | |
ToAngleAxis | 将旋转转换为“角-轴”表示形式(角度以度为单位)。 | |
ToString | Returns a formatted string for this quaternion. |
静态函数
名称 | 解释 | 备注 |
---|---|---|
Angle | 返回两个旋转 a 和 b 之间的角度(以度为单位)。 | |
AngleAxis | 创建一个围绕 axis 旋转 angle 度的旋转。 | |
Dot | 两个旋转之间的点积。 | |
Euler | 返回一个旋转,它围绕 z 轴旋转 z 度、围绕 x 轴旋转 x 度、围绕 y 轴旋转 y 度(按该顺序应用)。 | |
FromToRotation | 创建一个从 fromDirection 旋转到 toDirection 的旋转。 | |
Inverse | 返回 rotation 的反转。 | |
Lerp | 在 a 和 b 之间插入 t,然后对结果进行标准化处理。参数 t 被限制在 [0, 1] 范围内。 | |
LerpUnclamped | 在 a 和 b 之间插入 t,然后对结果进行标准化处理。参数 t 不受限制。 | |
LookRotation | 使用指定的 forward 和 upwards 方向创建旋转。 | |
Normalize | 将此四元数转换为 1,方向相同,但量值为 1。 | |
RotateTowards | 将旋转 from 向 to 旋转。 | |
Slerp | 在四元数 a 与 b 之间按比率 t 进行球形插值。参数 t 限制在范围 [0, 1] 内。 | |
SlerpUnclamped | 在 a 和 b 之间以球形方式插入 t。参数 t 不受限制。 |
运算符
名称 | 解释 | 备注 |
---|---|---|
operator * | 将旋转 lhs 和 rhs 组合到一起。 | |
operator == | 两个四元数是否相等? |
Input
访问输入系统的接口。
使用该类来读取传统游戏输入中设置的轴,以及访问移动设备上的多点触控/加速度计数据。
要读取轴,请将 Input.GetAxis 与以下默认轴之一配合使用: “Horizontal”和“Vertical”映射到游戏杆(D、D、D、D 和箭头键)。 “Mouse X”和“Mouse Y”映射到鼠标增量。 “Fire1”、“Fire2”、“Fire3”映射到 Cmd、Cmd、Cmd 键和三个鼠标或游戏杆按钮。 可以添加新输入轴。
另请参阅:KeyCode,其中列出了所有的按键、鼠标和游戏杆选项。
(https://docs.unity.cn/cn/2021.3/ScriptReference/KeyCode.html)
静态变量
名称 | 解释 | 备注 |
---|---|---|
acceleration | 最近测量的设备在三维空间中的线性加速度。(只读) | |
accelerationEventCount | 上一帧期间进行的加速度测量的数量。 | |
accelerationEvents | 返回上一帧期间进行的加速度测量的列表。(只读)(分配临时变量)。 | |
anyKey | 当前是否有任何键或鼠标按钮处于按下状态?(只读) | |
anyKeyDown | 在用户按任意键或鼠标按钮后的第一帧返回 true。(只读) | |
backButtonLeavesApp | Back 按钮是否应该退出应用程序?仅适用于 Android、Windows Phone 或 Windows 平板电脑。 | |
compass | 用于访问罗盘的属性(仅限手持设备)。(只读) | |
compensateSensors | 该属性控制是否应该对输入传感器补偿屏幕方向。 | |
compositionCursorPos | IME 用于打开窗口的当前文本输入位置。 | |
compositionString | 用户键入的当前 IME 组合字符串。 | |
deviceOrientation | 操作系统报告的设备的物理方向。(只读) | |
gyro | 返回默认陀螺仪。 | |
imeCompositionMode | 控制 IME 输入组合的启用和禁用。 | |
imeIsSelected | 用户是否选择了 IME 键盘输入源? | |
inputString | 返回该帧输入的键盘输入。(只读) | |
location | 用于访问设备位置的属性(仅限手持设备)。(只读) | |
mousePosition | The current mouse position in pixel coordinates. (Read Only). | |
mousePresent | 指示是否检测到鼠标设备。 | |
mouseScrollDelta | 当前的鼠标滚动增量。(只读) | |
multiTouchEnabled | 该属性指示系统是否处理多点触控。 | |
simulateMouseWithTouches | 启用/禁用通过触摸模拟鼠标操作。默认情况下,该选项已启用。 | |
stylusTouchSupported | 当设备或平台支持 Stylus Touch 时,返回 true。 | |
touchCount | 触摸次数。保证在整个帧期间不会更改。(只读) | |
touches | 返回表示上一帧中所有触摸状态的对象列表。(只读)(分配临时变量)。 | |
touchPressureSupported | 供用户检查是否支持触摸压力的 bool 值。 | |
touchSupported | 返回当前正在运行应用程序的设备是否支持触摸输入。 |
静态函数
名称 | 解释 | 备注 |
---|---|---|
GetAccelerationEvent | 返回上一帧期间进行的特定加速度测量。(不分配临时变量)。 | |
GetAxis | 返回由 axisName 标识的虚拟轴的值。 | |
GetAxisRaw | 返回由 axisName 标识的虚拟轴的值(未应用平滑过滤)。 | |
GetButton | 当按住 buttonName 标识的虚拟按钮时,返回 true。 | |
GetButtonDown | 在用户按下由 buttonName 标识的虚拟按钮的帧期间返回 true。 | |
GetButtonUp | 在用户释放由 buttonName 标识的虚拟按钮的第一帧返回 true。 | |
GetJoystickNames | 获取与在输入管理器中配置的轴的索引对应的输入设备名称的列表。 | |
GetKey | 在用户按下 name 标识的键时返回 true。 | |
GetKeyDown | 在用户开始按下 name 标识的键的帧期间返回 true。 | |
GetKeyUp | 在用户释放 name 标识的键的帧期间返回 true。 | |
GetMouseButton | 返回是否按下了给定的鼠标按钮。 | |
GetMouseButtonDown | 在用户按下给定鼠标按钮的帧期间返回 true。 | |
GetMouseButtonUp | 在用户释放给定鼠标按钮的帧期间返回 true。 | |
GetTouch | 调用 Input.GetTouch 以获取 Touch 结构。 | |
IsJoystickPreconfigured | 确定 Unity 是否已预先配置某个特定的游戏杆模型。(仅限 Linux)。 | |
ResetInputAxes | 重置所有输入。调用 ResetInputAxes 后,所有轴和所有按钮都恢复为 0,并且持续一帧时长。 |
后记
这些都是我在学习过程中通过不断的抽丝拨茧总结出来的基础api,为自己以后做项目时做个参考文档,Unity的官方文档翻起来真的是烦死个人.随着逐渐的学习,应该会不断的遇到觉得可以纳入基础api的类,以后对这篇文章的基础api会继续做慢慢的补充的