Unity 5.1で多くの機能が追加されました。
個人的に気になった部分を簡単にまとめてみようと思います。
新しいマルチプレイシステム
今までのNetworkViewやRaknetといったマルチプレイヤーシステムに代わり、新しいネットワークシステムのUnity Multiplayer(通称UNET)に一新されました。
Unity - Services - Multiplayer
それに伴い、UnityEngine.NetworkngのAPIが追加されました。使い方については今回の次にでも書こうと思います。
http://docs.unity3d.com/ScriptReference/30_search.html?q=UnityEngine.Networking
ついでに過去のネットワーク用API(RPC等)が非推奨になりました。
VR対応
Oculus Rift用プラグインを入れなくともOculus Rift向けアプリが作成出来るようになりました。Virtual Reality Supportedにチェックを入れるとカメラがVR用カメラに切り替わります。
また、単一パスのカリングと共有シャドウマップ等、本来「カメラが2つあったため2回行っていた処理」を1回にまとめたみたいです。
Gear VR対応はまだ専用プラグインが必要です。 Unity 5.1.0p1で対応しました。
新しいHDRカラーピッカー
色の輝度が一定以上高い時、色は白く飛びます。HDR(ハイダイナミックレンジ)は、この白飛びしている部分の色を表現してくれるカラーピッカーです。
MaterialのEmissionを一定以上上げると、HDRのマークが付きます。この時の色が、だいたいマテリアルのカラーと一致します。
Crunch textureフォーマットのサポート
割と綺麗で圧縮率が凄く高いCrunch textureがサポートされました。サポート対象はPCのみで、他のプラットフォームは選択出来ますが使用することは出来ません。
簡単な比較画像です。
一番左がRGBA32で10.7MB、中央がDXT5で2.7MBなのに対し、一番右のCrunch Textureフォーマットは323.2KBとかなりの圧縮率を示しています。
また絵も割と綺麗に出ます。まあ並べて比較すると違いは見えますが、メモリ消費量やファイルサイズがこんだけ減るのであれば、場所によっては使っていきたい所です。
ちなみにオリジナルはどちらでしょう。
crunch - Advanced DXT texture compression and real-time transcoding library - Google Project Hosting
OpenGL ES 3.1サポート
AndroidでOpen GL ES 3.1がサポートされました。これによりCompute Shaderを初めとしたリッチな機能がAndroidデバイス上で動作するようになりました。
Compute Shaderは処理をGPUに投げることで、GPUの馬鹿みたいな演算機能を使用するアプローチです。上手く使えれば、下の様な弾幕も張れるようになるかもしれません。ただ、モバイルは実際そこまでGPUが余ってないので、満足に使い物になるのはもう少し先かもしれません。
またテッセレーションやジオメトリシェーダといった機能もAndroid上で使用できるようになります。
なお前提条件としてOpenGLES3.1が対応している必要があり、それが対応している端末は…
Bringing DirectX 11 features to mobile in Unity 5.1 – Unity Blog
ついでに試験的にWindows向けにOpenGL 4.5にも対応したみたいです。
UnityEngine.Assertions
UnityEngine.Assertions.Assertが追加されました。これは簡単に言えば動作を確認する機能で、Development Build時に想定していない値が発生した場合にエラーメッセージを表示してくれます。
例えば以下のように記述しておけば、cachedComponentがセットされていない場合はメッセージを発信してくれる訳です。
Assert.IsNull( cachedComponent );
Unity Analytics との統合
Unity Analyticsを組み込むのにプラグインが不要になりました。
SketchUpのフォーマットが読み込めるように
Sketchupのフォーマット(skp)をエディタ内にD&Dすれば、自動的に読み込んでくれるようになりました。試しにコーヒーメーカーのモデルを読み込んでみました。
ゲームに組む為に必要な「再配布が可能」なモデルは余り無いと思いますが、ちょっと試しに置いてみる感じでは中々に良い感じです。そんな事無さそうな感じ。
ScriptableObjectのデータが簡単に作れるように
ScriptableObjectのデータを作るためには以前は面倒な処理を記述する必要がありましたが、CreateAssetMenu属性を設定するだけでメニューから作成出来るようになりました。
using UnityEngine;
[CreateAssetMenu( menuName = "ScriptableObject/NetworkData", fileName="NetworkData") ]
public class NetworkData : ScriptableObject
{
public int count = 0;
public string name;
}
なお、CreateAssetMenuの引数でMenuNameを指定しない場合、ひたすらCreate以下にメニューを追加し続けるので、マトモに使いたい場合はmenuNameを指定するお勧めです。またその場合fileNameを書かないとファイルを作ってくれないので、そこも注意が必要です。
これで以前書いた汎用ScriptableObjectのAsset化スクリプトもお役御免です。
数字フィールドに計算式を入れて値が入力可能に
数字を入力する項目に計算式を入れると、計算して結果を入れてくれるようになりました。例えば100/50と打てば2と入れてくれます。
数字フィールドなので、Animiationにも使うことが出来ます。便利といえば便利。
rigidbody2dの制限の追加
角度の固定だけでなく、x軸・y軸への移動を制限する機能が追加されました。
その他
- ホーム画面に無意味なログインが追加されました。proxyを使っている環境ではココで問題を起こすかもしれません。
- グラフィックスにコマンドバッファがどうたらこうたら…が追加されました。CommandBuffer.DrawProceduralとか。
【Unity】Unite 2015「Rederer Massive Amount of Objects in Unity」レポート - Qiita
- 利用しているグラフィックAPIを判別するRendering.GraphicsDeviceTypeが追加されました。
- ヘルプアイコンから跳ぶヘルプの移動先を指定するUnityEngine.HelpURLAttributeが追加されました。
- オブジェクト追加時のナンバリングが obj1,obj2,obj3 のような形から obj(1),obj(2),obj(3) になるよう改悪されました。
- Automatic Graphics API が追加されました。Open GL ES 2.0を使いたい場合は、これをOFFにして優先度をOpen GL ES 2.0に指定します。