この記事はUnity Advent Calendar 2015の12日目の記事になります。
昨日は@Ijoruさんの「Unity UIでページやダイアログごとにシーンを分離する実装パターン」でした
今回は開発中のUnityプロジェクトをUnity 4.6からUnity 5.2に移行した時に
対応したことや知ったことを書き残しておきます
BuildTarget列挙型の変更
BuildTarget.iPhone
がBuildTarget.iOS
に変更されたので
この列挙値を使用している箇所は置換が必要
NGUIのUIPanelが自動で動く
- ゲーム起動後にNGUIの
UIPanel
が落下したり画面奥に倒れる不具合が発生 UIPanel
にアタッチされているRigidbody
の
下記のパラメータを設定することで修正できたUse Gravity
をオフにするIs Kinematic
をオンにする
アセットバンドル周り
- Unity 4.6のAPIで作成したアセットバンドルは
Unity 5.2のプロジェクトで読み込むことができない WWW.LoadFromCacheOrDownLoad
の引数が変更された
// Unity 4.6 WWW.LoadFromCacheOrDownLoad( url, version, crc ) // Unity 5.2 WWW.LoadFromCacheOrDownLoad( url, hash, crc )
- アセット読み込み時にファイルの拡張子の指定が必要になった
- アセットバンドルからNGUIの
UIAtlas
を取得するためには
GetComponent
を使用する
// 失敗 var atlas = assetBundle.LoadAsset<UIAtlas>("xxx.prefab"); // 成功 var atlas = assetBundle.LoadAsset<GameObject>("xxx.prefab").GetComponent<UIAtlas>();
シーンファイル周り
- Unity 5.2で保存したシーンファイルをUnity 4.6で開くことはできない
- 無名のオブジェクトが作成されていたり参照が剥がれていたりする
iOS実機でエラー発生後に強制終了
- Xcodeで確認したところ下記のエラーログが出力されていた
could not produce class with id 64
- 下記の手順で修正できた
- Unityの「File>Build Settings...」を選択する
- 「Platform」で「iOS」を選択して「Player Settings...」を選択する
- 「Strip Engine Code*」をオフにする
- このオプションのせいでゲームで使用しているクラスが除外されてしまっていた模様
その他の移行時に知ったネタ
Awake
よりも早いタイミングでオブジェクトが非アクティブにされていると
そのオブジェクトがHierarchyから消える?- NGUIの
UISprite.atlas
はOnDestroy
の時に
null
を代入しないと残り続ける