【文档】Unity学习笔记(持续更新)

编辑器设置

内部类

全局属性/方法

(直接使用的属性/方法)

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

保存射线碰撞信息。

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值