【Unity】5.6 の Collider2Dは非アクティブ化で On~Exit2D イベントが発生する(5.6のコライダ2D挙動の違い) 
2017/04/28 Fri [edit]
これも前回同様、単なるバグっぽい気がするのだが、パッチリリースバージョン(掲載時点:5.6.0p2, p3)でも同じ挙動だったので、念のため書いておく。
(※) Unity 5.5.3p2, 5.6.0p2-p4 / Windows10(x64) で確認
簡単に説明すると、全体を囲むような領域に何らかの Collider2D を設置し(形状は何でも良い)、その中に Collider2D を持ったオブジェクトを置いたとき、そのオブジェクトを「非アクティブ化」または「破棄(Destroy)」したとき、5.5以前では何も起こらず、5.6では OnCollisionExit2D や OnTriggerExit2D のコールバックイベントが発生するという挙動だ。ちなみに 3Dのコライダでは発生しない。以下の動画を見てみると簡単にわかるだろう。
|
この挙動は「ある一定エリアから外れた場合は破棄(Destroy)し、エリア内で非表示(非アクティブ)にしたときはメモリに残す」ように作ってあったものが上手く動かなくなっていたので気づいた。つまり 5.6 では非表示にしたオブジェクトがすべて破棄されてしまい、再表示ができなくなっていた。キャッシュシステムのようなものを組んでいる場合、この挙動は気をつけておいた方が良いだろう。
前回の 5.6.0f3 のアニメーション挙動バグ のように特定のバージョン不具合もあるようなので、特に必要性が無いならアップグレードしない方が良いかも知れない。開発中のものがあるなら、5.5.3p2 までにしておいた方が無難だろう。結構面倒臭い修正が多い。以下に参考URLを載せておこう。
(参考資料)
・【Unity】「Unity5.6のわりと地雷なバグ」についての補足
(関連記事)
【Unity】5.6 のアニメーションは非アクティブ化でリセットされない(5.6のアニメーション挙動の違い)
【Unity】【C#】モバイルビルド中の警告:Game scripts or other custom code contains OnMouse_ event handlers.~ を消す
【Unity】アイコン画像のフォーマット警告:Compressed texture XXX is used as icon. This might compromise visual quality of~ を消す
【Unity】5.6 の Canvas の警告:Shader channels Normal and Tangent are most often used with lighting~ を消す
【Unity】InitializeUnityExtensions: Must have a valid path for the plugin [XX] (XX:番号) というエラーの修正方法
【Unity】"~\Temp\Assembly-CSharp.dll.mdb" is denied. と出たら…
- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/243-055ef177
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |