unity3d-常用组件

Component

  • ✨学习阶段我会不断的更新新的内容,文章如有误请指正,如果觉得对你有用,请点赞收藏关注一波,谢谢支持
  • ⚖⚖⚖Rigidbody
    • 变量
    • 公共函数
    • 消息
    • 公共函数/2D
    • 静态函数/2D
  • 射线
    • RaycastHit/2D
      • 1、变量
    • Physics/2D
      • 1、变量
      • 2、静态函数
    • Physics.Raycast/2D ✔
      • 1、参数
    • Physics.Linecast ✔
      • 1、参数
    • Physics.RaycastAll
      • 1、参数
    • Ray/Ray2D1
      • 1、参数
      • 2、公共函数
        • 射线小案例
  • Debug
    • 静态函数
  • Vector3
    • 1、静态变量
    • 2、变量
    • 3、构造函数 ✔
    • 4、静态函数
    • 5、运算符
  • String (UI的处理) ✔
  • Text (TMP) UI ✔
  • SceneManager场景加载
    • 1、静态变量
    • 2、静态函数
    • 3、Events
      • 2.1 SceneManager.LoadScene静态函数 以累加方式加载场景。
        • 变量简单用法
  • Cursor
    • 1、静态变量
      • 1.1、lockStatepublic static CursorLockMode lockState ;
    • 2、静态函数

✨学习阶段我会不断的更新新的内容,文章如有误请指正,如果觉得对你有用,请点赞收藏关注一波,谢谢支持

提示:以下是本篇文章正文内容

⚖⚖⚖Rigidbody

  • 描述
  1. 通过物理模拟控制对象的位置。
  2. 向对象添加 Rigidbody 组件后,其运动将受到 Unity 物理引擎的控制。即使不添加任何代码,Rigidbody 对象也受到向下的重力,并在与其他对象碰撞时作出反应(如果也存在适当的 Collider 组件)。
  3. Rigidbody 还有一个脚本 API,让您能够向对象施加力,并以逼真的物理效果对其进行控制。例如,可以根据车轮施加的力来指定汽车的行为。根据这些信息,物理引擎可以处理汽车运动的大多数其他方面,因此汽车可进行逼真的加速并适当地响应碰撞。
  4. 在脚本中,建议使用 FixedUpdate 函数来施加力和更改 Rigidbody 设置(而不是使用 Update,Update 用于大多数其他帧更新任务)。这样做的原因是物理更新在测量的时间步骤中执行,而时间步骤与帧更新不一致。FixedUpdate 在每次进行物理更新前调用,因此在该函数中做出的任何更改都将直接处理。

变量

变量 作用
isKinematic 控制物理是否影响刚体。
mass 刚体的质量
position 刚体的位置。
rotation 刚体的旋转。
velocity 刚体的速度矢量。它表示刚体位置的变化率。
2D
simulated 指示物理系统是否应模拟刚体。
sleepMode 刚体最初处于的睡眠状态。
velocity 刚体的线性速度,采用单位/秒形式。

公共函数

公共函数 作用
AddExplosionForce 向模拟爆炸效果的刚体施加力。
AddForce/2D 向 Rigidbody 添加力。
AddRelativeForce/2D 向刚体添加力(相对于其坐标系)。
MovePosition/2D 将运动 Rigidbody 向 position 移动。
MoveRotation/2D 将刚体旋转到 /rotation/。
Sleep 强制刚体进入睡眠状态至少一帧。
SweepTest 测试如果刚体在场景中移动时,是否会与任何对象发生碰撞。
SweepTestAll 与 Rigidbody.SweepTest 类似,但返回所有命中对象。
WakeUp 强制唤醒刚体。
2D
IsAwake 刚体是否处于“唤醒”状态?
IsSleeping 刚体是否处于“睡眠”状态?
IsTouching 检查 collider 是否正在接触附加到该刚体的任何碰撞体。
IsTouchingLayers ✔ 检查附加到该刚体的任何碰撞体是否正在接触指定 layerMask 上的任何碰撞体。
MovePosition 将刚体移动到 /position/。
MoveRotation 将刚体旋转到 /angle/(以度为单位)。
Sleep 使刚体进入“睡眠”状态。
WakeUp 禁用刚体的“睡眠”状态。

