テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】Unity 5.3で個人的に気になった機能まとめ

f:id:tsubaki_t1:20151208181636p:plain

Unity 5.3で気になった項目まとめ

Unity 5.3で新しく追加・変化する機能についてです。
個人的に気になる順番で紹介します。

プラットフォーム個別ダウンロード

Unityエディタをダウンロードする際に、不要なプラットフォームを含めないように設定可能になったみたいです。

エディタのみだと、ダウンロードサイズは400MBくらいまで小さくなります。

f:id:tsubaki_t1:20151208172014p:plain

このプラットフォームサポートは後で追加したりも出来ます。
但しそのときインストールしたUnityエディタのバージョンと一致してないと認識してくれません。

プラットフォームをここで登録していない場合は、こんな感じで表示されます。

f:id:tsubaki_t1:20151209191355p:plain

マルチシーンエディティングとその周辺

複数のシーンを同時に編集可能なマルチシーンエディティングが可能になりました。
これにより、「ステージ」「敵」「ギミック」や、「UI」と「ゲーム」といった分割作業が簡単になります。

また、DontDestroyOnLoad(シーン切替時に破棄されない)が明示的に表示されるようになりました。

f:id:tsubaki_t1:20151208160734p:plain

「現在開いていないシーン」をHierarchyへドラッグ&ドロップすることで、Hierarchyに新しくシーンが読み込まれます。

ちなみに即時読込を行いたくない場合は、Altを押しながらHierarchyへドラッグ&ドロップします。範囲が広いシーンはこれで行うのが良さそうです。

アンロードもしくは読み込んでいないシーンは、Load Sceneで再度読み込めます。

f:id:tsubaki_t1:20151208161127p:plain

これに伴い、シーン関連の運用がUnityEngine.SceneManagement.SceneManagerへ変化しました*1

SceneManagerでは、現在アクティブなシーン一覧の確認や、特定のシーンへオブジェクトを移動させる等の機能を持っています。
エディタ拡張周りはEditorSceneManagerを使用します。

マルチシーンエディティングも、幾つか癖のある挙動があるのでAssetBundleの次辺りに詳しく説明しようと思います。

tsubakit1.hateblo.jp

LZ4圧縮のAssetBundle

AssetBundleの圧縮はLZMAを使用していた訳ですが、新しくLZ4フォーマットが追加されました。
このフォーマットではチャンク読みが可能になっており、圧縮した状態でもアセット分のメモリ消費のみで解凍出来るようになっています。つまり、CacheOrDownloadを行った場合にファイルが全て解凍されず、圧縮した状態のまま保持出来るみたいです。

その他諸々結構色々と変わってるので、別途紹介します。

tsubakit1.hateblo.jp

マルチディスプレイ

カメラを複数台用意し、どのビューにどのカメラを表示するか…といった制御が可能になりました。Standalone向けに。

ONにするためには少しスクリプトが必要だったと思いますが、これでマルチスクリーンなゲームが作りやすくなります。

f:id:tsubaki_t1:20151208163142p:plain

UIのScreenSpace-Overlayを使用してる場合、どのディスプレイに表示するか選択する項目が追加されています。

f:id:tsubaki_t1:20151208172744p:plain

ちなみに、VR向けで「HMDを被った時のVR画面」と「VR画面を外からみた画面」の2つを別々に表示するAPIも追加されてたりします。

f:id:tsubaki_t1:20151208173052p:plain

tsubakit1.hateblo.jp

非同期なテクスチャのアップロード

Unityのロード時にゲームが止まる要因にテクスチャのVRAM(GPU)へのアップロードがありました。ここはバスが狭い上に超解像度が多いモバイルでは問題になってました。
これを非同期…というか、分割して転送することで停止時間を減らすアプローチが追加されました。

非同期でシーンやリソースを読む際、Async Upload Time SliceやAsync Upload Buffer Sizeで分割され読み込まれるみたいです。

f:id:tsubaki_t1:20151208163617p:plain

パーティクルの改善とその周辺

ほぼGUIでしか設定できなかったパーティクルシステムに、ちゃんとAPIが追加されました。

また、Scaling ModeがLocalのときに大きさの設定をオブジェクトの設定から行えるようになったり、

f:id:tsubaki_t1:20151208164205p:plain

2D Colliderに対して当たるようになります。

f:id:tsubaki_t1:20151208164302p:plain

2D周りとその周辺

