質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

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

Unity

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

Q&A

解決済

1回答

1884閲覧

Unityでカメラを利用する場合

po_tato

総合スコア97

C#

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

Unity

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

0グッド

0クリップ

投稿2017/12/14 07:43

編集2017/12/15 01:35

Unityでスマホのカメラを利用したいと考えています。
【Unity】WebCamTextureを使ってカメラが映している画像情報を取得するよ - うら干物書き
このサイトと同じように実装してandroidは記事通りうまくいき、
iosの方はUnity側の、
File→buildSettings→PlayerSettings→Configration→CameraUsageの部分に「this app use camera」と入力してビルドしたのですが、
うまくいきませんでした。

具体的にいうとXcode側でRunすると初回起動の時だけカメラの許可アラート
が出たと同時くらいにクラッシュします。
ですが、2回目以降はXcodeからではなくアプリに入っているものを選択してアプリを起動すると正常に起動してカメラも利用できます。

これは何故なのでしょうか?
なぜ初回起動の時だけ落ちてしまうのでしょうか?
知っている方がいましたらご教授願いいたします。

Xcodeのクラッシュ時のログを追記しました。

2017-12-14 16:23:53.385783 アプリ名[5634:2673796] [DYMTLInitPlatform] platform initialization successful 2017-12-14 16:23:53.480703 アプリ名[5634:2673746] -> registered mono modules 0x100d36480 -> applicationDidFinishLaunching() Player data archive not found at `/var/containers/Bundle/Application/12F6ECDB-2B49-4F23-8B08-7F319BDB5701/アプリ名.app/Data/data.unity3d`, using local filesystem 2017-12-14 16:23:53.794456 アプリ名[5634:2673746] Metal GPU Frame Capture Enabled 2017-12-14 16:23:53.794941 アプリ名[5634:2673746] Metal API Validation Disabled -> applicationDidBecomeActive() GfxDevice: creating device client; threaded=1 Initializing Metal device caps: Apple A8 GPU Initialize engine version: 2017.2.0f3 (46dda1414e51) Setting up 1 worker threads for Enlighten. Thread -> id: 16f2d7000 -> priority: 1 UnloadTime: 3.943458 ms 2017-12-14 16:23:59.382635 アプリ名[5634:2673746] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles 2017-12-14 16:23:59.386091 アプリ名[5634:2673746] [MC] Reading from public effective user settings. A RequestUserAuthorization is already pending. <Start>c__Iterator0:MoveNext() UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr) [ line 92] (Filename: Line: 92) アプリ名 was compiled with optimization - stepping may behave oddly; variables may not be available. (lldb)

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

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

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

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

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

sakura_hana

2017/12/14 08:32

クラッシュ時、Xcode上にログが出ているかと思います。そちらを見て調べるか質問に追記してください。
po_tato

2017/12/14 09:22

追記しました。
guest

回答1

0

ベストアンサー

はっきりとした回答は分からないのですが、まずはログと関連しそうなページをピックアップします。
0. APPNAME was compiled with optimization - stepping may behave oddly; variables may not be available. | Unity Community
0. Swift3、Xcode8(iOS10)への移行メモ | 超日記超日記
0. Swift - text fieldについて(81632)|teratail


■検証方法

  • カメラを起動させない状態にしてビルドした場合、クラッシュが発生するか。

→発生する場合カメラは関係無いので上記リンク1番が影響してそう。

  • CameraUsageがきちんとXcodeに反映されているか。

→「info」の中(plist)にきちんと「Privacy - Camera Usage Description」が書き込まれているか確認する。

  • カメラ以外に許可が必要なものを使っていないか。(上記リンク2番参照)

→カメラは問題無くても他のパーミッションが通っていないのかも。

投稿2017/12/14 10:46

sakura_hana

総合スコア11427

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

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

po_tato

2017/12/15 01:33

有益な情報ありがとうございます! 全部試させていただきましたが、残念ながらうまくいきませんでした。 今作成しているアプリは他に3つのsceneがあるのですが、 上記に掲載しましたサイトと全く同じ内容で作成したscene(TestCamera)の チェックを外してunityでビルドするとうまくいきます。 やはり、そのTestCameraの何かが影響していると思います。 このサイトは約半年ほど前の記事で、投稿者様はUnity側でinfo.plistの処理を せずに記述してplistに追加していますが、その違いとかでしょうか? 全然分かりません。。
sakura_hana

2017/12/15 01:57

PostBuilderスクリプトを削除した状態でビルドするとどうなりますか? もしかするとNSCameraUsageDescriptionがinfo.plistに二重で記載されているかもしれません。 また、Application.RequestUserAuthorizationとApplication.HasUserAuthorizationを使った条件分岐を削除してみるとどうなりますか?
po_tato

2017/12/15 03:34

PostBuilderはもともとしておらず、Unitu上でチェックを入れることしかしていなかったので2重はないです。 もう一方の方について TestCameraスクリプト内の yield return Application.RequestUserAuthorization( UserAuthorization.WebCam ); if( !Application.HasUserAuthorization( UserAuthorization.WebCam ) ) { Debug.LogFormat( "カメラを使うことが許可されていないようだ。市役所に届けでてくれ!" ); yield break; } こちらをコメントアウトした結果、 初回起動も2回目以降も正常に起動するようになりました。 ありがとうございます! 少し質問なのですが、 これはコメントアウトしていても問題ない記述なのでしょうか?
sakura_hana

2017/12/15 04:15

こちらはWebPlayerでカメラ使用の許可を出す&許可されているか確認するというコードです。 存在していたところで正常に動作しないので排除していいと思います。 iOSでの初回の確認はカメラ使用時に自動的に行われます。 2回目以降に許可されているか判定したい場合、ネイティブコードと組み合わせる必要があるみたいですね。 https://qiita.com/Ryopon/items/a2cf618eb570637deffb あと、本筋とは全く無関係ですが、「CameraUsage」は「カメラを何に使用するか」を記載するので、「this app use camera」だけだとリジェクトされるかもしれません。ご参考までに。
po_tato

2017/12/15 04:29

そうなんですね! 何から何まで勉強になります。親切なご返答とても感謝しています! 「this app use camera」部分は日本語でも良いとのことなので 「カメラで撮影する際に必須です」みたいな感じで変えてみようと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問