消息

消息 作用
OnCollisionEnter 当该碰撞体/刚体已开始接触另一个刚体/碰撞体时,调用 OnCollisionEnter。
OnCollisionExit 当该碰撞体/刚体已停止接触另一个刚体/碰撞体时,调用 OnCollisionExit。
OnCollisionStay 对应正在接触刚体/碰撞体的每一个碰撞体/刚体,每帧调用一次 OnCollisionStay。

公共函数/2D

公共函数 作用
BroadcastMessage 调用此游戏对象或其任何子项中的每个 MonoBehaviour 上名为 methodName 的方法。
GetComponent 如果游戏对象附加了类型为 type 的组件,则将其返回,否则返回 null。
GetComponentInChildren 使用深度首次搜索返回 GameObject 或其任何子项中类型为 type 的组件。
GetComponentInParent 返回 GameObject 或其任何父项中类型为 type 的组件。
GetComponents 返回 GameObject 中类型为 type 的所有组件。
GetComponentsInChildren 返回 GameObject 或其任何子项中类型为 type 的所有组件。
GetComponentsInParent 返回 GameObject 或其任何父项中类型为 type 的所有组件。
SendMessage 调用此游戏对象中的每个 MonoBehaviour 上名为 methodName 的方法。
SendMessageUpwards 调用此游戏对象中的每个 MonoBehaviour 上或此行为的每个父级上名为 methodName 的方法。
TryGetComponent 获取指定类型的组件(如果存在)。
GetInstanceID 返回对象的实例 ID。
ToString 返回对象的名称。

静态函数/2D

静态函数 作用
Destroy 移除 GameObject、组件或资源。
DestroyImmediate 立即销毁对象 /obj/。强烈建议您改用 Destroy。
DontDestroyOnLoad 在加载新的 Scene 时,请勿销毁 Object。
FindObjectOfType 返回第一个类型为 type 的已加载的激活对象。
FindObjectsOfType 返回所有类型为 type 的已加载的激活对象的列表。
Instantiate 克隆 original 对象并返回克隆对象。

射线

RaycastHit/2D

  • 描述
  1. 用于从射线投射获取信息的结构。

1、变量

变量 作用
collider 命中的 Collider。
distance 从射线原点到撞击点的距离。
normal 射线命中的表面的法线。
point 世界空间中射线命中碰撞体的撞击点。
rigidbody 命中的碰撞体的 Rigidbody。如果该碰撞体未附加到刚体,则值为 /null/。
transform 命中的刚体或碰撞体的 Transform。

简单用法

Physics/2D

1、变量

变量 作用
AllLayers 用于选择所有层的层遮罩常量。

2、静态函数

属性名 作用
CheckSphere 如果有任何碰撞体与世界坐标系中由 position 和 radius 界定的球体重叠,则返回 true。 ✔
简单用法p1 -
OverlapSphere 检测球体上的一点返回数组,可以拿到检测到的G,T等等 ✔
简单用法p2 -
2D -
OverlapCircle 检查某碰撞体是否位于一个圆形区域内。 ✔
举例 Physics2d.OverlapCircle(位子,距离,layerMask mask);
OverlapPoint Collider2D 与该点重叠的碰撞体。 ✔
举例 Physics2D.OverlapPoint(cursorPos(鼠标点检测碰撞体));

用法:

//p1
//检测周围是否有友军
bool TankCurrentPos(Vector3 pos)
{
三个参数说明:那个位置、距离、表示Layer层:这里表示除了第8层外其他的都做检测
	return Physics.CheckSphere(pos, 50, ~(1 << 8));
}
//p2
两个参数说明:起始位置、距离
var colliders = Physics.OverlapSphere(transform.position, distance);

