当前栏目
unity3d-常用组件
v
OverlapSphereNonAlloc | 计算与球体接触或位于球体内部的碰撞体,并将它们存储到提供的缓冲区中。 |
2D | - |
GetInstanceID | 返回对象的实例 ID。 |
ToString | 返回对象的名称。 |
静态函数/2D
射线🐍🐍🐍
RaycastHit/2D
- 描述
- 用于从射线投射获取信息的结构。
1、变量
Physics/2D
1、变量
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、参数
用法:
1、RaycastHit2D hit = Physics2D.Raycast(起始点, 方向, 距离, LayerMask.GetMask("NPC"));
Physics.Linecast ✔
1、参数
用法:
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/Ray2D1
1、参数
2、公共函数
射线小案例😀
说明:从摄像机的位置发射子弹向目标点发射
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📡📡📡
- 描述
- 此类包含在开发游戏时可使调试变得更轻松的方法。
静态函数
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、静态函数
5、运算符
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(只读)。 |
- 公共函数
- 静态函数
相关文章
- 鲜为人知但很有用的 HTML 属性
- 翻转再翻转!有意思的水平横向溢出滚动
- 自定义计数器小技巧!CSS 实现长按点赞累加动画
- 过五关!React高频面试题指南
- 软件开发中的十个认知偏差
- 不需要 JS!仅用 CSS 也能达到监听页面滚动的效果!
- 一文读懂TypeScript类型兼容性
- Vue 的响应式原则与双向数据绑定
- 快速掌握 TypeScript 新语法:Infer Extends
- JWT教你如何证明你是我的人!
- 一篇带给你 V8 GC 的实现
- 面试官:请使用JS完成一个LRU缓存?
- 通过可视化来学习JavaScript事件循环
- 新的跨域策略:使用 COOP、COEP 为浏览器创建更安全的环境
- 为什么有人说 vite 快,有人却说 vite 慢?
- 种草 Vue3 中几个好玩的插件和配置
- 超全面的前端工程化配置指南
- Vue 状态管理未来样子
- Volatile关键字能保证原子性么?
- 面试突击:SpringBoot 有几种读取配置文件的方法?