当前位置:   article > 正文

Unity 多图片(带透明通道)合成_unity 图片合成

unity 图片合成

取个巧,利用Camera和Render Texture
在这里插入图片描述
多个2d图片组合成型
在这里插入图片描述
每个Square都单独设置一个层级
在这里插入图片描述
相机设置
在这里插入图片描述
RenderTexture设置,然后将RenderTexture放在一个RawImage上

以下是生成图片的代码


using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System;
public class test2 : MonoBehaviour
{
    public RawImage rawImage;
    public RawImage rawImage2;
    void Start()
    {
        AAAAAA();
    }
    [ContextMenu("合成图片")]
    void AAAAAA()
    {
        Texture2D texture2D = TextureToTexture2D(rawImage2.texture);
        rawImage.texture = texture2D;
        rawImage.SetNativeSize();
        SavePicture(texture2D);

    }
    private Texture2D TextureToTexture2D(Texture texture)
    {
        Texture2D texture2D = new Texture2D(texture.width, texture.height, TextureFormat.RGBA32, false);
        RenderTexture currentRT = RenderTexture.active;
        RenderTexture renderTexture = RenderTexture.GetTemporary(texture.width, texture.height, 32);
        Graphics.Blit(texture, renderTexture);

        RenderTexture.active = renderTexture;
        texture2D.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);
        texture2D.Apply();

        RenderTexture.active = currentRT;
        RenderTexture.ReleaseTemporary(renderTexture);

        return texture2D;
    }
    private void SavePicture(Texture2D texture2D)
    {
        byte[] bytes = texture2D.EncodeToPNG();//然后将这些纹理数据,成一个png图片文件

        string filename = Application.dataPath + "/" + GetDateName() + ".png";

        FileInfo[] fileInfos = new DirectoryInfo(QuickConfig.instance._照片保存路径).GetFiles();
        for (int i = 0; i < fileInfos.Length; i++)
        {
            File.Delete(fileInfos[i].FullName);
        }
        System.IO.File.WriteAllBytes(filename, bytes);

        Debug.Log(string.Format("截屏了一张图片: {0}", filename, bytes));
    }
    /// <summary>
    /// 获取以日期命名的名称
    /// </summary>
    /// <returns>日期命名</returns>
    public static string GetDateName()
    {
        int hour = DateTime.Now.Hour;
        int minute = DateTime.Now.Minute;
        int second = DateTime.Now.Second;
        int year = DateTime.Now.Year;
        int month = DateTime.Now.Month;
        int day = DateTime.Now.Day;
        return string.Format("{0:D4}{1:D2}{2:D2}{3:D2}{4:D2}{5:D2}", year, month, day, hour, minute, second);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70

在这里插入图片描述
左为相机看到的图,右为生成的图

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/98017
推荐阅读
相关标签
  

闽ICP备14008679号