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

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

ただいまの
回答率

90.34%

  • C#

    7747questions

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

  • Unity

    4452questions

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

  • Unity2D

    979questions

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 977

Kw6ZG2sV

score 56

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) 
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • sakura_hana

    2017/12/14 17:32

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

    キャンセル

  • Kw6ZG2sV

    2017/12/14 18:22

    追記しました。

    キャンセル

回答 1

checkベストアンサー

0

はっきりとした回答は分からないのですが、まずはログと関連しそうなページをピックアップします。

  1. APPNAME was compiled with optimization - stepping may behave oddly; variables may not be available. | Unity Community
  2. Swift3、Xcode8(iOS10)への移行メモ | 超日記超日記
  3. Swift - text fieldについて(81632)|teratail

■検証方法

  • カメラを起動させない状態にしてビルドした場合、クラッシュが発生するか。
    →発生する場合カメラは関係無いので上記リンク1番が影響してそう。
  • CameraUsageがきちんとXcodeに反映されているか。
    →「info」の中(plist)にきちんと「Privacy - Camera Usage Description」が書き込まれているか確認する。
  • カメラ以外に許可が必要なものを使っていないか。(上記リンク2番参照)
    →カメラは問題無くても他のパーミッションが通っていないのかも。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/15 10:33

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

    キャンセル

  • 2017/12/15 10:57

    PostBuilderスクリプトを削除した状態でビルドするとどうなりますか?
    もしかするとNSCameraUsageDescriptionがinfo.plistに二重で記載されているかもしれません。

    また、Application.RequestUserAuthorizationとApplication.HasUserAuthorizationを使った条件分岐を削除してみるとどうなりますか?

    キャンセル

  • 2017/12/15 12:34

    PostBuilderはもともとしておらず、Unitu上でチェックを入れることしかしていなかったので2重はないです。

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

    キャンセル

  • 2017/12/15 13:15

    こちらはWebPlayerでカメラ使用の許可を出す&許可されているか確認するというコードです。
    存在していたところで正常に動作しないので排除していいと思います。

    iOSでの初回の確認はカメラ使用時に自動的に行われます。
    2回目以降に許可されているか判定したい場合、ネイティブコードと組み合わせる必要があるみたいですね。
    https://qiita.com/Ryopon/items/a2cf618eb570637deffb

    あと、本筋とは全く無関係ですが、「CameraUsage」は「カメラを何に使用するか」を記載するので、「this app use camera」だけだとリジェクトされるかもしれません。ご参考までに。

    キャンセル

  • 2017/12/15 13:29

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

    キャンセル

同じタグがついた質問を見る

  • C#

    7747questions

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

  • Unity

    4452questions

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

  • Unity2D

    979questions