zl程序教程

您现在的位置是:首页 >  Javascript

当前栏目

unity3d-常用组件

2023-03-14 22:52:48 时间

v

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);
OverlapPointCollider2D 与该点重叠的碰撞体。 ✔
举例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、参数


image.png

用法:

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

Physics.Linecast ✔

1、参数


image.png

用法:

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、参数


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,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📡📡📡

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

代码:

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、静态函数


image.png

5、运算符


image.png

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 ✔当前加载的场景总数。
sceneCountInBuildSettingsBuild 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(只读)。
  • 公共函数

image.png

  • 静态函数

image.png