using UnityEngine; using UnityEditor; public class RenderSkyboxToCubemap : MonoBehaviour { [MenuItem("Tools/Render Procedural Skybox To Cubemap")] static void RenderToCubemap() { // 创建一个临时摄像机 GameObject go = new GameObject("SkyboxCaptureCamera", typeof(Camera)); Camera cam = go.GetComponent(); cam.clearFlags = CameraClearFlags.Skybox; cam.cullingMask = 0; // 不渲染任何物体,只渲染天空 // 创建 Cubemap int resolution = 1024; Cubemap cube = new Cubemap(resolution, TextureFormat.RGBA32, false); // 渲染天空盒到 Cubemap cam.RenderToCubemap(cube); // 保存为资源文件 string path = "Assets/RenderedSkyboxCubemap.cubemap"; AssetDatabase.CreateAsset(cube, path); AssetDatabase.SaveAssets(); // 清理 GameObject.DestroyImmediate(go); Debug.Log("✅ Skybox 已成功渲染并保存为 Cubemap: " + path); } }