🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1587閲覧

スクリーンショット後スマホのカメラロールに保存したい

roniko

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/12/11 16:26

スマホアプリにスクリーンショット機能をつけたいと思っているのですができませんでした。
現状、このサイトを参考にさせていただいて、Assetsへの保存に成功しました。
しかし、このサイトをはじめいろんなサイトを参考にiOSに読み込ませるため頑張ってみましたがApplication.persistentDataPathにするとスクリーンショットが撮れなくなってしまいます。
androidについてはまだ手も足も出ていません。
同じプロジェクト上にこのふたつの形式に対応した機能は組み込めるのでしょうか?

とても初心者のためおそらく初歩的なミスと思いますが、どうかお力添えいただけると幸いです。

やりたいこと
・スクリーンショットを撮り、iOSとandroidにてカメラロールに保存されるようにしたい
・その際UIが非表示になるようにしたい

現在のスクリーンショットが撮れるコードはこちらです。

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System.IO; using System; public class scs : MonoBehaviour { // 非表示にするやつ [SerializeField] private GameObject scsButton; [SerializeField] private GameObject Button; void Start() { // UIの初期設定 scsButton.SetActive(true); Button.SetActive(true); } // スクリーンショットボタンを押す public void OnScreenShot() { StartCoroutine(OperationUI()); } // スクリーンショット処理 IEnumerator OperationUI() { // スクリーンショットを撮る前にUIを全部非表示 scsButton.SetActive(false); Button.SetActive(false); // スクリーンショットを撮る ScreenCapture.CaptureScreenshot(Application.dataPath + "/ScreenShots.PNG", 1); // 待ち時間を入れないとlogPanelが表示されるので一定時間待つ yield return new WaitForSeconds(1.0f); // UIを元に戻す scsButton.SetActive(true); Button.SetActive(true); } }

失敗コードはこちらです。

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System.IO; using System; using System.Runtime.InteropServices; public class scs : MonoBehaviour { // スクリーンショットボタン [SerializeField] private GameObject scsButton; [SerializeField] private GameObject Button; [DllImport("__Internal")] private static extern void SaveToAlbum(string path); IEnumerator SaveToCameraroll(string path) { // ファイルが生成されるまで待つ while (true) { if (File.Exists(path)) break; yield return null; } SaveToAlbum(path); } void Start() { // UIの初期設定 scsButton.SetActive(true); Button.SetActive(true); #if UNITY_EDITOR #else // スクリーンショットボタンを押す public void OnScreenShot() { StartCoroutine(OperationUI()); } // スクリーンショット処理 IEnumerator OperationUI() { // スクリーンショットを撮る前にUIを全部非表示 scsButton.SetActive(false); Button.SetActive(false); yield return new WaitForSeconds(1.0f); // UIを元に戻す scsButton.SetActive(true); Button.SetActive(true); } string filename = "Screenshot.png"; string path = Application.persistentDataPath + "/" + filename; // 以前のスクリーンショットを削除する File.Delete(path); // スクリーンショットを撮影する ScreenCapture.CaptureScreenshot(filename); // カメラロールに保存する StartCoroutine(SaveToCameraroll(path)); #endif } }

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

その後、Social Connectorを利用して無事に画像保存・シェアが可能となりました。
その際にカメラロールへのアクセス許可のポップアップがどうやってもでない状況に陥ったためこちらを使わせていただき中に入っているUnityiOS.csを任意のシーンに置いておくことでどうにかなりました。

投稿2020/01/23 17:34

roniko

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問