草庐IT

unity3d-常用组件

SYFStrive 2023-07-07 原文

Component🔐🔐🔐

✨学习阶段我会不断的更新新的内容,文章如有误请指正,如果觉得对你有用,请点赞收藏关注一波,谢谢支持😘

提示:以下是本篇文章正文内容

Rigidbody⚖⚖⚖

  • 描述
  1. 通过物理模拟控制对象的位置。
  2. 向对象添加 Rigidbody 组件后,其运动将受到 Unity 物理引擎的控制。即使不添加任何代码,Rigidbody 对象也受到向下的重力,并在与其他对象碰撞时作出反应(如果也存在适当的 Collider 组件)。
  3. Rigidbody 还有一个脚本 API,让您能够向对象施加力,并以逼真的物理效果对其进行控制。例如,可以根据车轮施加的力来指定汽车的行为。根据这些信息,物理引擎可以处理汽车运动的大多数其他方面,因此汽车可进行逼真的加速并适当地响应碰撞。
  4. 在脚本中,建议使用 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. 用于从射线投射获取信息的结构。

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

参数作用
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📡📡📡

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

静态函数

静态函数作用
DrawLine在指定的起始点与结束点之间绘制一条直线。 ✔
DrawRay在世界坐标中绘制一条从 start 到 start + dir 的直线。 ✔
Log将消息记录到 Unity 控制台。 ✔
ClearDeveloperConsole将错误从开发者控制台中清除。

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

静态函数名作用
Distance返回 a 与 b 之间的距离。 ✔
Lerp在两个点之间进行线性插值。 ✔
LerpUnclamped在两个向量之间进行线性插值。
Normalize使该向量的 膜 为 1。 ✔
Dot跳到这里的(二二、绕开敌人的攻击点,免伤害)简单说明两个向量的点积。 ✔
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. 运行时的场景管理。

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静态函数 以累加方式加载场景。

  • 描述
  1. 命名空间 using UnityEngine;、using UnityEngine.SceneManagement;
  2. 在播放器中加载场景时使用。
  3. 通过 LoadSceneMode 选择在使用 SceneManager.LoadScene 时加载哪种类型的场景。可用模式为单模式和附加模式。
  4. 单模式将加载一个标准的 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

  • 描述
  1. 用于设置光标(鼠标指针)的光标 API。
  2. 支持 macOS、Windows 和 Linux 上的硬件光标。在不支持的平台上回退到软件光标。
  3. Windows 应用商店应用程序:仅支持一个通过 PlayerSettings.defaultCursor 设置的硬件光标,在运行时使用 Cursor.SetCursor 创建的光标被视为软件光标。
  4. 用作光标的纹理应在其导入设置中作此标记。

1、静态变量

变量名作用
lockState 简单用法确定硬件指针是否锁定到视图的中心、受限于窗口或者根本不受限制。
visible确定硬件指针是否可见。

1.1、lockState👉public static CursorLockMode lockState ;

CursorLockMode枚举类型

1、变量

变量名作用
None光标行为未修改。
Locked将光标锁定在该游戏窗口的中心。
Confined将光标限制在游戏窗口中。

2、静态函数

函数名作用
SetCursor将鼠标光标设置为给定纹理。

代码演示

//将光标锁定在该游戏窗口的中心。
Cursor.lockState = CursorLockMode.Locked;

Quaternion

  • 描述
  1. 四元数用于表示旋转。
  2. 它们结构紧凑,不受万向锁影响,可以轻松插值。 Unity 内部使用四元数来表示所有旋转。
  3. 它们基于复数,不容易理解。 您几乎不会有机会访问或修改单个四元数分量(x、y、z、w); 大多数情况下,您只需要获取现有旋转(例如,来自 Transform),然后使用它们构造新的旋转 (例如,在两个旋转之间平滑插值)。 您绝大多数时间使用的四元数函数为: Quaternion.LookRotation、Quaternion.Angle、Quaternion.Euler、Quaternion.Slerp、Quaternion.FromToRotation 和 Quaternion.identity。(其他函数仅用于一些十分奇特的用例。)
  4. 您可以使用 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 不受限制。

有关unity3d-常用组件的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  3. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  4. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  5. unity---接入Admob - 2

    目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里​编辑 3.解析依赖到项目中

  6. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  7. [Vuforia]二.3D物体识别 - 2

    之前说过10之后的版本没有3dScan了,所以还是9.8的版本或者之前更早的版本。 3d物体扫描需要先下载扫描的APK进行扫面。首先要在手机上装一个扫描程序,扫描现实中的三维物体,然后上传高通官网,在下载成UnityPackage类型让Unity能够使用这个扫描程序可以从高通官网上进行下载,是一个安卓程序。点到Tools往下滑,找到VuforiaObjectScanner下载后解压数据线连接手机,将apk文件拷入手机安装然后刚才解压文件中的Media文件夹打开,两个PDF图打印第一张A4-ObjectScanningTarget.pdf,主要是用来辅助扫描的。好了,接下来就是扫描三维物体。将瓶

  8. python - Ruby 或 Python 的 3d 游戏引擎? - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion是否有适用于这些的3d游戏引擎?

  9. 电脑怎么截图?进来看(8种常用截图方法) - 2

    电脑上可以截取图片吗?如果可以,该如何操作呢?相信很多小伙伴都只知道一两种截图的方式,知道的并不全面。其实,电脑上有多种方式截图的,而且非常方便。电脑怎么截图?今天我们就来教大家如何使用电脑截取图片的8种常用方式!操作环境:演示机型:Delloptiplex7050系统版本:Windows10方法一:系统自带截图具体操作:同时按下电脑的自带截图键【Windows+shift+S】,可以选择其中一种方式来截取图片:截屏有矩形截屏、任意形状截屏、窗口截屏和全屏截图。 方法二:QQ截图具体操作:在电脑登录QQ,然后同时按下【Ctrl+Alt+A】,可以任意截图你需要的界面,可以把截图的页面直接下载,

  10. Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板 - 2

    写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c

随机推荐