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

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

ただいまの
回答率

90.83%

  • Unity

    3409questions

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

  • Unity3D

    1137questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity:Terrainを使うと実機(Android5)で動かない原因は?

解決済

回答 1

投稿 編集

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

yuji38kwmt

score 418

 環境

  • Unity 2017.4.0f1 (b5bd171ee9ba) Personal

  • Android Studio 3.1.2

  • JDK 1.8.162

  • Windows10

  • 実機A: Android5.1.1(DIGNO(R) rafre KYV36)(メモリ:2GB)
    公式サイト

  • 実機B: Andorid7.0 (HUAWEI P10 lite)

 背景

前回の質問 に関連する質問です。

Unityで3Dゲームを作ろうとしています。
地形はTerrainで作っています。

 問題

実機A(Android5.1)では、Unityロゴが表示された後、アプリが終了していました。

原因を調査した結果、以下の通りでした。

  • Terrainを使わなければ、実機Aで動く
  • 実機B(Android7.0)では、Terrainを使っていても動く
  • Unity上で問題なく動作する

 質問

Terrainの使える条件は、何でしょうか?
Androidのバージョンでしょうか?

 補足1 シェーダ

@sakura_hana さんの回答に従って、下記の通りシェーダを使いました。
アプリは起動できました。

  • 「Unity 2017.4.1 ビルトインシェーダ」をダウンロード
  • 「builtin_shaders-2017.4.2f2/DefaultResourcesExtra/TerrainShaders/Splats/Standard-FirstPass.shader」をUnityにインポート
  • 「Sphre」3D Objectに、上記のシェーダを設定したマテリアルを設定

イメージ説明

 補足2 Terrain

@sakura_hana さんの回答に従って、Terrainのみを作成しました。
アプリは強制終了しました。

イメージ説明
イメージ説明

05-17 22:37:37.763: D/ACDB-LOADER(421): ACDB -> ACDB_CMD_GET_AFE_COMMON_TABLE
05-17 22:37:37.763: D/ACDB-LOADER(421): ACDB -> AUDIO_SET_AFE_CAL
05-17 22:37:37.763: D/ACDB-LOADER(421): ACDB -> send_hw_delay : acdb_id = 14 path = 0
05-17 22:37:37.763: D/ACDB-LOADER(421): ACDB -> ACDB_AVSYNC_INFO: ACDB_CMD_GET_DEVICE_PROPERTY
05-17 22:37:37.763: I/audio_hw_utils(421): audio_extn_utils_send_app_type_cfg app_type 69936, acdb_dev_id 14, sample_rate 48000
05-17 22:37:37.763: V/audio_hw_primary(421): enable_audio_route: apply mixer and update path: deep-buffer-playback
05-17 22:37:37.763: V/audio_hw_primary(421): enable_audio_route: exit
05-17 22:37:37.763: D/audio_hw_primary(421): select_devices: done
05-17 22:37:37.763: V/audio_hw_primary(421): start_output_stream: Opening PCM device card_id(0) device_id(0) format(0)
05-17 22:37:37.763: V/audio_hw_primary(421): start_output_stream: exit
05-17 22:37:38.443: D/StatusBar.NetworkController(1199): hasService: mServiceState=1 1 home null null null  Unknown Unknown CSS not supported -1 -1 RoamInd=-1 DefRoamInd=-1 EmergOnly=true retVal=false
05-17 22:37:38.443: D/StatusBar.NetworkController(1199): refreshViews: Data not connected!! Set no data type icon / Roaming
05-17 22:37:38.443: D/StatusBar.NetworkController(1199): refreshViews connected={ wifi } level=3 combinedSignalIconId=0x7f0203f3/com.android.systemui:drawable/stat_sys_wifi_signal_4_fully combinedActivityIconId=0x7f0203e5 mobileLabel=緊急通報のみ wifiLabel="aterm-c250c4-g"xxxxXXXXxxxxXXXX emergencyOnly=true combinedLabel="aterm-c250c4-g"xxxxXXXXxxxxXXXX mAirplaneMode=false mDataActivity=0 mPhoneSignalIconId=0x7f0203d8/com.android.systemui:drawable/stat_sys_signal_null mQSPhoneSignalIconId=0x7f0200b7/com.android.systemui:drawable/ic_qs_signal_no_signal mDataDirectionIconId=0x0/(null) mDataSignalIconId=0x7f0203d8/com.android.systemui:drawable/stat_sys_signal_null mDataTypeIconId=0x0/(null) mQSDataTypeIconId=0x0/(null) mNoSimIconId=0x7f020098/com.android.systemui:drawable/ic_qs_no_sim mRoamingIconId=0x0/(null) mWifiIconId=0x7f0203f3/com.android.systemui:drawable/stat_sys_wifi_signal_4_fully mQSWifiIconId=0x7f0200c7/com.android.systemui:drawable/ic_qs_wifi_full_4 mWifiActivityIconId=0x7f0203e5/com.android.systemui:drawable/stat_sys_wifi_in_notify mBluetoothTetherIconId=0x108075e/android:drawable/stat_sys_tether_bluetooth
05-17 22:37:38.443: D/StatusBar.NetworkController(1199): refreshSignalCluster - setMobileDataIndicators:  mHasMobileDataFeature = true mPhoneSignalIconId = com.android.systemui:drawable/stat_sys_signal_null mDataSignalIconId = com.android.systemui:drawable/stat_sys_signal_null mMobileActivityIconId = (null) mDataTypeIconId = (null) mRoamingIconId = (null) mNoSimIconId = com.android.systemui:drawable/ic_qs_no_sim
05-17 22:37:38.443: D/StatusBar.NetworkController(1199): refreshSignalCluster - setMobileDataIndicators:  mHasMobileDataFeature = true mPhoneSignalIconId = com.android.systemui:drawable/stat_sys_signal_null mDataSignalIconId = com.android.systemui:drawable/stat_sys_signal_null mMobileActivityIconId = (null) mDataTypeIconId = (null) mRoamingIconId = (null) mNoSimIconId = com.android.systemui:drawable/ic_qs_no_sim
05-17 22:37:38.453: D/StatusBar.NetworkController(1199): refreshSignalCluster - setMobileDataIndicators:  mHasMobileDataFeature = true mPhoneSignalIconId = com.android.systemui:drawable/stat_sys_signal_null mDataSignalIconId = com.android.systemui:drawable/stat_sys_signal_null mMobileActivityIconId = (null) mDataTypeIconId = (null) mRoamingIconId = (null) mNoSimIconId = com.android.systemui:drawable/ic_qs_no_sim
05-17 22:37:38.453: D/StatusBar.NetworkController(1199): changing data overlay icon id to 2130838501
05-17 22:37:38.543: I/WifiStateMachine(956): [signalPoll] newRssi = -39
05-17 22:37:38.543: I/WifiStateMachine(956): [signalPoll] newLinkSpeed = 72
05-17 22:37:38.773: D/AU-TS(28767): [WifiRxTraffic_Exec] ChangeWifiRxTraffic oldValue=691228808 -> newValue=691232132
05-17 22:37:38.853: A/libc(32098): invalid address or address of corrupt block 0xabd6fa78 passed to dlfree
05-17 22:37:38.973: I/WindowState(956): WIN DEATH: Window{26bd2500 u0 pany.TerrainTest/com.unity3d.player.UnityPlayerActivity}
05-17 22:37:38.973: W/WindowManager(956): Force-removing child win Window{2eb50df u0 SurfaceView} from container Window{26bd2500 u0 pany.TerrainTest/com.unity3d.player.UnityPlayerActivity}
05-17 22:37:38.983: I/ActivityManager(956): Process pany.TerrainTest (pid 32098) has died
05-17 22:37:38.993: D/ActivityManager(956): cleanUpApplicationRecord -- 32098
05-17 22:37:38.993: W/WindowManager(956): Failed looking up window
05-17 22:37:38.993: W/WindowManager(956): java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@29b2437e does not exist
05-17 22:37:38.993: W/WindowManager(956): 
05-17 22:37:38.993: W/WindowManager(956): 
05-17 22:37:38.993: W/WindowManager(956): 
05-17 22:37:38.993: W/WindowManager(956): 
05-17 22:37:38.993: I/WindowState(956): WIN DEATH: null
05-17 22:37:38.993: W/ActivityManager(956): Force removing ActivityRecord{192827d0 u0 pany.TerrainTest/com.unity3d.player.UnityPlayerActivity t759}: app died, no saved state
05-17 22:37:39.073: E/AudioPolicyManager(421): unknown stream type 15
05-17 22:37:39.073: E/AudioPolicyManager(421): unknown stream type 15
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+1

