原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【Unity】Unity2018.3へアップデートしたらエラーが出た(何度目だ)

年末年始はほぼニート生活

明けましておめでとうございます。ちなみに年が明けてこの挨拶をするのはこのブログが初めてです。なんせ人と会ってなかった。

というのも、私の勤めている会社では年末が12/27で締め、年始は1/4が休みとなっていたので今年の年末年始の休みは10連休もあったのですが、私はそのほぼ全てを部屋で過ごすという仮想ニート生活を謳歌していました。

あまりに部屋から出ないので新年早々、父親からダメ人間判定をされるなど過酷な出来事を乗り越えつつ、PCとPS4に立ち向かう怠惰な日々をダラダラと過ごしていました。今年もよろしくお願いいたします。(←この挨拶も今年初)

 

Unity2018.3へアップデート

さて、年末話題になった某レコード大賞の楽曲のように認知度や知名度、浸透度よりも誰も知らなくていいから売上だけはミリオンを達成したいという気持ちで10連休の殆どはゲーム製作に費やしていたのですが、その途中、そういえばUnity2018.3にアップデートしていなかったことを思い出して、それまで使っていたUnity2018.2からUnity2018.3へアップデートする作業を行いました。

 

Unity2018.3ではPrefabの編集機能やタイルマップ機能の追加など、Unity2018.2と比べて多くの機能の追加と処理の改善が行われているようなので「多少コンバートに時間が掛かるかも」とは思いつつワクワクしながらアップデートしたのですが、見事に目論が外れました。

 

だが、しかし・・・

 

振り返るとUnityのアップデート時には度々トラブルが起こっていてこのブログでも度々記事に書いてきました。

 

www.karvan1230.com

www.karvan1230.com

ただUnity2018.2になってからは内部アップデートは頻繁にあるものの、これといったトラブルが起きなかったのでこの時は完全に油断していました。裏を掛かれたとはこのことです。

 

Unity2018.3のインストールが終わり、プロジェクトを起動したらコンソールに以下のエラーが発生

 

f:id:Karvan:20190108223028p:plain

[Physics.PhysX] RigidBody::setRigidBodyFlag: kinematic bodies with CCD enabled are not supported! CCD will be ignored.

 

なんだこれ?

 

Google先生から得た答え

エラー内容から察するにRigidBodyコンポーネントのオプションにあるiskinematicオプションが関係しているようですが、詳しいことはチンプンカンプン。なにせUnity2018.2では問題なく動いていたんですからね!!

 

怒っても仕方ないのでエラーメッセージについてGoogle先生に尋ねてみるとUnity2018.3では物理演算の処理が大きく変わった事による影響で、iskinematicオプションをONにしている場合、Collision Detectionオプションの設定を「Discrete」にしないといけないようです。

 

これまでCollision Detectionオプションの設定はデフォルトで「Discrete」となっていたので特に問題なかったのですが、Unity2018.3からこのデフォルト設定が変わり、上記の設定を手動で行う必要が出てきました。なんだそれ。

 

なので、RigidBodyコンポーネントをつけていてiskinematicオプションをONにしているオブジェクト全てに対してCollision Detectionオプションの設定を見直すことになるのですが・・・

 

f:id:Karvan:20190108222739p:plain

 

さて、どーれだ

 

元々、行き当たりばったりで作っているのでどのオブジェクトにRigidBodyがあって、その中のどれがiskinematicオプションがONになっているのかさっぱり見当もつきません。アセットストアから購入した物をそのまま使っているオブジェクトもあるし、記憶だけを頼りに見つけ出すのはちょっと骨が折れる。

どうしよう・・・

 

そんなときに使えるツールが!!

GitHubにエラーの原因となっているオブジェクトを見つけるスクリプトが上げられていました。めっちゃ有り難い。

 

https://gist.github.com/Arakade/dc1d6623cafaab07aeee92a8a1cf661f

 

使い方は、まず上のリンクからPhysXCCDEditorHelper.csのをダウンロードするか、コードをCopy&Pasetして作成したらそれをEditorフォルダに格納

 

しばらくするとメニューのTool配下に「UGS」が追加されるのでそれを選択。

 

f:id:Karvan:20190108223205p:plain

 

ウインドウが表示されるので「Find bad PhysX in scene」ボタンを押下

 

f:id:Karvan:20190108223247p:plain

 

すぐに問題のあるオブジェクトの名前が表示されるので、そのオブジェクトのInspectorからCollision Detectionオプションの設定を変更します。

 

f:id:Karvan:20190108223347p:plain

 

このツールは現在表示しているシーン内のオブジェクトのみチェックするので、プロジェクト内に複数のシーンがある場合には各シーン毎にツールを起動してチェックする必要があります。

ただ、このツールを使って修正してもエラーが表示される場合は、修正したオブジェクトがPrefab化していないか確認してください。Prefab化している場合はPrefab側の設定も同じように修正する必要があります。

エラーは解消されたものの・・・

これらの作業でコンソールに表示されていたエラーは解消されたのですが、今度はプロジェクトをAndroidビルドする際にまた問題が発生しました。

 

Unityのビルドが「Building scene 0: ~」から進まない・・・

 

いやいや、訳分からん。なにせUnity2018.2では問題なく動いていたんですからね!!(二度目)

 

長くなったので続きは次回の記事で

 

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。