RenderSkyboxToCubemap.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using UnityEditor;
  4. public class RenderSkyboxToCubemap : MonoBehaviour
  5. {
  6. [MenuItem("Tools/Render Procedural Skybox To Cubemap")]
  7. static void RenderToCubemap()
  8. {
  9. // 创建一个临时摄像机
  10. GameObject go = new GameObject("SkyboxCaptureCamera", typeof(Camera));
  11. Camera cam = go.GetComponent<Camera>();
  12. cam.clearFlags = CameraClearFlags.Skybox;
  13. cam.cullingMask = 0; // 不渲染任何物体,只渲染天空
  14. // 创建 Cubemap
  15. int resolution = 1024;
  16. Cubemap cube = new Cubemap(resolution, TextureFormat.RGBA32, false);
  17. // 渲染天空盒到 Cubemap
  18. cam.RenderToCubemap(cube);
  19. // 保存为资源文件
  20. string path = "Assets/RenderedSkyboxCubemap.cubemap";
  21. AssetDatabase.CreateAsset(cube, path);
  22. AssetDatabase.SaveAssets();
  23. // 清理
  24. GameObject.DestroyImmediate(go);
  25. Debug.Log("✅ Skybox 已成功渲染并保存为 Cubemap: " + path);
  26. }
  27. }
  28. #endif