#今回やること
Cameraで描画されているものをTexture2Dに変換させる。
#用意するもの
- RendererTexture (ProjectWindowで右クリック > Create > RendererTextureで作成可能)
- Camera
#Script
CreateTexture.cs
//このScriptはMainCameraにアタッチしてください
public RenderTexture renderTexture; //mainCameraにつけるRendertexture(アタッチしてね)
public Texture2D kakunin; //ほんとに保存されているかの確認用
Camera mainCamera;
void Start ()
{
mainCamera = GetComponent<Camera>();
kakunin = CreateTexture2D(renderTexture);
}
/// <summary>
/// ここでTextur2Dに変換しているよ
/// </summary>
/// <param name="rt"></param>
/// <returns></returns>
Texture2D CreateTexture2D(RenderTexture rt)
{
//Texture2Dを作成
Texture2D texture2D = new Texture2D(rt.width, rt.height, TextureFormat.ARGB32, false, false);
//subCameraにRenderTextureを入れる
mainCamera.targetTexture = rt;
//手動でカメラをレンダリングします
mainCamera.Render();
RenderTexture.active = rt;
texture2D.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0);
texture2D.Apply();
//元に戻す別のカメラを用意してそれをRenderTexter用にすれば下のコードはいらないです。
mainCamera.targetTexture = null;
RenderTexture.active = null;
return texture2D;
}
上のScriptをMainCameraにアタッチしてください。
作ったRendererTextureをアタッチし忘れに注意。
#注意!
この処理はそこそこ重いので毎フレームやることは推奨しません。
やるのであれば数フレームに一回や何かのボタンを押したら1度だけ動くようにするのがいいと思います。
#おわり
何か質問などがある方はコメントください。