close

1.創建一個新專案

 

2.新增一個Camera和RenderTexture,並將RenderTexture托放到剛剛新增的Camera上,並關閉該Camera的Flare Layer、GUI Layer、Audio Listener

為了方便區分兩個Camera(一個是預設的Main Camera、一個是剛剛新增的Camera)所看到的場景,所以在場景中放入一個Cube,並讓兩台Camera從不同視角觀看

 

3.新增一個C# script,並命名為RenderTexture2Texture2D.cs

為了檢驗是否真的有把RenderTexture轉成Texture2D,所以我在此範例進行存檔的動作


using System.IO;
using UnityEngine;

public class RenderTexture2Texture2D : MonoBehaviour
{
    public RenderTexture rt;

    private void OnGUI()
    {
        if(GUI.Button(new Rect(100, 100, 100, 30), "Get Picture"))
        {
            GetPicture();
        }
    }

    private void GetPicture()
    {
        RenderTexture.active = rt;

        Texture2D t = new Texture2D(rt.width, rt.height);
        t.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0, true);

        using (FileStream fs = new FileStream("D:/pic.png", FileMode.Create))
        {
            BinaryWriter bw = new BinaryWriter(fs);
            bw.Write(t.EncodeToPNG());
        }
    }
}


 

4.腳本放到Main Camera上,並將Cam托放到Rt上

 

5.執行後按下Get Picture得到pic.png,打開後可以看到確實是從上方的Camera所照到的畫面

arrow
arrow
    全站熱搜

    Yang 發表在 痞客邦 留言(1) 人氣()