Physics.Raycast/2D ✔

1、参数

参数 作用
origin 射线在世界坐标系中的起点。
direction 射线的方向。
maxDistance 射线应检查碰撞的最大距离。
layerMask 层遮罩,用于在投射射线时有选择地忽略碰撞体。
queryTriggerInteraction 指定该查询是否应该命中触发器。
2D -
minDepth 仅包括 Z 坐标(深度)大于或等于该值的对象。
maxDepth 仅包括 Z 坐标(深度)小于或等于该值的对象。

用法:

1、RaycastHit2D hit = Physics2D.Raycast(起始点, 方向, 距离, LayerMask.GetMask("NPC"));

Physics.Linecast ✔

1、参数

参数 作用
start 起点。
end 终点。
layerMask 层遮罩,用于在投射射线时有选择地忽略碰撞体。
queryTriggerInteraction 指定该查询是否应该命中触发器。
hitInfo 如果返回 true,则 hitInfo 将包含有关碰撞体的撞击位置的更多信息(另请参阅:RaycastHit)。

用法:

1.如果有任何碰撞体与 start 和 end 之间的线相交,则返回 true。
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
    public Transform target;
    void Update()
    {
        if (Physics.Linecast(transform.position, target.position))
        {
            Debug.Log("blocked");
        }
    }
}

Physics.RaycastAll

1、参数

参数 作用
ray 光线的起点和方向。
maxDistance 从射线起点开始,允许射线命中的最大距离。
layerMask 层遮罩,用于在投射射线时有选择地忽略碰撞体。
queryTriggerInteraction 指定该查询是否应该命中触发器。

Ray/Ray2D1

1、参数

变量 作用
directi 射线的方向。
origin 射线的原点。
构造函数 作用
Ray 沿着 direction 创建从 origin 开始的射线。

2、公共函数

公共函数 作用
GetPoint 返回射线上 distance 个单位处的点。
ToString 对 于此射线,返回整齐格式化的字符串。

射线小案例

说明:从摄像机的位置发射子弹向目标点发射
Camera的相关转化可以跳到我的博客Camera看说明

ray = Camera.main.ScreenPointToRay(Input.mousePosition);
out :C#的返回值
if(Physics.Raycast(ray,out hit))
{
如果通过射线检测到目标就可以通过hit.找到目标点上的各种组件
	画线测试//通过Game见面可以看到你发出射线的颜色以便判断
	三个参数表示	起始位、射线的末点(世界空间中射线命中碰撞体的撞击点)、颜色
Debug.DrawLine(transform.position, hit.point, Color.red);
	创建小球//基础内容不过多说明
GameObject a=Instantiate(attack, transform.position, Quaternion.identity);
    a.GetComponent().velocity = (hit.point - transform.position) * speed;
}

Debug

  • 描述
  1. 此类包含在开发游戏时可使调试变得更轻松的方法。

静态函数

静态函数 作用
DrawLine 在指定的起始点与结束点之间绘制一条直线。 ✔
DrawRay 在世界坐标中绘制一条从 start 到 start + dir 的直线。 ✔
Log 将消息记录到 Unity 控制台。 ✔
ClearDeveloperConsole 将错误从开发者控制台中清除。

Vector3

  • 描述
  1. 用于表示 3D 向量和点。

  2. Unity 内部使用该结构传递 3D 位置和方向。 此外,它还包含用于执行常见向量操作的函数。

  3. 除了下面列出的函数以外,也可以使用其他类操作向量和点。 例如,对于旋转或变换向量和点来说,Quaternion 和 Matrix4x4 类也很有用。

1、静态变量

