ゲームやアプリを開発していると、「この画面をスクリーンショットとして保存したい!」という場面がよくありますよね。特に、UnityでAndroid向けに開発していると、スクリーンショットの撮影方法がわからないと困ってしまいます。そこで、今回は初心者の方でもわかりやすく、Unityを使ってAndroid端末でスクリーンショットを撮る方法をご紹介します。
UnityでAndroidアプリのスクリーンショットを撮る基本の流れ
まずは、Unityでスクリーンショットを撮るための基本的な流れを押さえておきましょう。
- スクリーンショットを撮るためのコードを書く
- 保存先の設定を行う
- 保存した画像をギャラリーに反映させる
これらを順番に見ていきましょう。
スクリーンショットを撮るためのコードを書く
Unityでは、スクリーンショットを撮るための簡単なコードを記述することができます。以下のコードを使って、スクリーンショットを撮影しましょう。
using UnityEngine;
using System.Collections;
public class Screenshot : MonoBehaviour
{
public void TakeScreenshot()
{
string fileName = "screenshot_" + System.DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".png";
string filePath = Application.persistentDataPath + "/" + fileName;
ScreenCapture.CaptureScreenshot(filePath);
Debug.Log("Screenshot saved to: " + filePath);
}
}
このコードでは、現在の日時をファイル名に含めて、スクリーンショットを保存しています。保存先は、Android端末のアプリ専用のストレージ領域である`Application.persistentDataPath`に設定しています。
保存先の設定を行う
Android端末では、アプリが外部ストレージにアクセスするためには、適切なパーミッション(権限)を設定する必要があります。以下の手順で設定を行いましょう。
- Unityのメニューから「Edit」→「Project Settings」を選択します。
- 「Player」セクションを選択し、「Other Settings」タブを開きます。
- 「Write Permission」を「External(SDCard)」に設定します。
これで、アプリが外部ストレージに書き込むことができるようになります。
保存した画像をギャラリーに反映させる
スクリーンショットを撮っただけでは、Android端末のギャラリーアプリには表示されません。ギャラリーに反映させるためには、以下のコードを追加します。
using UnityEngine;
using System.Collections;
public class Screenshot : MonoBehaviour
{
public void TakeScreenshot()
{
string fileName = "screenshot_" + System.DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".png";
string filePath = Application.persistentDataPath + "/" + fileName;
ScreenCapture.CaptureScreenshot(filePath);
Debug.Log("Screenshot saved to: " + filePath);
// ギャラリーに反映させる
StartCoroutine(ScanFile(filePath));
}
private IEnumerator ScanFile(string path)
{
yield return new WaitForEndOfFrame();
string mediaPath = "file://" + path;
new AndroidJavaClass("android.media.MediaScannerConnection")
.CallStatic("scanFile", AndroidJNIHelper.GetRawObjectArray(new string { mediaPath }), null, null);
Debug.Log("Media scanned: " + mediaPath);
}
}
このコードでは、`MediaScannerConnection`を使用して、保存した画像をギャラリーに反映させています。
よくある質問や疑問
Q1: スクリーンショットの解像度を変更するにはどうすればいいですか?
`ScreenCapture.CaptureScreenshot`メソッドには、解像度を指定するオーバーロードがあります。例えば、2倍の解像度で保存したい場合は、以下のように記述します。
ScreenCapture.CaptureScreenshot(filePath, 2);
これで、解像度2倍のスクリーンショットが保存されます。
Q2: スクリーンショットを撮るタイミングをボタン押下にしたい場合はどうすればいいですか?
ボタンの`OnClick`イベントに、先ほどの`TakeScreenshot`メソッドを割り当てることで、ボタンを押したときにスクリーンショットを撮ることができます。
Q3: スクリーンショットを撮った後に画面に表示したい場合はどうすればいいですか?
保存した画像を`Texture2D`として読み込み、`UI.Image`コンポーネントの`sprite`に設定することで、画面に表示することができます。
まとめ
今回は、Unityを使ってAndroidアプリのスクリーンショットを撮る方法をご紹介しました。初心者の方でも、上記の手順を参考にすれば、簡単にスクリーンショットを実装することができます。ぜひ、試してみてください。
他にも疑問やお悩み事があれば、お気軽にLINEからお声掛けください。



コメント