FM/Assets/Test/TestHunHePic.cs

46 lines
1.5 KiB
C#
Raw Permalink Normal View History

2025-05-23 16:24:00 +08:00
using System.IO;
using UnityEngine;
using UnityEngine.UI;
namespace Runtime
{
public class TestHunHePic : MonoBehaviour
{
public Texture2D bottomTexture;
public Texture2D topTexture;
public Shader blendShader;
[ContextMenu("Blend and Export")]
public void BlendAndExport()
{
// 创建临时RenderTexture
RenderTexture rt = new RenderTexture(bottomTexture.width, bottomTexture.height, 0);
// 创建材质并设置纹理
Material blendMaterial = new Material(blendShader);
blendMaterial.SetTexture("_MainTex", bottomTexture);
blendMaterial.SetTexture("_BlendTex", topTexture);
// 执行混合
Graphics.Blit(null, rt, blendMaterial);
// 转换RenderTexture为Texture2D
Texture2D output = new Texture2D(rt.width, rt.height, TextureFormat.ARGB32, false);
RenderTexture.active = rt;
output.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0);
output.Apply();
// 保存为PNG
byte[] bytes = output.EncodeToPNG();
string path = Path.Combine(Application.streamingAssetsPath, "BlendedImage.png");
File.WriteAllBytes(path, bytes);
// 清理资源
RenderTexture.active = null;
DestroyImmediate(rt);
Destroy(output);
Debug.Log($"Saved blended image to: {path}");
}
}
}