目录
[光泽反射(Glossy Reflection)选项](#光泽反射(Glossy Reflection)选项)
[三、 legacy 立方体贴图资源(Legacy Cubemap Assets)](#三、 legacy 立方体贴图资源(Legacy Cubemap Assets))
前言
立方体贴图(Cubemap)是 Unity 中一种特殊的纹理类型,由 6 个正方形纹理组成,用于模拟环境反射效果。这 6 个纹理分别对应一个虚拟立方体的 6 个面,覆盖了上下、左右、前后六个方向的视野,能够精准捕捉物体周围的环境信息。立方体贴图广泛应用于天空盒、环境反射等场景,为 3D 场景增添真实的光影交互效果。
本文将详细介绍立方体贴图的创建方法、特性及使用场景。
一、立方体贴图的基本概念
立方体贴图是由 6 个正方形纹理组成的集合,这 6 个纹理分别代表虚拟立方体的 6 个面,对应世界坐标系的 6 个方向(上、下、左、右、前、后)。当物体需要表现反射效果时,立方体贴图可以模拟出物体 "反射周围环境" 的视觉效果,让场景更具真实感。

常见应用场景包括:
- 天空盒(Skybox):作为场景的背景,模拟无限远处的天空和环境;
- 环境反射:让金属、水面等反光表面反射周围环境,提升材质真实度;
- 反射探针(Reflection Probes):结合探针烘焙场景反射信息,优化动态物体的反射效果。
二、从纹理创建立方体贴图
从纹理导入是创建立方体贴图最快捷的方式。Unity 支持多种预设的立方体贴图布局,步骤如下:

- 将纹理文件导入 Unity 项目,在 Project 窗口中选中该纹理;
- 在 Inspector 窗口的导入设置中,将 Texture Type 设为 "Default""Normal Map" 或 "Single Channel";
- 将 Texture Shape 设为 "Cube",Unity 会自动将纹理解析为立方体贴图;
- Unity 会根据纹理的宽高比自动检测布局,无需手动调整。
支持的纹理布局
Unity 支持多种常见的立方体贴图纹理布局:

- 十字布局:包括垂直十字和水平十字(6 个面以十字形排列);
- 行列布局:6 个面以一行或一列的形式排列;
- 经纬线布局(LatLong):也称为圆柱形布局,常见于全景图;
- 球面映射(SphereMap):球形环境映射纹理。


导入后,纹理会自动转换为可用的立方体贴图,可直接用于天空盒或反射效果。
光泽反射(Glossy Reflection)选项

若立方体贴图用于反射探针(Reflection Probes),建议勾选 Glossy Reflection 选项。该选项会对立方体贴图的 mipmap 级别进行特殊处理(高光卷积),使其能模拟不同光滑度表面的反射效果(例如粗糙表面的模糊反射和光滑表面的清晰反射)。
三、 legacy 立方体贴图资源(Legacy Cubemap Assets)
Unity 也支持通过 6 张独立纹理创建立方体贴图(传统方式),步骤如下:

- 选择菜单 Assets > Create > Legacy > Cubemap,创建一个新的立方体贴图资源;
- 在 Inspector 窗口中,将 6 张纹理分别拖入 "Right""Left""Top""Bottom""Front""Back" 对应的插槽中;
- 配置参数:
- Face Size:每个面的像素宽高(纹理会自动缩放以适应此尺寸);
- Mipmap:是否生成 mipmap;
- Linear:是否使用线性颜色空间;
- Readable:是否允许脚本访问像素数据。
注意:推荐使用前文提到的 "Cube" 纹理导入类型创建立方体贴图,这种方式支持纹理压缩、边缘修复、光泽反射卷积及 HDR 立方体贴图,性能和效果更优。
四、其他创建方法:从场景生成立方体贴图
通过脚本从 Unity 场景中生成立方体贴图是一种灵活的方式。使用 Camera.RenderToCubemap 函数,可以从场景中任意位置捕捉 6 个方向的图像并生成立方体贴图。
例如,通过添加菜单命令快速生成:
csharp
using UnityEngine;
using UnityEditor;
public class RenderCubemapWizard : ScriptableWizard
{
public Camera renderCamera;
public Cubemap cubemap;
void OnWizardCreate()
{
if (renderCamera == null)
renderCamera = Camera.main;
if (cubemap == null)
{
Debug.LogError("请指定一个立方体贴图资源");
return;
}
renderCamera.RenderToCubemap(cubemap);
}
[MenuItem("GameObject/Render to Cubemap")]
static void RenderCubemap()
{
ScriptableWizard.DisplayWizard<RenderCubemapWizard>("渲染到立方体贴图", "渲染");
}
}
该脚本会在菜单栏添加 "GameObject/Render to Cubemap" 选项,通过相机拍摄场景并生成立方体贴图。
总结
立方体贴图是 Unity 中实现环境反射和天空盒的核心工具,通过本文介绍的方法,你可以根据需求选择合适的方式创建立方体贴图:从预设纹理导入、通过 6 张独立纹理组合,或从场景实时生成。合理使用立方体贴图能显著提升场景的视觉真实感,尤其在模拟金属、玻璃、水面等反光材质时效果显著。在实际开发中,建议优先使用 "Cube" 纹理导入类型,并结合反射探针优化动态反射效果。