unity3d-常用组件

简介: unity3d-常用组件
OverlapSphereNonAlloc 计算与球体接触或位于球体内部的碰撞体,并将它们存储到提供的缓冲区中。
2D -
GetInstanceID 返回对象的实例 ID。
ToString 返回对象的名称。

静态函数/2D


image.png

射线🐍🐍🐍


RaycastHit/2D


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

1、变量


image.png

简单用法

Physics/2D


1、变量


image.png

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//检测周围是否有友军boolTankCurrentPos(Vector3pos)
{
三个参数说明:那个位置、距离、表示Layer层:这里表示除了第8层外其他的都做检测returnPhysics.CheckSphere(pos, 50, ~(1<<8));
}
//p2两个参数说明:起始位置、距离varcolliders=Physics.OverlapSphere(transform.position, distance);

Physics.Raycast/2D ✔


1、参数


image.png

用法:

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

Physics.Linecast ✔


1、参数


image.png

用法:

1.如果有任何碰撞体与startend之间的线相交,则返回true。usingUnityEngine;
usingSystem.Collections;
publicclassExampleClass : MonoBehaviour{
publicTransformtarget;
voidUpdate()
    {
if (Physics.Linecast(transform.position, target.position))
        {
Debug.Log("blocked");
        }
    }
}

Physics.RaycastAll


1、参数


image.png

Ray/Ray2D1


1、参数


image.png

image.png

2、公共函数


image.png

射线小案例😀

说明:从摄像机的位置发射子弹向目标点发射

Camera的相关转化可以跳到我的博客Camera看说明

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

Debug📡📡📡


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

静态函数


image.png

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 分量创建新向量。

代码:

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

4、静态函数


image.png

5、运算符


image.png

String (UI的处理) ✔


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

代码:

usingUnityEngine;
usingSystem.Collections;
publicclassExampleClass : MonoBehaviour{
voidStart()
    {
strings="hello";
Debug.Log(s);s//printshelloss=string.Format("{0} {1}", s, "world");
Debug.Log(s);
//printshelloworlds=string.Concat("hello", "world");
Debug.Log(s);
//printshelloworlds=s.ToUpper();
Debug.Log(s);
//printsHELLOWORLDs=s.ToLower();
Debug.Log(s);
//printshelloworldDebug.Log(s[1]);
//prints'e'inti=42;
s=i.ToString();
Debug.Log(s);
//prints42s="-43";
i=int.Parse(s);
Debug.Log(i);
//prints-43floatf=3.14159265359F;
s=f.ToString();
Debug.Log(s);
//prints3.141593 (anapproximation)
s="-7.14159265358979";
f=float.Parse(s);
Debug.Log(f);
//prints-7.141593 (anapproximation)
  }
}

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 向此事件添加委托以在卸载场景时收到通知。

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


描述

命名空间 using UnityEngine;、using UnityEngine.SceneManagement;

在播放器中加载场景时使用。

通过 LoadSceneMode 选择在使用 SceneManager.LoadScene 时加载哪种类型的场景。可用模式为单模式和附加模式。

单模式将加载一个标准的 Unity 场景,该场景将独立显示在 Hierarchy 窗口中。附加模式将加载一个显示在 Hierarchy 窗口的场景,而窗口中同时还包含其他活动场景。

变量简单用法

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

代码演示

//异步加载场景搭配协程IEnumeratorTransition(stringname)
    {
if (SceneManager.GetActiveScene().name!=name) {
异步加载场景(跳转场景使用)yieldreturnSceneManager.LoadSceneAsync(name);
创建playerInstantiate(plyerPrefab, getPonTransition(teleporterPos).transform.position, getPonTransition(teleporterPos).transform.rotation);
yieldbreak;
        }
    }
//单模式将加载一个标准的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(只读)。
  • 公共函数

image.png

  • 静态函数

image.png

相关文章
|
2天前
|
编解码 前端开发 人机交互
【Unity 3D】UI系统中UGUI各个组件的详细讲解(附源码 超详细)
【Unity 3D】UI系统中UGUI各个组件的详细讲解(附源码 超详细)
99 0
|
2天前
|
C# 图形学
【Unity 3D】游戏对象、添加删除获取组件、预制体Prefabs简介
【Unity 3D】游戏对象、添加删除获取组件、预制体Prefabs简介
91 0
|
5月前
|
编译器 图形学
Unity用脚本获取物体和组件(下)
Unity用脚本获取物体和组件(下)
107 0
|
5月前
|
图形学
Unity 用脚本获取物体和组件(上)
Unity 用脚本获取物体和组件(上)
141 0
|
5月前
|
图形学
Unity常用组件
Unity常用组件
135 0
|
6月前
|
前端开发 C# 开发工具
Unity快手上手【熟悉unity编辑器,C#脚本控制组件一些属性之类的】
Unity快手上手【熟悉unity编辑器,C#脚本控制组件一些属性之类的】
111 0
|
8月前
|
图形学
|
C# 图形学
Unity通过组件名称字符串添加脚本
通过Type.GetType(string typeName)来得到字符串对应的Type。 Type.GetType(typeName)能获取到自定义类的类型,但是获取Unity的组件不行。 例如Type.GetType(“Rigidbody”)值为null,其实是少了程序集。 string qualifiedName = typeof(Rigidbody).AssemblyQualifiedName; ty 获取Unity的组件程序集全名,再通过Type.GetType()得到的就不为null了。
454 0
Unity通过组件名称字符串添加脚本
|
11月前
|
图形学 索引
【unity每日一记】--transform组件篇
【unity每日一记】--transform组件篇
141 0
|
C# 图形学
unity3d-GameObject组件
unity3d-GameObject组件
unity3d-GameObject组件