?public?Texture2D[] t = new Texture2D[4];
private void Start()
{ ?????Texture2D tex? =? ?MergeImage(t);
? ? ? byte[] bytes = tex.EncodeToJPG();
???????string filename =?Application.streamingAssetsPath +? "/Screenshot" + UnityEngine.Random.Range(0,1000) + ".png";
? ????????File.WriteAllBytes(filename , bytes);
}
?public Texture2D MergeImage(Texture2D[] tex) ? ? { ? ? ?? ? ? ? ? if (tex.Length == 0) ? ? ? ? { ? ? ? ? ? ? return null; ? ? ? ? } ? ? ? ? //定义新图的宽高, 合并分为两种情况水平方向合并、垂直方向合并 ? ? ? ? int width = 0, height = 0; ? ? ? ? for (int i = 0; i < tex.Length; i++) ? ? ? ? { ? ? ? ? ? ? //Debug.Log(tex[i].ToString()); ? ? ? ? ? ? //新图的高度 ? ? ? ? ? ? //height += tex[i].height; ? ? ? ? ? ? //if (i > 0) ? ? ? ? ? ? //{ ? ? ? ? ? ? // ? ?//新图的宽度,这里筛选为最宽 ? ? ? ? ? ? // ? ?if (tex[i].width > tex[i - 1].width) ? ? ? ? ? ? // ? ?{ ? ? ? ? ? ? // ? ? ? ?width = tex[i].width; ? ? ? ? ? ? // ? ?} ? ? ? ? ? ? //} ? ? ? ? ? ? //else width = tex[i].width; //只有一张图 ? ? ? ? ? ? //新图的宽度 ? ? ? ? ? ? width += tex[i].width; ? ? ? ? ? ? if (i > 0) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? //新图的高度,这里筛选为最高 ? ? ? ? ? ? ? ? if (tex[i].height > tex[i - 1].height) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? height = tex[i].height; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? ? else height = tex[i].height; //只有一张图 ? ? ? ? }
? ? ? ? //初始Texture2D ? ? ? ? Texture2D texture2D = new Texture2D(width, height); ? ? ? ? int x = 0, y = 0; ? ? ? ? for (int i = 0; i < tex.Length; i++) ? ? ? ? { ? ? ? ? ? ? //取图 ? ? ? ? ? ? Color32[] color = tex[i].GetPixels32(0);
? ? ? ? ? ? //赋给新图 ? ? ? ? ? ? if (i > 0) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? //texture2D.SetPixels32(x, y+=tex[i-1].height, tex[i].width, tex[i].height, color); //高度 ? ? ? ? ? ? ? ? texture2D.SetPixels32(x += tex[i - 1].width, y , tex[i].width, tex[i].height, color); //宽度 ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? { ? ? ? ? ? ? ? ? texture2D.SetPixels32(x, y, tex[i].width, tex[i].height, color); ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? //应用 ? ? ? ? texture2D.Apply(); ? ? ? ? return texture2D; ? ? }
|