Component
- ✨学习阶段我会不断的更新新的内容,文章如有误请指正,如果觉得对你有用,请点赞收藏关注一波,谢谢支持
- ⚖⚖⚖Rigidbody
-
- 变量
- 公共函数
- 消息
- 公共函数/2D
- 静态函数/2D
- 射线
-
- RaycastHit/2D
-
- Physics/2D
-
- Physics.Raycast/2D ✔
-
- Physics.Linecast ✔
-
- Physics.RaycastAll
-
- Ray/Ray2D1
-
- 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
- 通过物理模拟控制对象的位置。
- 向对象添加 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 |
- |
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
- 此类包含在开发游戏时可使调试变得更轻松的方法。
静态函数
静态函数 |
作用 |
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。 ✔ |
Dot跳到这里的(二二、绕开敌人的攻击点,免伤害)简单说明 |
两个向量的点积。 ✔ |
RotateTowards |
将向量 current 朝 target 旋转。 |
Slerp |
在两个向量之间进行球形插值。 |
SlerpUnclamped |
在两个向量之间进行球形插值。 |
SmoothDamp |
随时间推移将一个向量逐渐改变为所需目标。 |
5、运算符
运算符名 |
作用 |
operator - |
将一个向量减去另一个向量。 |
operator != |
如果向量不同,则返回 true。 |
operator * |
将向量乘以一个数值。 |
operator / |
将向量除以一个数值。 |
operator + |
将两个向量相加。 |
operator == |
如果两个向量大致相等,则返回 true。 |
String (UI的处理) ✔
变量 |
|
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、lockStatepublic static CursorLockMode lockState ;
CursorLockMode枚举类型
1、变量
变量名 |
作用 |
None |
光标行为未修改。 |
Locked |
将光标锁定在该游戏窗口的中心。 |
Confined |
将光标限制在游戏窗口中。 |
2、静态函数
函数名 |
作用 |
SetCursor |
将鼠标光标设置为给定纹理。 |
代码演示:
//将光标锁定在该游戏窗口的中心。
Cursor.lockState = CursorLockMode.Locked;