質問編集履歴

1 文変更

yoshiteru21

yoshiteru21 score 29

2019/07/05 12:40  投稿

unity andoroid スクリーンショットのスクリプトについて
以前にも質問させていただきましたが、
unityでandiroidを使ってカメラ画面を表示し、スクリーンショットを取るというものをサイトを見て作りました。
ファイルパスにApplication.dataPathまたは、Application.persistentDataPathを使ってもandoroidのギャラリーに画像が保存されていませんでした。
ファイルパスにApplication.dataPathまたは、Application.persistentDataPathを使ってもandoroidのギャラリーに画像が表示されていませんでした。
どのように改善すればよろしいでしょうか?
念のため、スクリプトを貼っておきます。
```using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using System;
public class ScreenShotScript : MonoBehaviour
{
   // スクリーンショットボタン
   [SerializeField]
   private GameObject screenShotButton;
   // ログパネル
   [SerializeField]
   private GameObject logPanel;
   // 解像度パネル
   [SerializeField]
   private GameObject superSizePanel;
   // 解像度レベルスライダー
   [SerializeField]
   private Slider superSizeSlider;
   // 解像度レベルテキスト
   [SerializeField]
   private Text superSizeText;
   // スクリーンショットを撮ってからの待ち時間
   [SerializeField]
   private float waitTime = 5f;
   // データの保存先ファイルパス
   private string saveFilePath = "/Projects/ScreenShot";
   // 保存ファイル名
   private string saveFileName = "/screenshot.PNG";
   void Start()
   {
       // UIの初期設定
       screenShotButton.SetActive(true);
       logPanel.SetActive(false);
       superSizePanel.SetActive(true);
       // 指定したフォルダがない時はAssetsフォルダに保存
       if (!Directory.Exists(Application.persistentDataPath + saveFilePath))
       {
//           saveFilePath = "";
       }
   }
   // スクリーンショットボタンを押す
   public void OnScreenShot()
   {
       StartCoroutine(OperationUI());
   }
   // スクリーンショット処理
   IEnumerator OperationUI()
   {
       // スクリーンショットを撮る前にUIを全部非表示
       screenShotButton.SetActive(false);
       logPanel.SetActive(false);
       superSizePanel.SetActive(false);
       // スクリーンショットを撮る
       ScreenCapture.CaptureScreenshot(Application.persistentDataPath + saveFilePath + saveFileName, (int)superSizeSlider.value);
       // 待ち時間を入れないとlogPanelが表示されるので一定時間待つ
       yield return new WaitForSeconds(0.1f);
       logPanel.transform.GetChild(0).GetComponent<Text>().text = "スクリーンショットを撮りました!\n"+ Application.persistentDataPath + saveFilePath + saveFileName + " に保存されました。";
       // スクリーンショットを撮った旨を表示
       logPanel.SetActive(true);
       yield return new WaitForSeconds(waitTime);
       // UIを元に戻す
       screenShotButton.SetActive(true);
       superSizePanel.SetActive(true);
       logPanel.SetActive(false);
   }
   // 画面サイズをテキストに表示
   public void ChangeSuperSizeText(Single value)
   {
       superSizeText.text = value.ToString();
   }
}
コード
```
  • Unity

    6750 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る