静态变量 作用
forward 用于编写 Vector3(0, 0, 1) 的简便方法。
back 用于编写 Vector3(0, 0, -1) 的简便方法。
down 用于编写 Vector3(0, -1, 0) 的简便方法。
up 用于编写 Vector3(0, 1, 0) 的简便方法。
left 用于编写 Vector3(-1, 0, 0) 的简便方法。
right 用于编写 Vector3(1, 0, 0) 的简便方法。
one 用于编写 Vector3(1, 1, 1) 的简便方法。
zero 用于编写 Vector3(0, 0, 0) 的简便方法。
negativeInfinity 用于编写 Vector3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity) 的简便方法。
positiveInfinity 用于编写 Vector3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity) 的简便方法。

2、变量

变量 作用
magnitude 返回该向量的长度。(只读) ✔
normalized 返回 magnitude 为 1 时的该向量。(只读) ✔
sqrMagnitudeP1 返回该向量的平方长度。(只读) ✔

3、构造函数 ✔

构造函数 作用
Vector3P2 使用给定的 x、y、z 分量创建新向量。

代码:

P1
getPlayerStartPoint =原点坐标
if (Vector3.SqrMagnitude(getPlayerStartPoint - transform.position) <= nav.stoppingDistance)
{
	transform.rotation = Quaternion.Lerp(transform.rotation, quaternion, 0.01f);
}
P2
Vector3 pos=new Vector3(x,y,z);

4、静态函数

静态函数名 作用
Distance 返回 a 与 b 之间的距离。 ✔
Lerp 在两个点之间进行线性插值。 ✔
LerpUnclamped 在两个向量之间进行线性插值。
Normalize 使该向量的 膜 为 1。 ✔
Dot跳到这里的(二二、绕开敌人的攻击点,免伤害)简单说明 两个向量的点积。 ✔
RotateTowards 将向量 current 朝 target 旋转。
Slerp 在两个向量之间进行球形插值。
SlerpUnclamped 在两个向量之间进行球形插值。
SmoothDamp 随时间推移将一个向量逐渐改变为所需目标。

5、运算符

运算符名 作用
operator - 将一个向量减去另一个向量。
operator != 如果向量不同,则返回 true。
operator * 将向量乘以一个数值。
operator / 将向量除以一个数值。
operator + 将两个向量相加。
operator == 如果两个向量大致相等,则返回 true。

String (UI的处理) ✔

  • 描述
    将文本表示为一系列 Unicode 字符。
变量
Empty 表示空字符串。(只读)
Length 获取此实例中的字符数(只读)。

代码:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    void Start()
    {

        string s = "hello";
        Debug.Log(s);s
        // prints hellos

        s = string.Format("{0} {1}", s, "world");
        Debug.Log(s);
        // prints hello world

        s = string.Concat("hello", "world");
        Debug.Log(s);
        // prints helloworld

        s = s.ToUpper();
        Debug.Log(s);
        // prints HELLOWORLD

        s = s.ToLower();
        Debug.Log(s);
        // prints helloworld

        Debug.Log(s[1]);
        // prints 'e'

        int i = 42;
        s = i.ToString();
        Debug.Log(s);
        // prints 42

        s = "-43";
        i = int.Parse(s);
        Debug.Log(i);
        // prints -43

        float f = 3.14159265359F;
        s = f.ToString();
        Debug.Log(s);
        // prints 3.141593 (an approximation)

        s = "-7.14159265358979";
        f = float.Parse(s);
        Debug.Log(f);
        // prints -7.141593 (an approximation)
  }
}

Text (TMP) UI ✔

命名空间 using TMPro;
定义: private TMP_Text healchValue;

SceneManager场景加载

  • 描述
  1. 运行时的场景管理。

1、静态变量

变量名 作用
sceneCount ✔ 当前加载的场景总数。
sceneCountInBuildSettings Build Settings 中的场景数量。

2、静态函数

