unity入门API————最常用的基类总结

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会继续做慢慢的补充的

你可能感兴趣的:(Unity学习笔记,unity,游戏引擎)