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对象的名称

方法:

名称解释备注
GetInstanceIDGets the instance ID of the object.
ToString返回对象的名称。

静态函数:

名称解释备注
Destroy移除 GameObject、组件或资源。
DestroyImmediate立即销毁对象 /obj/。强烈建议您改用 Destroy。
DontDestroyOnLoad在加载新的 Scene 时,请勿销毁 Object。
FindObjectOfType返回第一个类型为 type 的已加载的激活对象。
FindObjectsOfTypeGets 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。
layerThe layer the GameObject is in.
scene该 GameObject 所属的场景。
sceneCullingMaskUnity 用于确定在哪个场景中渲染该 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 的所有组件。
GetComponentsInChildrenReturns 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 的方法。
CompareTagChecks the GameObject’s tag against the defined tag.
GetComponentReturns the component of type if the GameObject has one attached.
GetComponentInChildrenReturns the Component of type in the GameObject or any of its children using depth first search.
GetComponentInParentReturns the Component of type in the GameObject or any of its parents.
GetComponents返回 GameObject 中类型为 type 的所有组件。
GetComponentsInChildrenReturns 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清除所有子项的父级。
FindFinds 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 不可更新。
isActiveAndEnabledReports whether a GameObject and its associated Behaviour is active and enabled.

ScriptableObject:Object

一个类,如果需要创建无需附加到游戏对象的对象时,可从该类派生。
它对仅用于存储数据的资源最有用。
要轻松创建绑定到项目资源的 ScriptableObject 实例,请参阅 CreateAssetMenuAttribute。

静态函数:

名称解释备注
CreateInstance创建脚本化对象的实例

消息:

名称解释备注
Awake当 ScriptableObject 脚本启动时调用此函数。
OnDestroy当脚本化对象将销毁时调用此函数。
OnDisable当脚本化对象超出范围时调用此函数。
OnEnable当对象加载时调用此函数。
OnValidateEditor-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 分量。
ToStringReturns a formatted string for this vector.

静态函数

名称解释备注
AngleCalculates 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将两个向量的分量相乘。
SignedAngleCalculates 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将旋转转换为“角-轴”表示形式(角度以度为单位)。
ToStringReturns 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。(只读)
backButtonLeavesAppBack 按钮是否应该退出应用程序?仅适用于 Android、Windows Phone 或 Windows 平板电脑。
compass用于访问罗盘的属性(仅限手持设备)。(只读)
compensateSensors该属性控制是否应该对输入传感器补偿屏幕方向。
compositionCursorPosIME 用于打开窗口的当前文本输入位置。
compositionString用户键入的当前 IME 组合字符串。
deviceOrientation操作系统报告的设备的物理方向。(只读)
gyro返回默认陀螺仪。
imeCompositionMode控制 IME 输入组合的启用和禁用。
imeIsSelected用户是否选择了 IME 键盘输入源?
inputString返回该帧输入的键盘输入。(只读)
location用于访问设备位置的属性(仅限手持设备)。(只读)
mousePositionThe 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会继续做慢慢的补充的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值