函数名 作用
CreateScene 在运行时使用给定名称创建一个新的空场景。
GetActiveScene ✔ 获取当前活动的场景。
GetSceneAt ✔ 获取 SceneManager 的已加载场景列表中索引处的场景。Scene scene = SceneManager.GetSceneAt(SceneManager.sceneCount - 1);
GetSceneByBuildIndex 从构建索引中获取场景结构。
GetSceneByName 搜索已加载的场景,查找包含给定名称的场景。
GetSceneByPath 搜索所有已加载的场景,查找具有给定资源路径的场景。
LoadScene ✔ 按照 Build Settings 中的名称或索引加载场景。
LoadSceneAsync✔ 在后台异步加载场景。
MergeScenes 这会将源场景合并到 destinationScene 中。
MoveGameObjectToScene 将游戏对象从当前场景移至新场景。
SetActiveScene✔ 将场景设置为活动状态。
UnloadSceneAsync 简单用法 销毁所有与给定场景关联的游戏对象,并将场景从 SceneManager 中移除。
Events
activeSceneChanged 订阅此事件可在活动场景发生变化时收到通知。
sceneLoaded 向此事件添加委托,以在加载场景时收到通知。

3、Events

Events 作用
activeSceneChanged 订阅此事件可在活动场景发生变化时收到通知。
sceneLoaded 向此事件添加委托,以在加载场景时收到通知。
sceneUnloaded 向此事件添加委托以在卸载场景时收到通知。

2.1 SceneManager.LoadScene静态函数 以累加方式加载场景。

  • 描述
  1. 命名空间 using UnityEngine;、using UnityEngine.SceneManagement;
  2. 在播放器中加载场景时使用。
  3. 通过 LoadSceneMode 选择在使用 SceneManager.LoadScene 时加载哪种类型的场景。可用模式为单模式和附加模式。
  4. 单模式将加载一个标准的 Unity 场景,该场景将独立显示在 Hierarchy 窗口中。附加模式将加载一个显示在 Hierarchy 窗口的场景,而窗口中同时还包含其他活动场景。

变量简单用法

变量名 作用
Single 关闭所有当前加载的场景 并加载一个场景。
Additive 将场景添加到当前加载的场景。

代码演示

//异步加载场景搭配协程
  IEnumerator Transition(string name)
    {
        if (SceneManager.GetActiveScene().name != name) {
			异步加载场景(跳转场景使用)
            yield return SceneManager.LoadSceneAsync(name);
			创建player
            Instantiate(plyerPrefab, getPonTransition(teleporterPos).transform.position, getPonTransition(teleporterPos).transform.rotation);
            yield break;
        }
    }
//单模式将加载一个标准的 Unity 场景,该场景将独立显示在 Hierarchy 窗口中。

Cursor

  • 描述
  1. 用于设置光标(鼠标指针)的光标 API。
  2. 支持 macOS、Windows 和 Linux 上的硬件光标。在不支持的平台上回退到软件光标。
  3. Windows 应用商店应用程序:仅支持一个通过 PlayerSettings.defaultCursor 设置的硬件光标,在运行时使用 Cursor.SetCursor 创建的光标被视为软件光标。
  4. 用作光标的纹理应在其导入设置中作此标记。

1、静态变量

变量名 作用
lockState 简单用法 确定硬件指针是否锁定到视图的中心、受限于窗口或者根本不受限制。
visible 确定硬件指针是否可见。

1.1、lockStatepublic static CursorLockMode lockState ;

CursorLockMode枚举类型

1、变量

变量名 作用
None 光标行为未修改。
Locked 将光标锁定在该游戏窗口的中心。
Confined 将光标限制在游戏窗口中。

2、静态函数

函数名 作用
SetCursor 将鼠标光标设置为给定纹理。

代码演示

//将光标锁定在该游戏窗口的中心。
Cursor.lockState = CursorLockMode.Locked;

你可能感兴趣的:(Unity引擎,c#,unity,游戏引擎)