FM/Assets/Test/CanvasToPNGExporter.cs

53 lines
1.8 KiB
C#
Raw Permalink Normal View History

// using UnityEngine;
// using UnityEngine.UI;
// using System.IO;
//
// public class CanvasToPNGExporter : MonoBehaviour
// {
// [Header("导出设置")]
// public Canvas targetCanvas; // 要导出的 Canvas
// public Vector2Int outputResolution = new Vector2Int(1024, 1024);
// public string fileName = "UIExport";
// public string saveFolder = "Exports";
//
// [ContextMenu("导出 Canvas 为图片")]
// public void ExportCanvasToImage()
// {
// if (targetCanvas == null)
// {
// Debug.LogError("❌ 未指定 Canvas");
// return;
// }
//
// // 创建 RenderTexture
// RenderTexture rt = new RenderTexture(outputResolution.x, outputResolution.y, 0, RenderTextureFormat.ARGB32);
// rt.Create();
//
// // ✅ 使用 Unity 6 新功能:将 Canvas 渲染进 RenderTexture
// targetCanvas.RenderToTexture(rt);
//
// // 读取像素数据
// RenderTexture currentRT = RenderTexture.active;
// RenderTexture.active = rt;
//
// Texture2D tex = new Texture2D(outputResolution.x, outputResolution.y, TextureFormat.RGBA32, false);
// tex.ReadPixels(new Rect(0, 0, outputResolution.x, outputResolution.y), 0, 0);
// tex.Apply();
//
// RenderTexture.active = currentRT;
//
// // 保存为 PNG
// string dir = Path.Combine(Application.dataPath, saveFolder);
// Directory.CreateDirectory(dir);
// string fullPath = Path.Combine(dir, fileName + ".png");
//
// File.WriteAllBytes(fullPath, tex.EncodeToPNG());
//
// Debug.Log($"✅ Canvas 导出成功:{fullPath}");
//
// // 清理资源
// rt.Release();
// DestroyImmediate(rt);
// DestroyImmediate(tex);
// }
// }