[Unity] RenderTextureからピクセル色を取得する

RenderTextureのピクセルの色をスクリプトから参照する方法の紹介です。
今回紹介する方法はPro版限定となります。

RenderTextureから何らかのプロパティやメソッドを用いてピクセル色を取得できないかと思いましたが、一筋縄にはいかないようです。
バッファとなるテクスチャを作成し、そこにRenderTextureの画像データを転送し、その結果を適用することで初めて色が取得できるようになります。

実際のスクリプトは以下のようになります。

まず、ピクセル色を取得したいRenderTextureの転送先のバッファとなるテクスチャを最初に作成します。

ピクセル色を取得するときは、RenderTexture.active(staticメンバ)に取得元のRenderTextureを指定します。
そして、targetTexture.ReadPixels()でピクセルデータを転送します。
このままでは色をスクリプトから参照できないので、targetTexture.Apply()で転送処理を適用します。

これで、targetTexture.GetPixel()により色を取得できるようになります。引数にはピクセル座標を指定します。

以上のような流れになります。
ピクセル色を取得するまでに時間がかかるため、あまり頻繁に利用しないほうがよいでしょう。