Unity API
GameObject.FindWithTag
通过Tag名找到游戏对象
1 |
|
FindWithTag | 返回一个标记为 tag 的活动 GameObject。如果未找到 GameObject,则返回 null。 |
---|---|
Find | 按 name 查找 GameObject,然后返回它。 |
Rigidbody
Rigidbody是刚体,可以为游戏对象赋予物理属性,向对象添加 Rigidbody 组件后,其运动将受到 Unity 物理引擎的控制。即使不添加任何代码,Rigidbody 对象也受到向下的重力,并在与其他对象碰撞时作出反应(需有适当的collider)
position | 刚体的位置 |
---|---|
rotation | 刚体的旋转 |
useGravity | 控制重力是否影响该刚体 |
angularVelocity | 刚体的角速度矢量(以弧度/秒为单位) |
velocity | 刚体的速度矢量 |
AddForce | 向 Rigidbody 添加力 |
---|---|
Sleep | 强制刚体进入睡眠状态至少一帧 |
AddTorque | 向刚体添加扭矩 |
Quaternion
在API中的UnityEngine->classes,四元数
1 |
|
Quaternion.LookRotation(dir)使用指定的 forward 和 upwards 方向创建旋转
AngleAxis | 创建一个围绕 axis 旋转 angle 度的旋转 |
---|---|
LookRotation | 使用指定的 forward 和 upwards 方向创建旋转 |
GameObject.GetComponent
GameObject.GetComponent
返回 GameObject 中类型为 type 的所有组件
示例:
1 |
|
ForceMode
位于UnityEngine->Enumerations
使用 ForceMode 指定如何使用 Rigidbody.AddForce 来施加力。
AddForce 函数可定义自己的力矢量,以及选择如何将此力施加于 GameObject(此 GameObject 必须附加有 Rigidbody 组件),从而影响您的 GameObject 的移动方式。
Force | 向此刚体添加连续力,使用其质量 |
---|---|
Acceleration | 向此刚体添加连续加速度,忽略其质量 |
Impulse | 向此刚体添加瞬时力冲击,考虑其质量 |
VelocityChange | 向此刚体添加瞬时速度变化,忽略其质量 |
transform
对象的位置、旋转和缩放
每个变换都可以有一个父级,使得能够分层应用位置、旋转和缩放
parent | 变换的父级 |
---|---|
position | 世界空间中的变换位置 |
rotation | 一个四元数,用于存储变换在世界空间中的旋转 |
localEulerAngles | 以欧拉角表示的相对于父变换旋转的旋转(以度为单位) |
localPosition | 相对于父变换的变换位置 |
localRotation | 相对于父级变换旋转的变换旋转 |
localScale | 相对于父对象的变换缩放 |
childCount | 父变换具有的子项数 |
Camera.ScreenPointToRay
1 |
|
Physics.Raycast
参数:
origin | 射线在世界坐标系中的起点 |
---|---|
direction | 射线的方向 |
maxDistance | 射线应检查碰撞的最大距离 |
layerMask | 层遮罩,用于在投射射线时有选择地忽略碰撞体 |
queryTriggerInteraction | 指定该查询是否应该命中触发器 |
bool 如果射线与任何碰撞体相交,返回 true,否则为 false。
RaycastHit
用于从射线投射获取信息的结构
barycentricCoordinate | 命中的三角形的重心坐标 |
---|---|
collider | 命中的 Collider |
distance | 从射线原点到撞击点的距离 |
lightmapCoord | 撞击点处的 UV 光照贴图坐标 |
normal | 射线命中的表面的法线 |
point | 世界空间中射线命中碰撞体的撞击点 |
rigidbody | 命中的碰撞体的 Rigidbody。如果该碰撞体未附加到刚体,则值为 /null/ |
textureCoord | 碰撞位置处的 UV 纹理坐标 |
textureCoord2 | 撞击点处的辅助 UV 纹理坐标 |
transform | 命中的刚体或碰撞体的 Transform |
triangleIndex | 命中的三角形的索引 |
Collider
所有碰撞体的基类
BoxCollider、SphereCollider、CapsuleCollider、MeshCollider、PhysicMaterial、Rigidbody
如果在游戏过程中需要移动具有 Collider 的对象,还应将 Rigidbody 组件附加到该对象。如果不想使该对象与其他对象进行物理交互,可将 Rigidbody 设置为运动刚体
变量:
attachedRigidbody | 碰撞体附加到的刚体 |
---|---|
bounds | 碰撞体的世界空间包围体积(只读) |
contactOffset | 该碰撞体的接触偏移值 |
enabled | 启用的 Collider 将与其他 Collider 碰撞,禁用的 Collider 不会这样 |
isTrigger | 碰撞体是不是触发器 |
material | 碰撞体使用的材质 |
sharedMaterial | 该碰撞体的共享物理材质 |
消息:
OnCollisionEnter | 当该碰撞体/刚体已开始接触另一个刚体/碰撞体时,调用 OnCollisionEnter |
---|---|
OnCollisionExit | 当该碰撞体/刚体已停止接触另一个刚体/碰撞体时,调用 OnCollisionExit |
OnCollisionStay | 对应正在接触刚体/碰撞体的每一个碰撞体/刚体,每帧调用一次 OnCollisionStay |
OnTriggerEnter | 当 Collider other 事件进入该触发器时调用 OnTriggerEnter |
OnTriggerExit | 当 Collider other 已停止接触该触发器时调用 OnTriggerExit |
OnTriggerStay | 对于正在接触该触发器的每个其他 Collider,“几乎”所有帧都调用 OnTriggerStay。此函数位于物理计时器上,因此它不必运行每个帧 |
继承的成员
变量:
gameObject | 此组件附加到的游戏对象。始终将组件附加到游戏对象 |
---|---|
tag | 此游戏对象的标签 |
transform | 附加到此 GameObject 的 Transform |
hideFlags | 该对象应该隐藏、随场景一起保存还是由用户修改 |
name | 对象的名称 |
公共函数:
BroadcastMessage | 调用此游戏对象或其任何子项中的每个 MonoBehaviour 上名为 methodName 的方法 |
---|---|
CompareTag | 此游戏对象是否使用 tag 进行了标记 |
GetComponent | 如果游戏对象附加了类型为 type 的组件,则将其返回,否则返回 null |
GetComponentInChildren | 使用深度首次搜索返回 GameObject 或其任何子项中类型为 type 的组件 |
GetComponentInParent | 返回 GameObject 或其任何父项中类型为 type 的组件 |
GetComponents | 返回 GameObject 中类型为 type 的所有组件 |
GetComponentsInChildren | 返回 GameObject 或其任何子项中类型为 type 的所有组件 |
GetComponentsInParent | 返回 GameObject 或其任何父项中类型为 type 的所有组件 |
SendMessage | 调用此游戏对象中的每个 MonoBehaviour 上名为 methodName 的方法 |
SendMessageUpwards | 调用此游戏对象中的每个 MonoBehaviour 上或此行为的每个父级上名为 methodName 的方法 |
GetInstanceID | 返回对象的实例 ID |
ToString | 返回 GameObject 的名称 |
静态函数:
Destroy | 删除 GameObject、组件或资源 |
---|---|
DestroyImmediate | 立即销毁对象 /obj/。强烈建议您改用 Destroy |
DontDestroyOnLoad | 在加载新的 Scene 时,请勿销毁 Object |
FindObjectOfType | 返回第一个类型为 type 的已加载的激活对象 |
FindObjectsOfType | 返回所有类型为 type 的已加载的激活对象的列表 |
Instantiate | 克隆 original 对象并返回克隆对象 |
C#
out
out同ref一样,都是有一级地址传递的,也就是,带有这两个修饰符的参数,如果被修改了原来的值,将以新的值作为他的值(在函数执行完毕后,该参数的值将返回给函数调用中使用的变量,有点像C++ &)
在函数中使用out参数时,必须将其看成尚未赋值。也就是说调用代码可以把已赋值的变量用作out参数,但在函数执行时该变量的值会丢失,所以就算在函数外已经初始化,在函数内也要重新初始化
示例:
// 第一行hit不用初始化,参数中hit前加out,尽管Physics.Raycast返回bool,hit已在其中赋值,所以下一个if语句中hit可以调用其对象的属性方法
1 |
|
Unity坐标
四种坐标:
世界坐标(World Space):游戏物体在创造的世界中的坐标
transfrom.position获得的是物体相对于世界坐标的位置
transfrom.localPosition获得的是物体相对于父物体坐标的位置
屏幕坐标(Screen Space):以像素记
视口坐标(Viewport Space):将屏幕坐标单位化
坐标转换:
物体B相对于物体A的局部坐标:A.transform.InverseTransformPoint(B)
屏幕坐标转世界坐标:Camera.main.ScreenToWorldPoint
1 |
|
世界坐标转屏幕坐标:Camera.main.WorldToScreenPoint
1 |
|
Mathf.Clamp
在给定的最小浮点值和最大浮点值之间钳制给定值。如果在最小和最大范围内,则返回给定值
如果给定的浮点值小于最小值,则返回最小值。如果给定值大于最大值,则返回最大值。使用 Clamp 可将某个值限制为最小值和最大值定义的某个范围内
变量
gameObject | 此组件附加到的游戏对象。始终将组件附加到游戏对象。 |
---|---|
tag | 此游戏对象的标签。 |
transform | 附加到此 GameObject 的 Transform。 |
公共函数
BroadcastMessage | 调用此游戏对象或其任何子项中的每个 MonoBehaviour 上名为 methodName 的方法。 |
---|---|
CompareTag | 此游戏对象是否使用 tag 进行了标记? |
GetComponent | 如果游戏对象附加了类型为 type 的组件,则将其返回,否则返回 null。 |
GetComponentInChildren | 使用深度首次搜索返回 GameObject 或其任何子项中类型为 type 的组件。 |
GetComponentInParent | 返回 GameObject 或其任何父项中类型为 type 的组件。 |
GetComponents | 返回 GameObject 中类型为 type 的所有组件。 |
GetComponentsInChildren | 返回 GameObject 或其任何子项中类型为 type 的所有组件。 |
GetComponentsInParent | 返回 GameObject 或其任何父项中类型为 type 的所有组件。 |
SendMessage | 调用此游戏对象中的每个 MonoBehaviour 上名为 methodName 的方法。 |
SendMessageUpwards | 调用此游戏对象中的每个 MonoBehaviour 上或此行为的每个父级上名为 methodName 的方法。 |
继承的成员
变量
hideFlags | 该对象应该隐藏、随场景一起保存还是由用户修改? |
---|---|
name | 对象的名称。 |
公共函数
GetInstanceID | 返回对象的实例 ID。 |
---|---|
ToString | 返回 GameObject 的名称。 |
Component
附加到 GameObject 的所有内容的基本类
注:代码不会直接创建 Component,而是编写脚本代码,然后将该脚本附加到GameObject
Resources
Resources 类允许您查找和访问资源等对象
在编辑器中,Resources.FindObjectsOfTypeAll 可用于定位资源和场景对象
通过 Resources.Load 函数,可访问 Assets 文件夹中处于任意位置的名为“Resources”的文件夹中的所有资源。 可以存在多个“Resources”文件夹,加载对象时,将对每个文件夹进行检查
注意:Assets 中的 Resources 文件夹需要在使用前创建。创建新项目时,不会创建该文件夹
静态函数:(函数调用的结果不会访问或者修改任何对象(非static)数据成员,这样的成员声明为静态成员函数比较好)
FindObjectsOfTypeAll | 返回所有类型为 type 的对象的列表。 |
---|---|
Load | 加载存储在 Resources 文件夹中的 path 处的资源。 |
LoadAll | 加载位于 Resources 文件夹中的 path 处的文件夹中的所有资源,或加载位于该处的文件。 |
LoadAsync | 异步加载存储在 Resources 文件夹中的 path 处的资源。 |
UnloadAsset | 从内存中卸载 /assetToUnload/。 |
UnloadUnusedAssets | 卸载未使用的资源。 |
Laya API
Rigidbody3D
对应于Unity中Rigidbody.AddForce,Rigidbody.AddTorque, Laya提供的类为Rigidbody3D,对应的方法为Rigidbody3D.applyForce,Rigidbody3D.applyTorque
1 |
|