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。
静态变量
变量
名称 | 解释 | 备注 |
---|
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会继续做慢慢的补充的
|