テラシュールブログ

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

【Unity】Unity 5.1で追加された機能で個人的に気になった部分まとめ

f:id:tsubaki_t1:20150612013227p:plain

Unity 5.1で多くの機能が追加されました。

blogs.unity3d.com

個人的に気になった部分を簡単にまとめてみようと思います。

unity3d.com

新しいマルチプレイシステム

今までのNetworkViewRaknetといったマルチプレイヤーシステムに代わり、新しいネットワークシステムの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用カメラに切り替わります。

f:id:tsubaki_t1:20150610224646p:plain

また、単一パスのカリングと共有シャドウマップ等、本来「カメラが2つあったため2回行っていた処理」を1回にまとめたみたいです。

Gear VR対応はまだ専用プラグインが必要です。 Unity 5.1.0p1で対応しました。

新しいHDRカラーピッカー

色の輝度が一定以上高い時、色は白く飛びます。HDR(ハイダイナミックレンジ)は、この白飛びしている部分の色を表現してくれるカラーピッカーです。

MaterialのEmissionを一定以上上げると、HDRのマークが付きます。この時の色が、だいたいマテリアルのカラーと一致します。

f:id:tsubaki_t1:20150610230556p:plain

f:id:tsubaki_t1:20150610230612p:plain

Crunch textureフォーマットのサポート

割と綺麗で圧縮率が凄く高いCrunch textureがサポートされました。サポート対象はPCのみで、他のプラットフォームは選択出来ますが使用することは出来ません。

f:id:tsubaki_t1:20150612003246p:plain

簡単な比較画像です。

一番左がRGBA32で10.7MB、中央がDXT5で2.7MBなのに対し、一番右のCrunch Textureフォーマットは323.2KBとかなりの圧縮率を示しています。

f:id:tsubaki_t1:20150612003815p:plain

また絵も割と綺麗に出ます。まあ並べて比較すると違いは見えますが、メモリ消費量やファイルサイズがこんだけ減るのであれば、場所によっては使っていきたい所です。

ちなみにオリジナルはどちらでしょう。

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が余ってないので、満足に使い物になるのはもう少し先かもしれません。

f:id:tsubaki_t1:20150611232013p:plain

GPUで超弾幕作ってみた ‐ ニコニコ動画:GINZA

またテッセレーションやジオメトリシェーダといった機能も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 ); 

baba-s.hatenablog.com

docs.unity3d.com

Unity Analytics との統合

Unity Analyticsを組み込むのにプラグインが不要になりました。

f:id:tsubaki_t1:20150611234036p:plain

Unity - Services - Analytics

SketchUpのフォーマットが読み込めるように

Sketchupのフォーマット(skp)をエディタ内にD&Dすれば、自動的に読み込んでくれるようになりました。試しにコーヒーメーカーのモデルを読み込んでみました。

ゲームに組む為に必要な「再配布が可能」なモデルは余り無いと思いますが、ちょっと試しに置いてみる感じでは中々に良い感じです。そんな事無さそうな感じ。

f:id:tsubaki_t1:20150612000609p:plain

ScriptableObjectのデータが簡単に作れるように

ScriptableObjectのデータを作るためには以前は面倒な処理を記述する必要がありましたが、CreateAssetMenu属性を設定するだけでメニューから作成出来るようになりました。

using UnityEngine;

[CreateAssetMenumenuName = "ScriptableObject/NetworkData"fileName="NetworkData") ]
public class NetworkData : ScriptableObject
{
    public int count = 0;
    public string name;
}

f:id:tsubaki_t1:20150612002536p:plain

なお、CreateAssetMenuの引数でMenuNameを指定しない場合、ひたすらCreate以下にメニューを追加し続けるので、マトモに使いたい場合はmenuNameを指定するお勧めです。またその場合fileNameを書かないとファイルを作ってくれないので、そこも注意が必要です。

これで以前書いた汎用ScriptableObjectのAsset化スクリプトもお役御免です。

baba-s.hatenablog.com

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp

数字フィールドに計算式を入れて値が入力可能に

数字を入力する項目に計算式を入れると、計算して結果を入れてくれるようになりました。例えば100/50と打てば2と入れてくれます。

f:id:tsubaki_t1:20150612004448g:plain

数字フィールドなので、Animiationにも使うことが出来ます。便利といえば便利。

f:id:tsubaki_t1:20150612004512g:plain

rigidbody2dの制限の追加

角度の固定だけでなく、x軸・y軸への移動を制限する機能が追加されました。

f:id:tsubaki_t1:20150612010829p:plain

その他

  • ホーム画面に無意味なログインが追加されました。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に指定します。

    f:id:tsubaki_t1:20150612011453g:plain