【Unity】Unity 5.3で個人的に気になった機能まとめ
Unity 5.3で気になった項目まとめ
Unity 5.3で新しく追加・変化する機能についてです。
個人的に気になる順番で紹介します。
- Unity 5.3で気になった項目まとめ
- プラットフォーム個別ダウンロード
- マルチシーンエディティングとその周辺
- LZ4圧縮のAssetBundle
- マルチディスプレイ
- 非同期なテクスチャのアップロード
- パーティクルの改善とその周辺
- 2D周りとその周辺
- 幾つかのiOS9機能の対応
- パフォーマンスについて色々
- OpenGL Core
- SSRや新しいイメージエフェクト
- リアルタイムGIの解像度をシーンビューで確認可能に
- リアルタイムGIのベイクが高速化
- カスタムコルーチン
- UnityWebRequestのモバイル対応
- JSONの公式サポート
- Web GLからPreviewが取れた
- IAP(アプリ内課金)の追加
- AndroidのHide Status Barが削除
- Monodevelopで日本語が打てる
- Unity 5.3アップデートガイド
- 関連
プラットフォーム個別ダウンロード
Unityエディタをダウンロードする際に、不要なプラットフォームを含めないように設定可能になったみたいです。
エディタのみだと、ダウンロードサイズは400MBくらいまで小さくなります。
このプラットフォームサポートは後で追加したりも出来ます。
但しそのときインストールしたUnityエディタのバージョンと一致してないと認識してくれません。
プラットフォームをここで登録していない場合は、こんな感じで表示されます。
マルチシーンエディティングとその周辺
複数のシーンを同時に編集可能なマルチシーンエディティングが可能になりました。
これにより、「ステージ」「敵」「ギミック」や、「UI」と「ゲーム」といった分割作業が簡単になります。
また、DontDestroyOnLoad(シーン切替時に破棄されない)が明示的に表示されるようになりました。
「現在開いていないシーン」をHierarchyへドラッグ&ドロップすることで、Hierarchyに新しくシーンが読み込まれます。
ちなみに即時読込を行いたくない場合は、Altを押しながらHierarchyへドラッグ&ドロップします。範囲が広いシーンはこれで行うのが良さそうです。
アンロードもしくは読み込んでいないシーンは、Load Sceneで再度読み込めます。
これに伴い、シーン関連の運用がUnityEngine.SceneManagement.SceneManagerへ変化しました*1。
SceneManagerでは、現在アクティブなシーン一覧の確認や、特定のシーンへオブジェクトを移動させる等の機能を持っています。
エディタ拡張周りはEditorSceneManagerを使用します。
マルチシーンエディティングも、幾つか癖のある挙動があるのでAssetBundleの次辺りに詳しく説明しようと思います。
LZ4圧縮のAssetBundle
AssetBundleの圧縮はLZMAを使用していた訳ですが、新しくLZ4フォーマットが追加されました。
このフォーマットではチャンク読みが可能になっており、圧縮した状態でもアセット分のメモリ消費のみで解凍出来るようになっています。つまり、CacheOrDownloadを行った場合にファイルが全て解凍されず、圧縮した状態のまま保持出来るみたいです。
その他諸々結構色々と変わってるので、別途紹介します。
マルチディスプレイ
カメラを複数台用意し、どのビューにどのカメラを表示するか…といった制御が可能になりました。Standalone向けに。
ONにするためには少しスクリプトが必要だったと思いますが、これでマルチスクリーンなゲームが作りやすくなります。
UIのScreenSpace-Overlayを使用してる場合、どのディスプレイに表示するか選択する項目が追加されています。
ちなみに、VR向けで「HMDを被った時のVR画面」と「VR画面を外からみた画面」の2つを別々に表示するAPIも追加されてたりします。
非同期なテクスチャのアップロード
Unityのロード時にゲームが止まる要因にテクスチャのVRAM(GPU)へのアップロードがありました。ここはバスが狭い上に超解像度が多いモバイルでは問題になってました。
これを非同期…というか、分割して転送することで停止時間を減らすアプローチが追加されました。
非同期でシーンやリソースを読む際、Async Upload Time SliceやAsync Upload Buffer Sizeで分割され読み込まれるみたいです。
パーティクルの改善とその周辺
ほぼGUIでしか設定できなかったパーティクルシステムに、ちゃんとAPIが追加されました。
また、Scaling ModeがLocalのときに大きさの設定をオブジェクトの設定から行えるようになったり、
2D Colliderに対して当たるようになります。
2D周りとその周辺
2Dの目玉機能であるスマートテラインやタイルマップは5.5に見送りになりましたが、その他幾つかの面白い機能が残りました。
スプライトのFlipとか、
接続を破壊可能な2D Jointとか、
描画周りの処理が軒並みメインスレッドから別スレッドに移行した事とか。
幾つかのiOS9機能の対応
iPad Pro pencil(ペン型のデバイス)やら iOS9 app slicing(iPadとiPhoneでリソースを分ける)やら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での公開へ切り替えたみたいです。
https://www.assetstore.unity3d.com/jp/#!/content/51515
他にもDoFやアンチエイリアス、トーンマッピングカラーグレーディングが含まれます。
リアルタイムGIの解像度をシーンビューで確認可能に
ライトマップの動作を確認する方法の一つにClasteringとLit Clusteringが追加されました。これでリアルタイムGIを行った際のライト解像度を確認する事ができます。
Lit Clusteringは光源処理の影響範囲についてです。
リアルタイムGIのベイクが高速化
したそうです。大体1.5倍から2倍くらい。
以下の画像はリリースノートより。
カスタムコルーチン
コルーチンに独自の条件で待ち受ける仕組みが追加されました。
CustomYieldInstructionを継承したり、ラムダ式で評価してコルーチンの条件設定を行うことが可能になっているみたいです。
カスタムコルーチン - Unity Blog https://t.co/Nr5eSulWvc カスタムコルーチンを使うと「クリックされたら次の行を実行」みたいな処理をこんな感じで書ける。 pic.twitter.com/kOTLtGLjhw
— 椿 (@tsubaki_t1) 2015, 12月 2
UnityWebRequestのモバイル対応
JSONの公式サポート
ちなみに、このAPIは別スレッドから呼べるみたいです。
Web GLからPreviewが取れた
長らくPreviewの表示があったWebGLサポートから、Previewが取れました。
代わりにUnity Web Playerが非推奨になりました。ぐぬぬ
IAP(アプリ内課金)の追加
追加されました。
むしろ、何故今まで追加されなかったって気も。
各ストア毎のプラグインをインポートして使います。
AndroidのHide Status Barが削除
Hide status barが削除されたみたいです。
何故消したし
Monodevelopで日本語が打てる
Unity 5.3 で搭載される予定の新型 Monodevelop 5.9 Preview。最大の特徴は、日本語が打てる。Macで日本語が打てる。 http://t.co/MVwfgGsdU4 pic.twitter.com/pvA05Fm4eu
— 椿 (@tsubaki_t1) 2015, 9月 1
VSCodeにデバッグ機能が追加されたり、WindowsだとVisual Studio community editionが標準搭載だったりと存在が薄くなってるMonodevelopさんですが、標準でも日本語が打てるようになったので少し助かり。
デバイスへのスクリプトデバッグって(多分)まだVSCodeでは出来ないですし。
Unity 5.3アップデートガイド
Unity 5.3hえのアップデート時に注意すべき項目が纏まっています。
関連
*1:Application.LoadLevelもまだ使えます