可能性があるとしたら2つ。

1.メモリ過多
Terrainは普通に使うと非っっっ常に重いです。スマホ向けに使うには至難の技です。
試しに新しいシーンを作成し、Terrainを作成し、SettingsのWidthとHeightの値を小さく(10ぐらい)にして、他は何もせずに書き出してみてください。
きちんと起動するならTerrainが原因というよりは、「Terrainが重すぎてメモリオーバー」しているのが原因です。
参考:【Unity】Terrainの負荷やらDrawCallやらを下げるポイント - テラシュールブログ

2.シェーダーが未対応
前回の質問にある通り、各端末で使用出来ないシェーダーが原因で強制終了している可能性(あんまり無いとは思いますがAndroidは何が起こるか分からないので疑っておきます)。
Unity - Download Archive
ここから「ダウンロード > ビルドインシェーダー」と選択すると標準シェーダーがダウンロード出来ます。
このフォルダの中身を「terrain」で検索して、terrainで使われているっぽいシェーダーを探してください。
それをUnityにインポート、適当なマテリアルとオブジェクトを作成しシェーダーを割り当ててビルドしてみてください。
エラーが起こったらそのシェーダーが原因です。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/05/10 23:49

    回答ありがとうございます!
    確認した結果を、補足に追記しました。

    1. Terrainの確認について
    TerrainのHeightとWidthは、どこで設定すればよいでしょうか?
    Terrainを作成しただけでも、起動できませんでした。

    キャンセル

  • 2018/05/11 11:22

    Terrainオブジェクトを選択→インスペクターのTerrainコンポーネント内のアイコンが並んでいる所(高さ変更とか草生やすブラシとかを切り替える所)の歯車マーククリック
    で設定画面に切り替わります。

    キャンセル

  • 2018/05/12 00:58

    Terrain Width, Length, Heightを10にしましたが(補足に追記)、実機でアプリは起動しませんでした。
    小さなTerrainが使えないほど、小さいメモリということなんですかね?
    実機AのRAMは2GBです。

    キャンセル

  • 2018/05/13 09:33

    それで落ちるとすると、確かに別の要因な気がしますね。
    強制終了時のエラーコードは前回の質問と同様でしょうか?

    キャンセル

  • 2018/05/17 22:45

    前回と同様「 invalid address or address of corrupt block 0xabd6fa78 passed to dlfree」というログが表示されました。
    一旦この辺りでクローズします。
    ありがとうございました。

    キャンセル

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

  • ただいまの回答率 90.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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

  • Unity

    3409questions

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

  • Unity3D

    1137questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。