Unity3D Unity3D:如何Unity 加载并使用着色器 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 如何Unity 加载并使用着色器 Unity 通过以下方式从构建的应用程序加载已编译的着色器: 1. 当 Unity 加载现场 或运行时资源,它加载所有已编译的着色 将场景或资源的变体放入 CPU 内存中。 2. 默认情况下,Unity 将所有着色器变体解压缩到 CPU 内存的另一个区域中。您可以控制在不同平台上使用的内存着色器量。 3. Unity 第一次需要使用着色器变体渲染几何体时,Unity 会将着色器变体及其数据传递给图形 API 和图形驱动程序。 4. 图形驱动程序创建特定于 GPU 的着色器变体版本,并将其上传到 GPU。 此方法可确保 Unity 和图形驱动程序避免在 Unity 需要它们之前在 GPU 上处理和存储所有着色器变体。但是,当图形驱动程序首次创建特定于 GPU 的着色器变体时,可能会出现明显的停滞。 Unity
Unity3D Unity3D:着色器变体集合 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 着色器变体集合 着色器变体集合实际上是着色器变体的列表。使用着色器变体集合预热着色器变体,或确保运行时需要但在场景中未引用的着色器变体不会从构建中排除(“剥离”)。 创建着色器变体集合资源 可以通过以下方式创建着色器变体集合资源: * 在 Create Asset 菜单中,选择 Shader > Shader Variant Collection。 * Unity 编辑器可以跟踪应用程序在运行时使用哪些着色器变体,并自动创建包含一个着色器变体集合资源来包含这些着色器变体。有关更多信息,请参阅 Graphics 设置:着色器加载。 查看和编辑着色器变体集合 在 Unity 项目中选择着色器变体集合资源时,可以在 Inspector 中对其进行查看和编辑。 使用控件生成要提前加载的 Pass 类型和着色器关键字组合的列表。 也可以使用 ShaderVariantCollection API 来配置着色器变体集合资源。 预热着色器变体集合 为避免在性能开销大时出现明显的停顿,U
Unity3D Unity3D:着色器变体剥离 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 着色器变体剥离 您可以阻止编译着色器变体。这称为剥离。剥离不需要的变体可以大大减少构建时间、文件大小、着色器加载时间和运行时内存使用量。在较大的项目或具有复杂着色器的项目中,这是一个非常重要的考虑因素。 声明着色器关键字时限制着色器变体 声明着色器关键字的方式可以限制它们生成的变体数: * 尽可能使用代替。shader_featuremulti_compile * 确保不使用 定义未使用的关键字。multi_compile * 指示着色器关键字何时仅影响给定的着色器阶段。 有关在手动编码着色器中执行此操作的信息,请参阅在 HLSL 中声明和使用着色器关键字。有关在着色器图中执行此操作的信息,请参阅着色器图:黑板。 在编辑器 UI 中剥离着色器变体 Unity 编辑器 UI 中有多个位置可以配置着色器剥离: * 在图形设置窗口中,配置着色器剥离部分中的设置: * 确保“始终包含着色器”设置中不包含不需要的着色器。 * 与 GPU 实例化、光照贴图和雾相关的条带变体。 *
Unity3D Unity3D:将着色器关键字与材质检查器配合使用 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 将着色器关键字与材质检查器配合使用 在 Unity 编辑器中,当您在材质检查器中查看材质时,可以启用和禁用其本地着色器关键字。这很有用,原因有两个: * 它允许艺术家轻松地为不同的材料设置不同的关键字值,而无需使用代码。 * 当您使用 MaterialPropertyDrawer 启用关键字时,Unity 会自动禁用集中的其他关键字。这可确保在任何时候都只启用集中的一个关键字。[KeywordEnum] 与任何着色器设置或数据一样,着色器关键字仅在着色器源文件中声明为材质属性时在材质检查器中可用。 对于在着色器图中创建的着色器,关键字默认为材质属性。这意味着这些设置在材质检查器中自动可用。若要更改此设置,请打开黑板,然后更改“公开”属性。 对于手动编码的着色器,必须确保 ShaderLab 代码定义表示关键字集的材质属性。材质属性的类型必须为 ,并且必须使用 、 或 MaterialPropertyDrawer 属性才能将其正确公开给检查器。有关更多信息和示例,请参阅 MaterialP
Unity3D Unity3D:将着色器关键字与 C# 脚本结合使用 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 将着色器关键字与 C# 脚本结合使用 您可以启用或禁用着色器关键字。启用或禁用着色器关键字时,Unity 会渲染相应的着色器变体。 本页包含以下信息: * 本地和全局着色器关键字 * 启用和禁用着色器关键字 * 在运行时管理关键字集 本地和全局着色器关键字 当 Unity 在 C# 中表示着色器关键字时,它使用本地着色器关键字和全局着色器关键字的概念。 本地着色器关键字包含在着色器源文件中声明的所有关键字。本地着色器关键字会影响单个着色器或计算着色器。本地关键字可以具有本地或全局范围,这会影响它们是否可以被全局着色器关键字覆盖。 全局着色器关键字充当本地着色器关键字的替代。不要在着色器源文件中声明这些;它们仅存在于 C# 代码中。全局着色器关键字可以同时影响多个着色器和计算着色器。 本地着色器关键字 在着色器源文件中声明着色器关键字时,Unity 在 C# 中使用 LocalKeyword 结构表示此关键字。这称为本地着色器关键字。 的 isOverridable 属性指
Unity3D Unity3D:着色器关键字 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 着色器关键字 着色器关键字允许您在着色器代码中使用条件行为。您可以创建共享一些通用代码的着色器,但在启用或禁用给定关键字时具有不同的功能。您可以与着色器变体一起使用。 本页包含以下信息: * 使用着色器关键字 * 声明着色器关键字 * 使用着色器关键字使行为成为条件 * 启用和禁用着色器关键字 * Unity 的预定义着色器关键字 * 着色器关键字限制 使用着色器关键字 声明着色器关键字 在集合中声明着色器关键字。集合包含互斥关键字。 例如,以下集合包含三个关键字: * COLOR_RED * COLOR_GREEN * COLOR_BLUE 注意:在着色器图中,术语是不同的:一组关键字称为关键字,一组关键字称为状态。在内部,功能是相同的:Unity 以相同的方式编译它们,您使用 C# 脚本的方式使用它们,依此类推。 声明着色器关键字的方式会影响许多因素: * 类型会影响 Unity 为关键字创建着色器变体的方式。 * 范围会影响关键字是本地还是全局。这
Unity3D Unity3D:检查您有多少个着色器变体 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 检查您有多少个着色器变体 您可以使用日志记录和分析工具来检查有多少着色 变体 Unity 编译并确定删除(剥离)变体的方法,以缩短构建时间并减少内存使用量。您可以执行以下操作: * 获取编辑器使用的着色器变体列表 * 获取 Unity 在构建时创建的着色器变体列表 * 获取 Unity 在运行时编译的着色器变体列表 * 检查运行时使用多少内存着色器 * 在运行时突出显示缺少的着色器 获取编辑器使用的着色器变体列表 您可以生成编辑器在现场 视图和游戏视图。为此: 1. 转到编辑>项目设置>图形。 2. 在“着色器加载”下,您可以在“当前跟踪:”旁边查看有多少着色器和着色器变体。 3. 选择保存到资产...以创建着色器变体集合资产。 获取 Unity 在构建时创建的着色器变体列表 构建项目后,打开日志文件并搜索以查看 Unity 编译和剥离了哪些变体。例如:Editor.logCompiling
Unity3D Unity3D:着色器变体 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 着色器变体 着色器变体(有时也称为着色器排列)是将条件行为引入着色器代码的一种方法。 Unity 将着色器源文件编译为着色器程序。每个编译的着色器程序都有一个或多个变体:针对不同条件的不同版本的着色器程序。在运行时,Unity 使用符合当前要求的变体。您可以使用着色器关键字配置变体。 有关着色器代码中的条件以及何时使用哪种技术的一般概述,请参阅着色器代码中的条件。有关 Unity 如何加载着色器变体的更多信息,请参阅着色器加载。 具有大量变体的着色器被称为“大型着色器”或“超级着色器”。 Unity 的标准着色器就是此类着色器的一个示例。 着色器变体的优缺点 着色器变体的主要优点是它们允许您在着色器程序中使用运行时条件,而不会受到动态分支的 GPU 性能影响。着色器变体的主要缺点是,其中大量着色器变体可能会导致构建时和运行时性能问题。 当 Unity 创建着色器变体时,它会使用静态分支来创建多个小型专用着色器程序。在运行时,Unity 使用与条件匹配的着色器程序。这意味着您可以将着色器
Unity3D Unity3D:着色器中的分支 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 着色器中的分支 分支是将条件行为引入着色器代码的一种方法。 本页包含有关以下技术的信息: * 静态分支 * 动态分支 有关着色器代码中的条件以及何时使用哪种技术的一般概述,请参阅着色器代码中的条件。 静态分支 当着色器程序包括在编译时计算的条件时,它使用静态分支。编译器从未使用的分支中排除代码,因此它不会出现在编译的着色器程序中。 在内部,Unity 在创建着色器变体时使用静态分支;但是,静态分支本身没有任何着色器变体的性能缺点。 静态分支的优缺点 静态分支的主要优点是它不会对运行时性能产生负面影响。静态分支的主要缺点是只能在编译时使用它。 静态分支意味着编译器从着色器程序中排除不需要的代码。它会产生仅包含必要代码的小型专用着色器程序。静态分支没有运行时性能成本;事实上,较小的程序可能会导致更快的加载时间和更低的运行时内存使用量。 若要使用静态分支,条件在编译时必须是常量。这意味着您不能使用它在运行时针对不同的条件执行代码。 如何使用静态分支 可以通过以下方式在着色
Unity3D Unity3D:着色器中的条件 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 着色器中的条件 有时,您希望同一着色器在不同情况下执行不同的操作。例如,您可能希望为不同的材质配置不同的设置,为不同的硬件定义功能,或在运行时动态更改着色器的行为。您可能还希望避免在不需要时执行计算成本高昂的代码,例如纹理读取、顶点输入、插值器或循环。 您可以使用条件来定义 GPU 仅在特定条件下执行的行为。 不同类型的条件 若要在着色器中使用条件,可以使用以下方法: * 静态分支:着色器编译器在编译时计算条件代码。 * 动态分支:GPU 在运行时评估条件代码。 * 着色器变体:Unity 使用静态分支将着色器源代码编译为多个着色器程序。然后,Unity 使用在运行时与条件匹配的着色器程序。 何时使用哪种类型的条件 着色器中的条件没有“一刀切”的方法,您应该考虑给定项目中给定着色器的每种方法的优缺点。 请记住以下信息: * 如果您在编译时知道条件(例如,如果您知道您正在为给定硬件构建),那么静态分支可能是最佳选择。静态分支代码易于编写和维护,并且不会对生成时间、文件大小或
Unity3D Unity3D:异步着色器编译 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 异步着色器编译 异步着色器编译是一项仅限于编辑器的功能,当您的 Shader 对象比较复杂,包含大量着色器变体时,此功能可以改进您的工作流程。 本页包含以下信息: * 概述 * 异步着色器编译的工作原理 *为您的项目启用和禁用异步着色器编译 * 为特定渲染调用启用和禁用异步着色器编译 * 为特定 Shader 对象禁用异步着色器编译 * 在 Unity 编辑器中检测异步着色器编译 *编辑器中的高级渲染和异步着色器编译 * 自定义编辑器工具和异步着色器编译 概述 着色器对象可以包含数百或数千个着色器变体。如果编辑器在加载着色器对象时编译了所有变体,则导入过程将非常缓慢。相反,编辑器会在第一次遇到着色器变体时按需编译它们。 编译这些着色器变体可能会导致编辑器停顿几毫秒甚至几秒,具体取决于图形 API 和 Shader 对象的复杂性。为了避免这些停顿,您可以使用异步着色器编译在后台编译着色器变体,同时使用占位 Shader 对象。 异步着色器编译的工作原理 异步着色器编译的工
Unity3D Unity3D:着色器编译 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 着色器编译 概述 每次构建项目时,Unity 编辑器都会编译构建所需的所有着色器:针对每个所需的图形 API 编译每个所需的着色器变体。 当您在 Unity 编辑器中工作时,编辑器不会提前编译所有内容。这是因为为每个图形 API 编译每个变体可能需要很长时间。 相反,Unity 编辑器会这样做: * 当导入一个着色器资源时,会执行一些最小的处理(例如表面着色器生成)。 * 当需要显示着色器变体时,它会检查 Library/ShaderCache 文件夹。 * 如果找到使用相同源代码的先前编译的着色器变体,则会使用该着色器变体。 * 如果没有找到匹配项,则编译所需的着色器变体并将结果保存到缓存中。 * 注意:如果您启用异步着色器编译,它在后台执行此操作并同时显示占位着色器。 着色器编译使用名为 UnityShaderCompiler 的进程。可启动多个 UnityShaderCompiler 编译器进程(通常在机器中每个 CPU 核心对应一个),这样在播放器构建时就可以并行完成着
Unity3D Unity3D:着色器资源 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 着色器资源 着色器资源是 Unity 项目中的资源,它定义 Shader 对象。它是一个扩展名为 .shader 的文本文件。它包含着色器代码。 创建新的着色器资源 要创建新着色器资源,请使用主菜单或 Project View 上下文菜单中的 Assets > Create > Shader。 Inspector 参考 在 Unity 项目中选择着色器资源时,Inspector 会显示有关它定义的 Shader 对象的基本信息。它还提供用于编译和检查已编译代码的控件。 Import Settings Inspector 的 Import settings 部分用于设置着色器资源的默认纹理。每当使用此着色器创建新材质时,都会自动分配这些纹理。 Imported object Inspector 的 Imported object 用于查看和编辑与
Unity3D Unity3D:Shader 类 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 Shader 类 在 Unity 中,当您使用的着色器属于图形管线 的一部分,通常用到 Shader 类的实例。我们将一个 Shader 类的实例称为 Shader 对象。 Shader 对象是 Unity 使用着色器程序的特定方式;它是着色器程序和其他信息的封装器。它允许您在同一个文件中定义多个着色器程序,并告诉 Unity 如何使用它们。 渲染管线兼容性 功能名称内置渲染管线通用渲染管线 (URP)高清渲染管线 (HDRP)自定义 SRPShader 对象是是是是 Shader 对象基础 Shader 对象包含着色器程序、更改 GPU 上设置的指令(统称为渲染状态)以及告诉 Unity 如何使用它们的信息。 您将 Shader 对象与材质共同使用来确定场景的外观。
Unity3D Unity3D:着色器简介 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 着色器简介 着色器程序,通常称为着色器,是在 GPU 上运行的程序。 着色器的类型 在 Unity 中,着色器分为三大类。每个类别的用途不同,使用方式也不同。 * 作为图形管线一部分的着色器是最常见的着色器类型。它们执行一些计算来确定屏幕上像素的颜色。在 Unity 中,通常是通过 Shader 对象使用这种类型的着色器。 * 计算着色器在常规图形管线之外,在 GPU 上执行计算。 * 光线追踪着色器执行与光线追踪相关的计算。 术语 着色器的相关术语可能令人困惑;人们通常使用“着色器”表示不同的内容。 在本文档中,该术语的用法如下: * 着色器或者着色器程序 - 在 GPU 上运行的程序。除非另有说明,否则这意味着着色器程序是图形管线的一部分。 * Shader 对象 - Shader 类的一个实例。Shader
Unity3D Unity3D:加载纹理和网格数据 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 加载纹理和网格数据 Unity 可从磁盘加载纹理和网格数据,并以两种不同方式将数据上传到 GPU:同步或异步。这两个过程称为同步上传管线和异步上传管线。 当 Unity 使用同步上传管线时,在加载和上传数据时无法执行其他任务。这种情况下可能会导致应用程序出现明显的暂停。当 Unity 使用异步上传管线时,数据在后台加载和上传,同时可以执行其他任务。 如果某个纹理或网格适合异步上传管线,则 Unity 会自动使用异步上传管线。如果某个纹理或网格不适合异步上传管线,则 Unity 会自动使用同步上传管线。 工作原理 同步和异步上传管线之间的主要区别是 Unity 在构建时保存数据的位置,这会影响 Unity 在运行时加载数据的方式。 在同步上传管线中,Unity 必须在单个帧中同时加载纹理或网格的元数据(标头数据)和纹素或顶点数据(二进制数据)。在异步上传管线中,Unity 必须在单个帧中仅加载标头数据,并可以在后续帧中将二进制数据流式传输到 GPU。 在同步上传管线中: * 在构建时
Unity3D Unity3D:稀疏纹理 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 稀疏纹理 稀疏纹理 (Sparse Textures)(也称为“区块纹理”或“超级纹理”)是太大而无法完全存入显存的纹理。为了处理它们,Unity 将主纹理分解为更小的矩形部分,称为“区块”(tile)。然后,可根据需要加载各个区块。例如,如果摄像机只能看到稀疏纹理的一小块区域,那么只有当前可见的区块需要加载到内存中。 除了区块特性之外,稀疏纹理的行为与目前所用的任何其他纹理相似。无需进行特殊修改,着色器即可使用它们,而且它们可以有 Mipmap,使用所有纹理过滤模式等。如果由于某种原因无法加载特定的区块,则结果是不明的:有些 GPU 在缺少区块的位置显示黑色区域,但此行为未标准化。 并非所有硬件和平台都支持稀疏纹理。例如,在 DirectX 系统上,它们需要 DX11.2 (Windows 8.1) 以及相当新的 GPU。
Unity3D Unity3D:虚拟纹理错误材质 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 虚拟纹理错误材质 您可以将 Streaming Virtual Texturing (SVT) 与您在 Shader Graph 中创建的着色器一同使用。要使用 SVT 流式传输一个或多个纹理,您需要正确设置您的材质和 Shader Graph。要了解更多信息,请参阅在 Shader Graph 中使用 Streaming Virtual Texturing。 当纹理设置不正确时,Unity 无法渲染材质。相反,Unity 使用紫色和蓝色棋盘图案渲染一个虚拟纹理 (VT) 错误纹理。在您修复验证错误之前,此纹理将保持可见。 The Virtual Texturing error texture:  系统还使用主内存中的一个 CPU 缓存来存储图块页面。一个图块页面包含多个图块,SVT 系统将这些图块一起从磁盘读取到 CPU 缓存中。这提高了从较慢驱动器上的磁盘读取吞吐量的速度。当虚拟纹理系统请求一个图块时,它会读取包含该图块的页面。系统很可能会在接下来的帧中请求该页面中的其他图块,因此 CPU 缓存会保留该页面以避免再次从磁盘读取。CPU 缓存越大,虚拟纹理将页面保留在主内存中的时间就越长。 在渲染具有使用该格式纹理的纹理堆栈的材质时,虚拟纹理会为给定图形格式分配 GPU 缓存。您可以在 HDRP 资源上配置缓存大小(以 MB 为单位),它允许您为每个质量级别设置不同的配置。 您还可以使用 VirtualTexturing.Streaming.SetGPUCacheSettings 方
Unity3D Unity3D:在 Shader Graph 中使用 Streaming Virtual Texturing 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 在 Shader Graph 中使用 Streaming Virtual Texturing 您可以将 Streaming Virtual Texturing (SVT) 与您在 Shader Graph 中创建的着色器一同使用。在开始之前,您必须在您的项目中启用虚拟纹理。内置的高清渲染管线着色器(例如 Lit 和 Unlit)不支持 SVT。 要使用 SVT 流式传输纹理,您必须将纹理添加到虚拟纹理属性。虚拟纹理属性定义了一组相关纹理。要对这些纹理进行采样,请将虚拟纹理属性连接到 Sample Virtual Texture 节点。Sample Virtual Texture 节点将一个 UV 坐标作为输入,并使用该 UV 坐标对所有纹理进行采样。 您应该尽可能将纹理组合到同一个虚拟纹理属性中。
Unity3D Unity3D:在项目中启用 Streaming Virtual Texturing 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 在项目中启用 Streaming Virtual Texturing 要启用 Streaming Virtual Texturing,需要在项目中启用 Virtual Texturing。为此,请转到 Edit > Project Settings > Player 并启用 Virtual Texturing 设置。 Virtual Texturing 是所有平台共享的项目范围设置。不能为不支持 Virtual Texturing 的平台和图形 API 构建播放器。即使在项目中不使用该功能,Virtual Texturing 也可以分配缓冲区等资源,因此,如果不准备使用,请不要启用 Virtual Texturing。 如果在项目中启用 Virtual Texturing,Unity 会添加以下编译器指令: * ENABLE_VIRTUALTEXTURES:
Unity3D Unity3D:Streaming Virtual Texturing 的工作原理 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 Streaming Virtual Texturing 的工作原理 Streaming Virtual Texturing 系统 (SVT) 将纹理划分为图块。 在运行时,当 SVT 对纹理进行采样时,它会执行以下操作: * 它对间接纹理进行采样,计算非虚拟 UV,并使用这些 UV 对缓存纹理进行采样。 * 它将虚拟 UV 转换为图块 ID,并绑定接收这些图块 ID 的附加渲染目标。CPU 将此渲染目标异步复制回主内存,并在单独的线程上进行处理,以创建异步读取管理器的请求,将这些图块从磁盘加载到 GPU 内存的缓存中(如果它们尚未存在)。 这些运行时操作的成本意味着将纹理组合在一起并同时对它们进行采样会更高效。这个过程称为堆叠纹理。使用相同 UV 坐标同时采样的一组纹理称为纹理堆栈。 SVT 在帧渲染期间发出图块请求,因此将请求的图块加载到 GPU 缓存可能需要几毫秒到几秒的时间,
Unity3D Unity3D:Streaming Virtual Texturing 要求和兼容性 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 Streaming Virtual Texturing 要求和兼容性 渲染管线支持 在高清渲染管线 (HDRP) 中,可以在您使用 Shader Graph 创建的着色器中使用 Streaming Virtual Texturing (SVT)。 系统要求 GPU 要求 * GPU 计算 * Texture2DArrays * AsyncReadBack 支持的平台 * Windows * Mac * Linux 支持的图形 API * DirectX 11 * DirectX 12 * Metal * Vulkan 纹理兼容性 * SVT 建立在 Texture2D 上。SVT 纹理通过相同的导入器,这限制了最大纹理大小。SVT 不支持大于 16K
Unity3D Unity3D:立方体贴图数组 推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 立方体贴图数组 立方体贴图数组是一个包含有大小和格式均相同的立方体贴图的数组,GPU 可以将其作为单个纹理资源进行访问。立方体贴图数组通常用于实现高效的反射探针、光照和阴影系统。 在您的 Unity 项目中,Unity 编辑器将立方体贴图数组表示为纹理资源。要配置纹理资源的导入设置,您可以使用 Inspector,或使用 TextureImporter API 编写一个脚本。在 Unity 引擎中,Unity 使用 CubemapArray 类来表示立方体贴图数组。 创建立方体贴图数组 要在项目中创建立方体贴图数组,必须使用脚本。 下面的示例是一个编辑器脚本,该脚本创建一个 CubemapArray 类的实例,用颜色数据填充该实例,然后作为纹理资源保存到项目中。 using UnityEngine; public class CreateCubeArrayTexture : MonoBehaviour { [UnityEditor.MenuItem("CreateExamples