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、lockState👉public static CursorLockMode lockState ;
- 2、静态函数
- Quaternion
✨学习阶段我会不断的更新新的内容,文章如有误请指正,
提示:以下是本篇文章正文内容
Rigidbody⚖⚖⚖
- 描述
- 通过物理模拟控制对象的位置。
- 向对象添加 Rigidbody 组件后,其运动将受到 Unity 物理引擎的控制。即使不添加任何代码,Rigidbody 对象也受到向下的重力,并在与其他对象碰撞时作出反应(如果也存在适当的 Collider 组件)。
- Rigidbody 还有一个脚本 API,让您能够向对象施加力,并以逼真的物理效果对其进行控制。例如,可以根据车轮施加的力来指定汽车的行为。根据这些信息,物理引擎可以处理汽车运动的大多数其他方面,因此汽车可进行逼真的加速并适当地响应碰撞。
- 在脚本中,建议使用 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、变量
变量 | 作用 |
collider | 命中的 Collider。 |
distance | 从射线原点到撞击点的距离。 |
normal | 射线命中的表面的法线。 |
point | 世界空间中射线命中碰撞体的撞击点。 |
rigidbody | 命中的碰撞体的 Rigidbody。如果该碰撞体未附加到刚体,则值为 /null/。 |
transform | 命中的刚体或碰撞体的 Transform。 |
简单用法
Physics/2D
1、变量
变量 | 作用 |
AllLayers | 用于选择所有层的层遮罩常量。 |
2、静态函数
属性名 | 作用 |
CheckSphere | 如果有任何碰撞体与世界坐标系中由 position 和 radius 界定的球体重叠,则返回 true。 ✔ |
简单用法p1 | - |
OverlapSphere | 检测球体上的一点返回数组,可以拿到检测到的G,T等等 ✔ |
简单用法p2 | - |
OverlapBoxNonAlloc | 查找与给定盒体接触或位于盒体内部的所有碰撞体,并将它们存储到缓冲区中。 |
OverlapSphereNonAlloc | 计算与球体接触或位于球体内部的碰撞体,并将它们存储到提供的缓冲区中。 |
2D | - |
OverlapCircle | 检查某碰撞体是否位于一个圆形区域内。 ✔ |
举例 | Physics2d.OverlapCircle(位子,距离,layerMask mask); |
OverlapPoint | Collider2D 与该点重叠的碰撞体。 ✔ |
举例 | Physics2D.OverlapPoint(cursorPos(鼠标点检测碰撞体)); |
OverlapCapsuleAll | 获取位于某胶囊体区域内的所有碰撞体的列表。 |
用法:
//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<Rigidbody>().velocity = (hit.point - transform.position) * speed;
}
Debug📡📡📡
- 描述
- 此类包含在开发游戏时可使调试变得更轻松的方法。
静态函数
静态函数 | 作用 |
DrawLine | 在指定的起始点与结束点之间绘制一条直线。 ✔ |
DrawRay | 在世界坐标中绘制一条从 start 到 start + dir 的直线。 ✔ |
Log | 将消息记录到 Unity 控制台。 ✔ |
ClearDeveloperConsole | 将错误从开发者控制台中清除。 |
Vector3📍📍📍
- 描述
- 用于表示 3D 向量和点。
- Unity 内部使用该结构传递 3D 位置和方向。 此外,它还包含用于执行常见向量操作的函数。
- 除了下面列出的函数以外,也可以使用其他类操作向量和点。 例如,对于旋转或变换向量和点来说,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。 ✔ |
两个向量的点积。 ✔ | |
RotateTowards | 将向量 current 朝 target 旋转。 |
Slerp | 在两个向量之间进行球形插值。 |
SlerpUnclamped | 在两个向量之间进行球形插值。 |
SmoothDamp | 随时间推移将一个向量逐渐改变为所需目标。 |
MoveTowards | 计算 current 指定的点与 target 指定的点之间的位置,移动距离不超过 maxDistanceDelta 指定的距离。 |
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、静态变量
变量名 | 作用 |
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静态函数 以累加方式加载场景。
- 描述
- 命名空间 using UnityEngine;、using UnityEngine.SceneManagement;
- 在播放器中加载场景时使用。
- 通过 LoadSceneMode 选择在使用 SceneManager.LoadScene 时加载哪种类型的场景。可用模式为单模式和附加模式。
- 单模式将加载一个标准的 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
- 描述
- 用于设置光标(鼠标指针)的光标 API。
- 支持 macOS、Windows 和 Linux 上的硬件光标。在不支持的平台上回退到软件光标。
- Windows 应用商店应用程序:仅支持一个通过 PlayerSettings.defaultCursor 设置的硬件光标,在运行时使用 Cursor.SetCursor 创建的光标被视为软件光标。
- 用作光标的纹理应在其导入设置中作此标记。
1、静态变量
变量名 | 作用 |
lockState 简单用法 | 确定硬件指针是否锁定到视图的中心、受限于窗口或者根本不受限制。 |
visible | 确定硬件指针是否可见。 |
1.1、lockState👉public static CursorLockMode lockState ;
CursorLockMode枚举类型
1、变量
变量名 | 作用 |
None | 光标行为未修改。 |
Locked | 将光标锁定在该游戏窗口的中心。 |
Confined | 将光标限制在游戏窗口中。 |
2、静态函数
函数名 | 作用 |
SetCursor | 将鼠标光标设置为给定纹理。 |
代码演示:
//将光标锁定在该游戏窗口的中心。
Cursor.lockState = CursorLockMode.Locked;
Quaternion
- 描述
- 四元数用于表示旋转。
- 它们结构紧凑,不受万向锁影响,可以轻松插值。 Unity 内部使用四元数来表示所有旋转。
- 它们基于复数,不容易理解。 您几乎不会有机会访问或修改单个四元数分量(x、y、z、w); 大多数情况下,您只需要获取现有旋转(例如,来自 Transform),然后使用它们构造新的旋转 (例如,在两个旋转之间平滑插值)。 您绝大多数时间使用的四元数函数为: Quaternion.LookRotation、Quaternion.Angle、Quaternion.Euler、Quaternion.Slerp、Quaternion.FromToRotation 和 Quaternion.identity。(其他函数仅用于一些十分奇特的用例。)
- 您可以使用 Quaternion.operator * 对旋转进行旋转,或对向量进行旋转。
注意,Unity 使用的是标准化的四元数。
- 变量
变量名 | 作用 |
eulerAngles | 返回或设置旋转的欧拉角表示。 |
normalized | 返回该四元数,并且量值为 1(只读)。 |
- 公共函数
函数名 | 作用 |
SetFromToRotation | 创建一个从 fromDirection 旋转到 toDirection 的旋转。 |
SetLookRotation | 使用指定的 forward 和 upwards 方向创建旋转。 |
ToAngleAxis | 将旋转转换为“角-轴”表示形式(角度以度为单位)。 |
ToString | 返回该四元数的整齐格式化的字符串。 |
- 静态函数
函数名 | 作用 |
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 不受限制。 |