2Dの目玉機能であるスマートテラインやタイルマップは5.5に見送りになりましたが、その他幾つかの面白い機能が残りました。

スプライトのFlipとか、

f:id:tsubaki_t1:20151208172401p:plain

接続を破壊可能な2D Jointとか、

f:id:tsubaki_t1:20151208172454p:plain

描画周りの処理が軒並みメインスレッドから別スレッドに移行した事とか。

幾つかのiOS9機能の対応

iPad Pro pencil(ペン型のデバイス)やら iOS9 app slicing(iPadiPhoneでリソースを分ける)やらdemand resource (必要な時にリソースを追加ダウンロードするapple側の仕組み)が追加されたみたいです。

パフォーマンスについて色々

  • IL2CPPスクリプト下の初期化時間が短縮
  • OpenGLES2.0向けにStandardShaderを調整
  • シェーダーの読込周りを改善
  • 何かAndroidでオーディオクリップ読込が遅かった問題を修正
  • GIがOFFに出来てなかったせいで発生してた無駄なパフォーマンス低下を修正
  • UIのシェーダーを改善(ifを使ってる所があった)
  • Apple製品で文字表示周りのパフォーマンス低下を修正

OpenGL Core

DX11専用だったコンピュートシェーダーやらその辺りがOSXでも動くようになるっぽいです。以前のOpenGLES3.1でAndroidでも動くようになったので、Unity上にGPUパーティクルが来る日も近いきもしなくもなくもなくも・・・

SSRや新しいイメージエフェクト

Unity 5.3で入る予定だったスクリーンスペースリフレクション等のエフェクトですが、一旦AssetStoreでの公開へ切り替えたみたいです。

f:id:tsubaki_t1:20151209000959p:plain

https://www.assetstore.unity3d.com/jp/#!/content/51515

他にもDoFやアンチエイリアス、トーンマッピングカラーグレーディングが含まれます。

tsubakit1.hateblo.jp

リアルタイムGIの解像度をシーンビューで確認可能に

ライトマップの動作を確認する方法の一つにClasteringとLit Clusteringが追加されました。これでリアルタイムGIを行った際のライト解像度を確認する事ができます。

f:id:tsubaki_t1:20151209193920p:plain

f:id:tsubaki_t1:20151209193936p:plain

Lit Clusteringは光源処理の影響範囲についてです。

f:id:tsubaki_t1:20151209194529p:plain

f:id:tsubaki_t1:20151209194548p:plain

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp

リアルタイムGIのベイクが高速化

したそうです。大体1.5倍から2倍くらい。

以下の画像はリリースノートより。

f:id:tsubaki_t1:20151209195409p:plain

カスタムコルーチン

コルーチンに独自の条件で待ち受ける仕組みが追加されました。

CustomYieldInstructionを継承したり、ラムダ式で評価してコルーチンの条件設定を行うことが可能になっているみたいです。

 UnityWebRequestのモバイル対応

docs.unity3d.com

JSONの公式サポート

JSONシリアライズ、デシリアライズが追加されました。

f:id:tsubaki_t1:20151208173237p:plain

ちなみに、このAPIは別スレッドから呼べるみたいです。

Web GLからPreviewが取れた

長らくPreviewの表示があったWebGLサポートから、Previewが取れました。

f:id:tsubaki_t1:20151209191710p:plain
代わりにUnity Web Playerが非推奨になりました。ぐぬぬ

IAP(アプリ内課金)の追加

追加されました。
むしろ、何故今まで追加されなかったって気も。

f:id:tsubaki_t1:20151208173717p:plain

各ストア毎のプラグインをインポートして使います。

f:id:tsubaki_t1:20151208173913p:plain

AndroidのHide Status Barが削除

Hide status barが削除されたみたいです。
何故消したし

tsubakit1.hateblo.jp

Monodevelopで日本語が打てる

 VSCodeにデバッグ機能が追加されたり、WindowsだとVisual Studio community editionが標準搭載だったりと存在が薄くなってるMonodevelopさんですが、標準でも日本語が打てるようになったので少し助かり。

デバイスへのスクリプトデバッグって(多分)まだVSCodeでは出来ないですし。

Unity 5.3アップデートガイド

Unity 5.3hえのアップデート時に注意すべき項目が纏まっています。

docs.unity3d.com

関連

www.slideshare.net

docs.unity3d.com

blogs.unity3d.com

*1:Application.LoadLevelもまだ使えます