编辑器设置
内部类
全局属性/方法
(直接使用的属性/方法)
gameObject
物体本身。
transform
当前物体的transform。
CompareTag(String)
同GameObject.CompareTag(String)。
Destroy(GameObject)
销毁物体。
DestroyImmediate(GameObject)
立即销毁物体。
GetComponent<T>()
同GameObject.GetComponent<T>()。
Invoke(String, Number)
延迟调用一个方法。
参数:
String: 调用方法的名称。要求该方法没有参数!
Number: 延迟时间(秒)。
Instantiate(GameObject, Transform)
实例化一个预制体。
参数:
GameObject: 预制体,或者(克隆一个)物体。
Transform: 父级Transform,实例化的物体会成为其子物体,继承其Transform。
返回:GameObject
*返回的物体的name会带(Clone)后缀。
StartCoroutine(Function)
开启一个协程。
参数:
Function: 协程函数。
// 协程函数Foo
IEnumerator Foo()
{
while (true)
{
...
// 等待一秒
yield return new WaitForSeconds(1);
}
}
Camera
GameObject
layer
物体层。
返回: int
物体层序号信息(*详见LayerMask静态类)
gameObject.layer = LayerMask.NameToLayer("Default");
name
物体名称。
tag
物体标签。
AddComponent<T>()
给当前物体添加T组件。
CompareTag(String)
判断当前物体标签是否为String。
CreatePrimitive(PrimitiveType)
创建基本几何体。
参数:
PrimitiveType: 基本几何体枚举,包括Cube,Sphere,Capsule等。
返回:GameObject
Find(String)
获取名称为String的子物体。(低性能,建议使用FindGameObjectWithTag())
FindGameObjectWithTag(String)
获取带有String标签的子物体。
GetComponent<T>()
获取T组件。(可省略实例调用方法,直接使用)
GetComponent<SphereCollider>(); //获取SphereCollider组件对象
Rigidbody
angularVelocity
角速度。(向量,使旋转)
返回:Vector3
centerOfMass
重心。
返回:Vector3
constraints
刚体约束。
返回:int
刚体约束信息(二值int)
// 冻结所有旋转
rigid.constraints = RigidbodyConstraints.FreezeRotation;
// 冻结沿x轴和z轴的旋转,冻结沿y轴的位移
rigid.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezePositionY
velocity
速度。(向量)
返回:Vector3
AddForce(Vector3)
在刚体的重心施加牛顿力。
// 对刚体施加一个向上的力,大小为100牛,持续时间为一个物理帧间隔,默认0.02秒。
Rigidbody rigid = GetComponent<Rigidbody>();
rigid.AddForce(new Vector3(0, 100, 0));
AddForceAtPosition(Vector3, Vector3, *ForceMode)
在刚体的某位置施加牛顿力。
参数:
Vector3: 力向量
Vector3: 位置
ForceMode: 力的模式枚举。
Transform
编辑器
按住ctrl让选中物体以固定值移动/旋转/缩放。
increment snap:该选项可以调整这个固定值。
eulerAngles
欧拉角。
返回:Vector3
forward
获取物体朝向。
返回:Vector3(单位向量,长度为1)
parent
获取父物体。
position
位置。
返回:Vector3
right
获取物体右方向量。
rotation
物体旋转量。
返回:Quaternion
GetChild(int)
获取int号子物体。
Vector3
向量或位置坐标。(*两者不是同一概念!)
Vector3.up
正Y轴方向的单位向量。
返回:Vector3 (0, 1, 0)
Vector3.zero
表示原点或零向量。
返回:Vector3 (0, 0, 0)
magnitude
获取向量的长度。
normalized
归一化操作,获取当前向量的单位向量(即方向)。(*0向量单位向量为0)
接口/静态类
Cursor
Cursor.visible
指针可见性。
Debug
Debug.DrawLine(Vector3, Vector3, Color, *float)
指定线段起点、终点、颜色,绘制一条线段。
参数:
Vector3: 起点
Vector3: 终点
Color: 颜色
float: 持续时间
Debug.Log(String/number/Object)
控制台输出信息。
Debug.DrawRay(Vector3, Vector3, Color, *float)
指定起点、方向、颜色,绘制一条射线。
参数:
Vector3: 起点
Vector3: 方向
Color: 颜色
float: 持续时间
Input
Input.mousePosition
获取当前鼠标指针在屏幕上的位置。(*Unity中屏幕坐标原点在左下角)
返回:Vector2
Input.GetAxis(String)
获取输入轴的力度。
参数:
String:轴名称,"Horizontal"表示水平轴(对应键盘AD键),”Vertical“表示竖直轴(对应键盘WS键),"Mouse X"表示鼠标横向变化量。
返回:float
-1~1的浮点数,表示移动力度。
使用此函数移动时会有缓动效果,若要去除这种缓动效果,可在编辑器中选择Edit -> Project Settings -> Input Manager -> Axes -> Horizontal/Vertical -> Gravity/Sensitivity,分别将值改为100。(默认为3)
Input.GetButton(String)
判断某键是否被按住。(*按住即返回true)
Input.GetButtonDown(String)
判断某键是否被按下。(*仅按下那一次返回true)
参数:
String: 轴键名称,见Edit -> project settings -> Input Manager
Input.GetButtonDown("jump"); // 判断跳跃键是否被按下
Input.GetKey(KeyCode)
判断某键是否被按住。(*按住即返回true)
Input.GetKeyDown(KeyCode)
判断某键是否被按下。(*仅按下那一次返回true)
参数:
KeyCode: 按键枚举,见下:https://docs.unity3d.com/cn/2021.2/ScriptReference/KeyCode.html
返回:bool
LayerMask
LayerMask.GetMask(String, *...)
获取层遮罩。
参数:
String: 层名称
返回:int
满足条件的层序号(二值存储)。
如:00000000 00110010 表示满足第2、5、6层的条件,序号为50。
int mask = LayerMask.GetMask("Ground", "Player", "Obstacle");
LayerMask.NameToLayer(String, *...)
获取层遮罩。(同LayerMask.GetMask())
LayerMask.LayerToName(int)
通过层遮罩int信息获取层遮罩名称。
Physics
Physics.OverlapSphere(Vector3, float, int)
获取区域覆盖到的所有碰撞体。
参数:
Vector3: 原点
float: 半径
int: 遮罩层序号
返回:Collider[]
满足条件的所有碰撞体集合,以数组表示。
(*类似的,还有OverlapBox()、OverlapCapsule()等)
Physics.Raycast(Ray, out *RaycastHit, *float, *int)
发射一条射线,检测是否集中击中碰撞体/触发器。
参数:
Ray: 射线结构体
RaycastHit: 存储详细碰撞信息,可修改。(不需要使用可忽略此参数)
*float: 最大距离
*int: 层遮罩序号(二值信息int,可用LayerMask.GetMask(...)获取)
返回:bool
是否击中碰撞体/触发器。
// 创建从原点向上的射线
Ray ray = new Ray(Vector3.zero, Vector3.up);
// 获取鼠标位置
Vector2 mousePos = Input.mousePosition;
// 发射射线
Physics.Raycast(ray, 10000, LayerMask.GetMask("Default"));
Physics.Raycast(Vector3, Vector3, *float, *int)
在某点发射一条射线,检测是否集中击中碰撞体/触发器。(*参数中的星号表示该参数可选)
参数:
Vector3: 发射点坐标
Vector3: 发射方向
*float: 最大距离
*int: 层遮罩编号
返回:bool
是否击中碰撞体/触发器。
*其他形式的射线包括SphereCast,BoxCast,CapsuleCast用法类似,不作介绍。
Physics.RaycastAll(Ray, *float, *int)
参数:
Ray: 射线结构体
*float: 最大距离
*int: 层遮罩编号
返回:RaycastHit[]
碰撞信息数组。
Quaternion
四元数
Quaternion.Euler(float, float, float)
将欧拉角转为四元数。
参数:
float, float, float: 分别为x, y, z三个方向的欧拉角分量。
返回:Quaternion
SceneManager
需要头部引用
using UnityEngine.SceneManagement;
SceneManager.LoadScene(String/int)
载入场景。
参数:
String/int: 场景名称/场景编号。
Time
Time.deltaTime
两帧时间间隔。(秒)
Time.fixedDeltaTime
固定时间间隔(用于物理更新),固定值,默认为0.02秒。
*可通过Edit -> project setting -> Time修改。
Time.time
游戏运行时间。(秒)
Time.timeScale
游戏的运行时间倍率。
0:时间停滞
1:正常时间流逝速度
2:2倍速
以此类推
事件函数
LateUpdate()
后更新。调用发生在Update()之后。
OnTriggerEnter(Collider)
触发器接触事件。
参数:
Collider: 接触物体。
结构体
RaycastHit
保存射线碰撞信息。