Unityでスクリーンショットを取るのはApplication.CaptureScreenshot(ファイル名.png)を記述するだけと非常に簡単なのですが、AndroidアプリとしてSDカードに記録させようとした時にちょっと詰まったのでメモ。

記述の仕方

OnGUIのボタンをクリックするとキャプチャする場合。
[javascript]function OnGUI () {
if(GUI.Button(Rect(10 ,10,200,50),”スクリーンショットを撮る”)){
Application.CaptureScreenshot(“screenshot.png”);
}
}[/javascript]

“screenshot.png”の部分はそのまま保存されるファイル名になります。ファイル名が重複した場合は問答無用に上書きしてくれます。「上書きしますか?」などというポップアップも表示されません。

《Application.CaptureScreenshot》

保存される場所

Androidだとデフォルトでは変な場所に保存されます。
[javascript]”/sdcard/Android/data/[パッケージ名]/files/”内[/javascript]

ちなみにUnityのプレビュー上でキャプチャするとプロジェクト内に保存されます。

保存される場所を変えるには

色々なサイトを見ると、Application.CaptureScreenshot()の引数にパスを指定してやれば?って記事がありましたが、できませんでした。
[javascript]// できない
“/sdcard/DCIM/端末ごとのフォルダ/screenshot.png”
// これもできない
“/mnt/sdcard/DCIM/端末ごとのフォルダ/screenshot.png”
[/javascript]

結局どうするかというと、htmlを記述する時と同じようにしてやります。
[javascript]”../../../../DCIM/端末ごとのフォルダ/screenshot.png”[/javascript]

追記:指定したフォルダが無い場合は記録されないみたいです。

以下のサイトを参考にしました。
http://forum.unity3d.com/threads/134430-Capturing-screenshots-to-sdcard

できるようになったとはいえ、シャッターボタンが画面にある場合はシャッターボタンごとキャプチャされるので、シャッターボタンを押した瞬間にボタンを消してキャプチャする必要があったりとか工夫が必要ですね。