? ? 開發游戲時,會遇到戰斗結算,成就等獎勵界面,鼓勵玩家分享到朋友圈,這時通常會在圖片上加上一些內容,比如游戲Logo,二維碼下載等內容。
? ? 現在分享一下我制作游戲分享圖片的過程。
? ? 第一步首先截圖,截屏的方法有一個unity提供的方法,CaptureScreenshot,但并不推薦使用這個方法。一來這就是一個截屏函數,必須放在startcortinoute中,二來耗時比較長。
? 第二種是使用RenderTexture的方法,直接利用相機的渲染輸出到Texture2D中。現假設將兩個相機的內容輸到一個圖片上。
? 主相機視野為:
第二個相機視野為
兩個相機綜合輸出的視野為
。貼代碼
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class RenderTextureTest : MonoBehaviour {RawImage showImage = null;Camera mCam = null;Camera Came2 = null;RenderTexture RenderTex = null;Texture2D RenderSavedTexure2d = null;// Use this for initializationvoid Start () {showImage = GameObject.Find("ShowRenderTexure").GetComponent<RawImage>(); //顯示輸出的渲染圖片mCam = Camera.main;Came2 = GameObject.Find("Camera2").GetComponent<Camera>();RenderTex = new RenderTexture(Screen.width, Screen.height, 16, RenderTextureFormat.ARGB32);//初始化存儲RenderSavedTexure2d = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);//screenUITex.mainTexture = RenderSavedTexure2d; // 如果用NGUI UITexure顯示圖片showImage.texture = RenderSavedTexure2d;}void RenderCam(){if (null != mCam && null != Came2){mCam.targetTexture = RenderTex; //降相機的targetTexture指向RenderTex,即輸出到RenderTexmCam.Render();Came2.targetTexture = RenderTex;Came2.Render();RenderTexture.active = RenderTex;//激活RenderTextureRenderSavedTexure2d.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0); //將RenderTexture內容讀到RenderSavedTexure2dRenderSavedTexure2d.Apply();//應用RenderSavedTexure2dmCam.targetTexture = null;Came2.targetTexture = null;RenderTexture.active = null;}}public void ClickRenderCame(){RenderCam();}// Update is called once per framevoid Update () {}
}