RenderSkyboxToCubemap.cs 1020 B

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