Unity を検索

シェア

新しいリリースサイクルの第一号であった Unity 2018.1 では、Unityの中核を成す技術に 2 つの大きなアップグレードが行われました。スクリプタブルレンダーパイプライン(SRP)とシェーダーグラフとの組み合わせがアーティストとデベロッパーをより一層強力にサポートし、高性能なマルチスレッドシステムである C# Job System によって、プログラミングに頭を悩ませることなくマルチコアプロセッサーの利点が活かせるようになりました。Unity 2018.2 ではこれらの革新的要素が更に強化され、いくつかの新機能も搭載されました。本記事では、Unity 2018.2 で行われた最も重要な更新についての概要説明をご提供します。

本記事で新機能の一覧をお読みになると同時に、こちらから Unity 2018.2 をダウンロードしていただけます。または、Unity Hub からもダウンロード可能です。

Unity 2018.2 の目的のひとつは、スクリプタブルレンダーパイプライン(SRP)を強化してレンダリングを更にレベルアップさせることです。また、モバイルプラットフォームでの成功を後押しする様々な機能の開発・改良にも特に注力しました。まずはこれら 2 つの面に関しての更新内容を簡単にご紹介してから、リリース全体の詳細説明に入りましょう。

Unity 2018.2 では、ライトウェイトレンダーパイプライン(LWRP)のパフォーマンスが最適化され、高精度ビジュアル品質の実現をサポートする HD レンダーパイプライン(HDRP)が強化されました。この一環として、シェーダーグラフにも複数の改良が加えられました。シェーダーグラフはこれら両方のパイプラインに対応になりました(LWRP と HDRP は現段階ではプレビュー版です)。

さらに、IL2CPP は iOS、Android、Windows、macOS、UWP、PS4 のマネージドコードのデバッグに対応しました。また、ライトウェイトレンダーパイプライン(LWRP)にモバイル向けの最適化機能が追加されました。

Android 向けプロジェクトに関しては、64 ビット(ARM64)への最終的な対応が完了し、事前にライブラリを作成しなくても Unity の Plugins フォルダーに Java コードを追加できるようになりました。

これに加え、ベクターグラフィックスインポーターやピクセルパーフェクトなどの、新しい 2D 機能のプレビュー版もいくつか搭載されています。ベクターグラフィックスインポーターは、SVG グラフィックスをより扱いやすくするものです。ピクセルパーフェクトを使用すると、解像度の異なる様々なデバイスで、レトロなスタイルのビジュアルをより簡単に実現できます。

以下、本バージョンで加えられた改良のすべてをご紹介します。

Unity 2018.2 の改良点

詳細解説

グラフィックス

スクリプタブルレンダーパイプライン(SRP)の改良点

スクリプタブルレンダーパイプライン(プレビュー版)は、Unity 2018.1 で初めて公開されました。これにより、アーティストとデベロッパーが、新しい強力なレンダーパイプラインを自ら制御できるようになりました。Unity 2018.2 では、この SRP に以下の改良が加えられています。

SRP バッチャー

CPU レンダリングの高速化

SRP バッチャーは Unity エンジンの新しい内部ループで、GPU パフォーマンスに影響を与えることなく CPU レンダリングを高速化します。旧 SRP レンダリングコードがこれに置き換えられます。

物理ベースレンダリング(PBR)を使用するゲームでは、多数のオブジェクトやメッシュが、オブジェクトごとの各種マテリアルに関して同じシェーダーやキーワードを共有している場合がしばしばあります。SRP バッチャーは、PBR を使用するゲームにおいて CPU 速度を大幅にアップさせます。

SRP バッチャーは、HD レンダーパイプライン(HDRP)およびライトウェイトレンダーパイプライン(LWRP)の両方と併用でき、現段階で PC DirectX-11、Metal、および PlayStation 4 に対応しています。

スクリプタブルシェーダーバリアントのストリップ

プレイヤービルド時間およびデータサイズの削減

プレイヤーのビルド時間とデータサイズはプロジェクトの複雑性が増すにつれて増加します。これはシェーダーバリアントの数が増えるためです。

バージョン 2018.2 では、スクリプタブル シェーダーバリアントのストリップ機能が搭載されました。これにより、シェーダーバリアントの生成数の管理が可能となり、結果としてプレイヤービルド時間とデータサイズを大幅に削減できます。

この機能を使うと、無効なコードパスや使用されていない機能を含むすべてのシェーダーバリアントをストリップできます。また「debug」や「release」などのシェーダービルド設定を、イテレーション時間を伸長させたりメンテナンスを複雑にすることなく作成することができます。スクリプタブルシェーダーバリアントのストリップ機能は、チームの効率性を大幅に向上させる可能性を持っています。こちらのブログ記事では、スクリプタブルシェーダーバリアントのストリップが Unity のシェーダーパイプラインアーキテクチャにどのように実装されているかを解説しています。

GraphicsSettings 内にある、シェーダーバリアントのストリップのオプション

ライトウェイトレンダーパイプライン(プレビュー版)

高いパフォーマンスを実現

ライトウェイトレンダーパイプライン(LWRP)は高いパフォーマンスを実現します。これは特にローエンドのハードウェアや、限られたリソースを限界まで使う xR などのアプリケーション、モバイルなどのプラットフォームに有効です。

LWRP は、Optimized Tile(最適化されたタイル)の利用によってパフォーマンスと最適化を更に向上させます。タイルに対する読み込み・書き込み数の調整によってモバイル GPU のメモリが最適化されます。また、ライトのシェーディングをバッチで行うことでオーバードローとドローコールの数を削減します。

現時点で、すべての VR プラットフォームで LWRP の基本機能がサポートされています。ただし、マルチサンプルアンチエイリアシング(MSAA)はバージョン 2018.3 が公開されるまでは非対応です。

(注)LWRP は現段階では ARCore や ARKit などのハンドヘルド AR、HoloLens デバイス、Magic Leap デバイスには対応していません。今後のプロダクト計画については追ってお知らせします。

LWRP は、ローエンド HW や、XR などの限られたリソースを限界まで使うアプリケーションにおいて高いパフォーマンスを実現します。

HD レンダーパイプライン(プレビュー版)

Unity 2018.1 でプレビュー版が公開された HD レンダーパイプライン(HDRP)は、主に PC や据え置き機などのハイエンドのプラットフォームをターゲットにした、高精度ビジュアルの実現に焦点を合わせたパイプラインです。

バージョン 2018.2 ではこれが更に進化して、ハイエンドのビジュアル品質の実現をより強力にサポートします。ただし、 SRP(スクリプタブルレンダーパイプライン)は両方ともまだプレビュー版であるため、現時点では製品版での使用は推奨されないことにご注意ください。本バージョンでの改良点には、ボリューメトリック、光沢をもつ平面反射、ジオメトリックスペキュラーアンチエイリアシング、プロキシスクリーン空間反射・屈折、メッシュデカール、シャドウマスクなどが含まれます。

ボリューメトリック ― ボリューメトリックフォグは、(エリアライト以外の)対応するすべてのライトタイプからライティングを受け取ります。また Density Volume によってフォグの密度をローカルで制御することも可能です。

光沢をもつ平面反射 ― 平面反射が光沢反射に対応となりました。つまり、マテリアルのスムースネスが考慮されるようになりました。

ジオメトリックスペキュラーアンチエイリアシング ― 多数の三角形を高密度に含むメッシュはスペキュラーエイリアシングを発生させることがあります。これを解決するため、エイリアシングの量を削減・制限するオプションを追加しました。

プロキシスクリーン空間反射・屈折 ― この機能を使うと、プロキシボリューム(シーン境界のボリュームの近似)を使用してスクリーン空間反射・屈折が実行できます。デプスバッファを使用した場合より精度は低くなりますが、ランタイムのコストが抑えられます。

メッシュデカール ― プロジェクターデカールに加え、メッシュデカールが使用可能になりました。

シャドウマスク ― 以前は HDRP のシャドウマスクは距離シャドウマスクモード(Shadow Distance に設定された最大距離で動的シャドウがシャドウマスクにフェードする)を使用していました。バージョン 2018.2 では、動的シャドウがライトマップを使用していないオブジェクトのみをレンダーしている場合に、ライト毎の選択が可能になりました(組み込みパイプラインのシャドウマスクモードに相当)。したがって、組み込みパイプラインの場合と異なり、HDRP では両方のシャドウマスクモードを同時に有効にすることができ、組み込みのシャドウマスクモード用にライト毎の制御が行えます。

さらに、シェーダーグラフに部分的に対応となり、シェーダーを視覚的に作成できるようになりました。現在、全体的な安定性とパフォーマンスの向上を行っています。「部分的な対応」と言うのは、HDRP の 1 つのサブセットのみシェーダーグラフ内で利用可能であるためです。現段階では高度なマテリアル機能(SSS、クリアコート)およびテッセレーションは利用できません。

また、シェーダーのストリップ機能も搭載され、プレイヤーのビルド時に、不要なシェーダーのコンパイルを回避できるようになりました。これによりビルド時間が大幅に短縮されます。

(注)HDRP は現段階ではどの AR・VR プラットフォームにも対応していません。AR・VR プラットフォームへの対応は 2019 年に行われる予定です。今後のプロダクト計画に関する情報は追ってお知らせします。

ボリューメトリックライトによる太陽光線を用いたフォトグラメトリのデモ『Fontainebleau』

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

この車の宣伝映像は、最初から最後まで Unity で HDRP を使用して制作されました。

プログレッシブライトマッパー

バージョン 2018.1 でプレビュー版でなくなったプログレッシブライトマッパーにも、いくつかの改良が加えられました。

ベイクされたライトの減衰が設定可能に

プログレッシブライトマッパーの「設定可能な減衰」によって、ライトをベイクする際に、より現実の物理法則に近い説得力のある減衰曲線を設定することが可能になりました。以前は、スポットライトとポイントライトの見た目の強度はライトの範囲の値に大きく影響されていました。これでは物理的な説得力がありません。なぜなら現実世界においては光の減衰距離はその強度によって決まるからです。

この機能を使用すると、ワールド空間距離と結びついた距離減衰を用いることによって、プログレッシブライトマッパーで範囲と強度が切り離すことが可能となります。旧式の減衰(図中の Legacy Falloff)も引き続き使用できますが、それに加えてリニア減衰(図中の Linear Falloff)、距離の逆 2 乗減衰(図中の Inverse Squared Falloff)、範囲の限界を超えると値を 0 にする距離の逆 2 乗減衰(図中の Inverse Squared Falloff with Range Attenuation)が使用可能になりました。HDRP の初期設定ではリアルタイムライティングをマッチさせるために逆 2 乗減衰が有効になっており、ライトの強度には物理単位が有効になっています。

事前計算済みライティング用のインスタンス化されたアルベドおよび発光マテリアル

すべてのライトマップの放射光とアルベドは 1 つのライトマップ空間に割り当てられていました。しかし、インスタンス間でアルベドと放射光の設定を共有することが多いので、本バージョンからインスタンス毎のマップ生成もサポートするようになりました。これにより、プログレッシブライトマッパーのメモリ使用量が削減され、さらに大きなシーンがベイク可能になりました。

加算的シーンライティングの警告

パフォーマンスの観点から、大きなシーンの場合はしばしば、小さな「サブシーン」に分割して表示状況に応じてランタイムでのロードやアンロードを行えるようにすることが推奨されます。これは「加算的ロード」または「マルチシーン」セットアップと呼ばれます。

加算的にロードされた、グローバルイルミネーションを含むシーン

グローバルイルミネーション ライティングをマルチシーン設定用に生成する時用に Unity が提供しているワークフローは、必要なすべてのサブシーンを読み込んでから、その完全なシーンヒエラルキー用にライティングの生成を行えるというものです。この出力は 1 つの LightingData.asset で、これにはライトマップ、事前計算済みリアルタイムグローバルイルミネーション、およびプローブデータが格納されています。これは最初に読み込まれたシーン(「マスター」シーンであると推測される)と関連付けられます。

その後ランタイム中にロード(またはアンロード)されたシーンは、そのライティングデータを、マスターシーンと関連付けられた LightingData.asset から派生させます。この場合、サブシーンのライティング設定は無関係です。ただし、目的に応じてシーンを個別にベイクしたり異なる順序で読み込んだりすることも可能です。これにより、不適合なライティング設定やライティングデータがシーンに含まれてしまう場合があります。例えば、スカイボックスに相違が生じたり、ライトマップの解像度が変わったり、混合ライティングモードに相違が生じてしまうことなどがあります。

これまでは Unity はこの問題の警告を出さなかったので、期待通りの結果が出なかった場合に原因が特定しにくいケースがありました。本バージョンから、不適合がある場合には通知の警告メッセージが生成されるようになりました。すべての不適合要素の具体的な情報が提供され、早期のデバッグや検証が可能になります。

その他の改良点

カリングとライトマップを両方適用したシャドウ描画関数から「ライト毎の」オプションが利用可能になりました(スクリプティング API のみ)。これは HDRP で使用可能です。

シェーダーグラフ(プレビュー版)

バージョン 2018.1 ではプレビュー版パッケージとしてシェーダーグラフが初公開され、シェーダーの視覚的なビルドが可能になりました。コードを記述する代わりに、グラフネットワーク内でノードを接続します。グラフ内の各ノードは、加えられた変更に対するフィードバックをその場で提供します。この使い勝手の良さにより、新しいユーザーでもシェーダーの作成に携わることが可能になります。今回のリリースでは、以下をはじめとするいくつかの改良を加えました。

HD レンダーパイプライン(HDRP)への対応

シェーダーグラフが HDRP に対応になりました。物理ベースレンダリングと Unlit Master ノードの両方に対応しています。シェーダーグラフでビルドされたシェーダーは LWRP と HDRP の両方で機能します。

頂点位置

頂点位置が物理ベースレンダリングおよび Unlit Master ノードの Position スロットから修正可能になりました。初期設定ではこのノードへの入力はオブジェクト空間位置になっています。このスロットへのカスタム入力は、該当の頂点の絶対的なローカル位置を指定する必要があります。一部のノード(Procedural Shapes など)は頂点シェーダーでは使用できません。そうしたノードはこのスロットとの互換性がありません。

マスターノードの設定

マスターノードの設定が可能になりました。オン・オフを切り替えられる小さなウィンドウで、シェーダーの各種レンダリング設定を行えます。

プロパティの参照名と公開・非公開の切り替え

プロパティの参照名が変更可能になり、スクリプトからのシェーダープロパティの参照が格段に行いやすくなりました。参照名を変更するには、プロパティを選択し、「Reference」の隣に新しい名前を入力してください。初期設定の名前にリセットしたい場合は「Reference」を右クリックして「Reset reference」を選択してください。

展開されたプロパティウィンドウ内で、「Exposed」チェックボックスの切り替えも行えます。

グラフの編集可能パス

シェーダーグラフとサブグラフのパスが変更可能になりました。シェーダーグラフのパスを変更すると、シェーダー選択リスト内での表示位置が変わります。サブグラフのパスを変更すると、ノード作成メニュー内での位置が更新されます。

Is Front Face ノード

このノードを使うと、グラフの出力を特定のフラグメントのFace Sign に応じて変更することができます。現在のフラグメントがオモテ面の一部であれば、ノードは True を戻します。裏面の場合は False を戻します。(注)この機能を使用するためには、マスターノードの 「two sided」 が有効化されている必要があります。

Gradient ノード

2 つの新しいノードによってグラデーション機能を追加します。Sample Gradient ノードは、Time パラメーターの設定値でグラデーションをサンプル生成します。このグラデーションの設定は Gradient スロットの制御ビューで行えます。Gradient Asset ノードは、各種 Time パラメーターを使用した複数の Sample Gradient ノードによってサンプル生成されるグラデーションを設定するものです。

Texture3D および Texture2D Array

Unity の対応するテクスチャタイプに、2 つの新しいプロパティタイプと 4 つの新しいノードが追加されました。これにより、Texture3D 型および Texture2D 型の配列アセットを、シェーダーグラフ内で定義およびサンプル生成できるようになりました。

Texture 2D LOD ノード

LOD 機能のための新しいノードが 1 つ追加されました。Sample Texture 2D LOD は、Sample Texture 2D と同じ入出力スロットを使用しますが、Vector1 スロットによる LOD(詳細度)調整用の入力も含んでいます。

生成されたコードの表示

すべてのノードに関して、生成されたコードの表示が可能になりました。これを行うには、特定のノード上で右クリックし、「Show Generated Code」を選択します。Unity に接続されたコードエディターでコードスニペットが開かれます。

エディターの Vulkan 対応(Windows・Linux 用、実験的)

本リリースは、Vulkan でのエディターの実行に(Windows と Linux の両方で)試験的に対応しています。Vulkan は、新世代のグラフィックスおよび計算 API で、高い効率性を備え、PC ・据え置き機、モバイル端末、埋め込みプラットフォームなど幅広いデバイスで使用されているモダンな GPU へのクロスプラットフォームのアクセスを可能にします。

Texture Mipmap Streaming

本リリースでは、テクスチャミップマップをオンデマンドで(つまり必要な時にのみ行う形で)メモリ内にストリーミングすることができるようになりました。

この機能のメリット

この機能を有効にすると、Unity アプリケーションが要するテクスチャメモリの量を削減できます。

仕組み

このシステムが有効になっていると、メッシュがアクティブなカメラに近くなった時にのみ、高解像度のテクスチャミップマップが読み込まれます。高解像度のミップマップデータはメモリ内に保持されますが、全体のテクスチャメモリはユーザーの設定したメモリ予算内にとどめられます。(同じテクスチャの)異なる詳細度のミップマップの読み込みによってテクスチャメモリが予算を超過する場合、カメラから最も遠いメッシュ上にある解像度の高いミップマップがメモリから解放されます。

初期読み込み時間の短縮

最初に読み込まれるテクスチャデータの量が削減されることにより(つまり低解像度のミップマップのみを読み込むことにより)、シーンの初回読み込み時間も短縮できる可能性があります。初回読み込みのスピードが改善されるかどうかはプラットフォームによります。

より細かい制御が可能に

Texture Mipmap Streaming システムによって、どのレベルのミップマップを実際にメモリに読み込むかを完全に制御することができます。通常 Unity はディスク上に保存されているすべてのミップマップレベルを読み込みますが、このシステムを使用することによって、読み込むミップマップのレベルを直接設定することが可能になります。

また、このシステムを使用すると、少しの CPU 時間消費と引き換えに、GPU メモリを大幅に節約できる可能性があります。

この機能の有効化と管理は簡単に行えます

この機能は品質設定メニューから簡単に有効化できます。テクスチャ毎に、このシステムにストリームさせるかどうかを個別に設定可能です。メモリの容量を確認しながら、メトリックをクエリしてテクスチャメモリの使用量を特定することができます。

各種設定を調整・制御して、メモリ容量と CPU コストのバランスを取り、特定のテクスチャを他のテクスチャより優先させたり([例]環境テクスチャよりキャラクターテクスチャを優先させる)することができます。

C# Animation Job

AnimationPlayable に関しては、ユーザー記述の C# Playable を直接アニメーションデータとインタラクトさせることが可能になりました。

マルチスレッド C# コードもユーザー自身で記述して PlayableGraph の使用する AnimationStream データを制御することができます。これにより、ユーザー作成の IK ソルバやプロシージャルアニメーションのみならず、カスタムミキサーも現在のアニメーションシステムに統合可能となります。

パーティクルシステムの改良点

バージョン 2018.2 における改良点は以下の通りです。

8 つの UV への対応

これにより、今までにない量のカスタムデータが扱えるようになりました。

MinMaxCurve と MinMaxGradient

上記のタイプが、カスタムスクリプト内で、パーティクルシステムの外で使用可能になりました。Particle System UI で使用されているスタイルに合わせることができます。

リニア色空間

パーティクルシステムが、(適切な場合には)GPU への色のアップロード前に色をリニア色空間に変換するようになりました。

スプライトからの放出

Shape モジュールに、スプライトや SpriteRenderer コンポーネントから放出してパーティクルの放出の仕方をスプライトのビジュアルにぴったりマッチさせるための新しいモードが 2 つ追加されました。

BakeMesh

パーティクルシステムのジオメトリをメッシュにベイクするための新しい API が 2 つあります。ひとつはパーティクルジオメトリをベイクする BakeMesh、もうひとつは Trails モジュールをメッシュにベイクする BakeTrailsMesh です。

Show Only Selected(Solo モード)

非常に要望の多かった機能です。より見つけやすくなり、シーンビューのオーバーレイ上にある各種プレビュー制御(再生、再スタート、停止など)とともに利用可能になりました。の制御が提供されています。

ETC テクスチャへの対応

Texture Sheet Animation モジュール内でスプライトを使用した場合に、別々のアルファテクスチャを使用するシェーダーが、パーティクルと併用可能になりました。

2D

Pixel Perfect Camera(プレビュー版パッケージ)

Pixel Perfect のプレビュー版パッケージを使用して、思い描いた通りのピクセルアートを実現させましょう。Pixel Perfect Camera コンポーネントは、スクリーンのサイズに関わらず、完璧な、クリアなピクセル画を実現します。これはすべての計算を自動化することで行われます。

Toge Productions 制作による『Infectonator 3: Apocalypse』

スプライトが動いたり回転したりしている時にも、この機能の利点が発揮されます。エッジをスムーズにするための補間を追加しなくても、以下の画像のように常にはっきりしたピクセルが維持されます。

2D スプライトレンダラーの「ピボットポイントによるソート」機能追加

従来は、どのスプライトが最後にレンダーされる(つまり画像の前面に表示される)かを、スプライトレンダラーの中心と軸の間の距離を使用して特定していました。

今回のリリースでは、中心点ではなくスプライトのピボットポイント(回転の中心点)を様々なソート方法([例]画面の上辺までの距離に応じて配置するなど)における参照点として使用することが可能になりました。例えば見下ろし型の画面レイアウトを持つ RPG の場合、スプライトのレンダリング順を決定するためにはスプライトの最下部が必要になります。

ピボットポイントの利用を選択すれば、よりゲームにより適した基準を設定することができます。

2D の六角形タイルマップ

六角形タイルマップ(Hexagonal Tilemap)のビルドが可能になりました。Flat Top タイプと Point Top タイプの六角形タイルが提供されています。これらは特にストラテジーゲームやデジタルボードゲームの制作に役立ちます。

アート提供:David Baumgart

SVG Importer(プレビュー版パッケージ)

この機能は、SVG(Scalable Vector Graphics)形式の画像を直接プロジェクト内にインポートできるようにするものです。SVG Importer によって、どんな解像度にしても画質が維持される、サイズの非常に小さなスプライトアセットの作成が可能になります。

SVG Importer は、グラデーション、塗りつぶし、クリッピングパス、破線、角丸などの一般的な SVG 1.1 仕様の機能に対応しています。この方法でインポートされたベクターグラフィックスのスプライトは Unity 2D ツールによってサポートされています。

SVG ファイルのインポートが完了すると、ベクターデータが三角形にテッセレーションされてスプライトが生成されます。この生成されたスプライトは 2D システムによって使用可能になります。SVG Importer のソースはパッケージの Editor フォルダー内にあります。

SVG Importer はパッケージマネージャーから Vector Graphics プレビュー版パッケージの一部として入手していただけます。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

Vector Graphics API を使用するとベクター構造物を直接コード内で作成・操作することができます。Vector Graphics API のソースは Runtime フォルダー下の Vector Graphics 名前空間内にあります。

新しい 2D API

Vector Graphics API を使用してベクターデータの作成・操作をコード内で直接行えます。新しい 2D Atlas API によって、アトラスの作成・更新を行うカスタムツールを記述できます。例えば、プレイヤーのプロフィール写真を使用してそのプレイヤー固有のキャラクターテクスチャを作成したり、プレイヤーの設定を基にアトラスを最適化したりすることも可能です。

エディター一般

Unity プロジェクト内で .java および .cpp のソースファイルがプラグインとして使用可能に

Unity プロジェクトのプラグインフォルダーに .java(および .cpp と .a)ソースファイルが追加可能になりました。これらのファイルは、Android Studio で別にライブラリをビルドしなくても Unity プラグインとして認識されて APK にコンパイルされます。プラグインコードは Unity プロジェクトの一部として残るので、Android Studio プロジェクトを別に作成する必要がなくなります。

Standard Assets の差し替え

Unity 2018.2 では 5.0 バージョンの Standard Assets がインストーラーから削除されました。旧プロトタイピング用パッケージ各部の差し替えパッケージの作成が進行中です。最初のパッケージ(Standard Assets: Characters)はプレビュー版として Unity 2018.2 のリリース後、近日中に入手可能となります。これには First-Person および Third-Person Controller が Cinemachine と統合されて含まれているほか、Probuilder でビルドされたプロトタイピング環境も含まれます。詳細は近日公開予定のブログ記事をご覧ください。 旧 5.0 パッケージはアセットストアで引き続き入手可能です。

Unity Hub

近日公開予定の Unity Hub (v1.0) は、Unity の使用開始・セットアップのプロセスをすべてのユーザーのために効率的する目的で設計された新しいツールです。このツールは Unity プロジェクトの管理を一箇所でまとめて行えるようにし、Unity エディターのライセンスおよびアドオン・コンポーネントの検索・ダウンロード・管理を簡易化します。

Unity Hub の初回リリース以来、不具合の修正と細かい調整を重ねて参りました。過去 6 週間のうちに既に 4 バージョン以上がリリースされ、それらは自動的にユーザーのマシンにダウンロードされて更新されています。Hub 1.0 に含まれる機能の一部を以下にご紹介します。

  • プロジェクトテンプレート
  • カスタムのインストール先
  • 新しいプロジェクトへのアセットストアパッケージの追加
  • プロジェクトのビルドターゲットの修正
  • エディター ― インストール後のコンポーネント追加機能

1 月にリリースされたベータ版をお使いになっていない方は、こちらのブログ記事で詳細をお読みいただけます(英語)

シネマティクス

カメラの物理プロパティ

本リリースには、アーティストやシネマトグラファーがより自信を持って Unity を使用できるようにするための新機能が含まれています。その一部を以下にご紹介します。

  • Physical Camera(物理カメラ)の新しい切り替え機能によって、Focal Length(焦点距離)、Sensor Size(センサーサイズ)、Lens Shift(レンズシフト) などの、アーティストやシネマトグラファーが慣れ親しんだ標準的なプロパティの設定にアクセスできます。
  • Model Importer が、Autodesk の® Maya® などの互換性のあるデジタルコンテンツ制作ツールからエクスポートされた Physical Cameras のプロパティを保持するようになりました。
  • Unity のカメラが、コンポーネントを追加したり手動で FOV の計算を行わなくても、他のデジタルコンテンツ制作ツールのカメラと完璧にマッチするようになりました。
  • Camera コンポーネントに、一般的な現実世界のカメラ用のセンサーサイズ(Sensor Size)のドロップダウンメニューが追加されました。

Recorder 1.0

近日公開予定の Unity Recorder 1.0 には、アニメーションクリップや動画、画像シーケンスをエディターから簡単に管理・レコーディングできるようにするための改良が、数多く加えられています。

  • 新しい UI ― クリーンなデザインで、レコーディングデータが扱いやすくなりました。
  • プリセット ― ゼロから始めなくても済むように設定を保存できます。
  • API ― スクリプトを使用して API からレコーディングデータをトリガーできます。
  • 複数のレコーディングデータ ― 後に同じ設定を使用する必要がある場合には、複数のレコーディングを同時に開始してそれらを 1 つのリストに保存することができます。
  • 動画クリップを複数の異なる形式のオーディオでレコーディングできます。
  • 画像シーケンスを複数の形式でレコーディングできます。
  • アニメーションのレコーディングとエクスポート ― アニメーションクリップを(FBX 経由で)お好きなデジタルコンテンツ制作アプリケーションにエクスポートできます。

Unity Recorder v1.0 はアセットストアで公開予定です

コアエンジン

RakNet ベースの古い ネットワーク機能の削除

以前のネットワーキング機能である RakNetはバージョン 5.1 をもって廃止となり、Unity 2018.2 には含まれません。したがって、RakNet を使用したプロジェクトは本バージョンでは機能しません。

Addressable Asset System(プレビュー版)

Addressable Asset System によって、プレハブ、テクスチャ、マテリアル、オーディオクリップ、アニメーションなどの、ゲームを構成するすべての要素の管理が行いやすくなります。プロジェクトが大きくなるにつれ、アセットの数も増加します。ユーザーはこの参照を効率的に行わなければ、ローカルメモリからコンテンツ配布までのゲームのすべてにおいて管理が困難になります。

特にコンテンツ配布方法に関しては特に扱いが困難になります。なぜなら、アセット参照は通常ビルド時間に解決されており、修正を行うために大きなリファクタリングが必要となることも多いからです。

新しい Addressable Asset System によって、ゲームのサイズが大きくなるに応じたスケーリングが行いやすくなります。このシステムは、ランタイムでのアセット管理に関する主要な 3 つ課題を分離します ― 参照、パッケージング、配布です。これにより、コンテンツがローカルマシンにあっても CDN 経由でオンラインで配布されていても、その参照が簡易化されます。これは、コンテンツが自動でロード・アンロードされてメモリがより効率的に管理されるためです。また、メモリの使用をさらに最適化するためのプロファイラーツールも提供されています。結果としてイテレーションが迅速になります。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

新しい Addressable Asset System は別に公開されます。パッケージマネージャー経由でアドオンとして入手可能です。現在はプレビュー版となっています。

高 DPI モニターへの対応

4K モニターをお持ちであれば、高 DPI スケーリングが Linux と Windows の両方で可能です。また Windows ではモニターごとの表示スケール係数の設定が可能です。

Universal Windows Platform の使用する .NET Scripting バックエンドの廃止

Unity はバージョン 2018.1 から、Universal Windows Platform (UWP)で .NET と IL2CPP の 2 つのスクリプティング バックエンドに対応しています。本リリースでは .NET スクリプティング バックエンドへの対応が廃止になりました。廃止の理由は 2 つあります。

UWP へのゲームの移植を行いやすくする

廃止の 1 つ目の理由は、UWP へのゲームの移植をより行いやすくすることです。過去に UWP へのゲームの移植に関わったデベロッパーの苦労の多くは、API サーフェスエリアの違いや、.NET Native ランタイムと(Unity が他のプラットフォームで使用する)Mono・IL2CPP ランタイムの違いに関連したものでした。今回の廃止によって、結果的に大部分のデベロッパーにとって UWP へのゲーム移植が行いやすくなります。

ユーザーサポートを強化する

廃止の 2 つ目の理由は、問題の効率的な解決によってユーザーの皆様のサポートを行いやすくすることです。.NET スクリプティング バックエンドは、Unity が他のすべてのプラットフォームで使用しているランタイムと全く異なっているため、Unity の他の要素と同等のクオリティを維持することが困難でした。今回の廃止により、結果的に .NET スクリプティング バックエンドの維持に費やす時間が短縮され、ユーザーの皆様にとってより重要な機能や問題に注力する時間を増やすことができます。

IL2CPP は他のすべての Unity プラットフォームと同じ .NET API サーフェスを持っており、IL2CPP が WinRT タイプおよび API へのアクセスに対応となってからしばらく経ちます。したがって、バージョン 2018.2 で IL2CPP マネージドデバッガーが追加されたことで、IL2CPP に関するデベロッパーのエクスペリエンスが .NET スクリプティングバックエンドと同等あるいはより優れたものになります。

IL2CPP はバージョン 2017.2 以来の初期設定だったので、ほとんどのユーザーの皆様にとってはこれが問題になることはないでしょう。しかし、IL2CPP をご使用になったことがなく、何か問題に直面された場合はご報告ください。.NET スクリプティングのバックエンド対応はバージョン 2019.1 からは廃止になる計画です。

C# Job System、Entity Component System、Burst コンパイラー

バージョン 2018.1 で公開された新しい高性能マルチスレッドシステムによって、Unity の中核を成すシステムが再構築されます。新しいシステムによって、プログラミングに頭を悩ませることなく、その時に入手可能なマルチコアプロセッサーをゲームでフル活用できるようになります。これは、並列コードを記述する安全で簡単なサンドボックスを提供する、新しい C# Job System の賜物です。また、Entity Component System を利用してデフォルトで効率の良いコードを書く新モデルと、高度に最適化されたネイティブコードを生成する Burst コンパイラーも新しく搭載されました。

高いパフォーマンスがデフォルトで用意されることで、ゲームを実行できるハードウェアの幅が広がるばかりでなく、より多くのユニット・より複雑性の高いシミュレーションによって、更に豊かなゲーム世界の創作が可能になります。詳しくは こちらをご覧ください

Entity Component System(ECS)

バージョン 2018.2 では、Reactive Systems のサンプルをはじめとするいくつかの改良を行いました。Reactive Systems によって、コンポーネントのステートに変更が行われた際に反応してイベント主導の挙動をエミュレートすることが可能になります。Reactive Systems に関する詳細は Joachim Ante による Unite Berlin での講演動画(英語)をご視聴ください。

ECS を使って Reactive Systems を実装する方法を説明したいくつかの例とドキュメンテーションもご提供予定です。

今年の下半期に、ユーザーが制作して Unity が ECS に変換した、小規模 Unity ゲームのサンプルをお届けします。

Burst コンパイラー

本リリースでは、ECS 用の Burst コンパイルがすべてのエディタープラットフォーム(Windows、Mac、Linux)で可能となり、スタンドアロンプレイヤー(Desktop、PS4、Xbox、iOS 、Android)向けに実に様々なコンテンツのビルドが可能になりました。

バージョン 2018.3 に向けて Unity では、ECS パフォーマンスに集中的に取り組み、Determinism を実現したプレビュー版をリリースし、より多くの .NET C# 言語の構文(DllImport、定数配列、foreach など)への対応を進めていきます。

Burst コンパイラーはバージョン 2018.3 のサイクル中にプレビュー版でなくすことを目標としています。

IL2CPP マネージド デバッガー

IL2CPP マネージド デバッグが可能になり、IL2CPP バックエンドを使用している場合でも、お好きなデバッガーでエラーの特定や修正が行えるようになりました。

すべてのデバッグ機能は、スタンドアロンでは Visual Studio(Visual Studio Tools for Unity を利用)と JetBrains Rider で対応予定となっています。PlayStation 4、モバイルプラットフォーム、Xbox One は後に対応の予定です。

Unity 2018.2 におけるスクリプティングランタイムの改良点

Unity 2018.2 には、スクリプティングランタイムに関連したバグ修正が数十件含まれています。これは.NET 4.x.以来皆様がお寄せ下さった貴重なフィードバックのおかげで実現されました。

Android での ARM64 への対応

本リリースをもって、IL2CPP テクノロジーに基づいた、Android 向けの ARM64 対応がプレビュー版ではなくなりました。このバージョンはパフォーマンス面でメリットをもたらします。64 ビットの Android アプリケーションやゲームが 4GB を超えるメモリ領域を使えるようになります。

アーキテクチャによる APK の分割

複数のアーキテクチャに対応する APK を 1 つ作る代わりにターゲットのアーキテクチャ(x86、ARM32、ARM64)によって複数の APK に分割するオプションが追加されました。このオプションに対応しているストア(Google Play など)では、関連のアーキテクチャと共に APK をダウンロードするだけで済みます。

Google Play Instant Games プラグイン

新しいプレイヤーを得る上での最も大きな障壁は、インストールの煩雑さです。

多くのユーザーが、アプリケーションのダウンロードと起動に時間が掛かるためにゲームを体験する前に諦めてしまいます。

Google Play Instant を使用すると、ユーザーは 10MB の即席版ゲームを事前インストール無しで試すことができます。このプラグインを使うと Unity ベースの Android アプリケーションを簡単に即席版アプリケーションに変換できます(それを Google Play Instant 経由でデプロイします)。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

このプラグインは GitHub からプロジェクトとして入手可能です。Unity 2017.x 以降のバージョンでご使用いただけます。

このプラグインの機能には以下が含まれます。

  • Installed モードと Instant-build モードの切り替えオプション
  • Google Play Instant への対応に際して変更が必要な Unity ビルド設定と Android プレイヤー設定の一元表示
  • Instant App を ADB に接続された Android デバイスで実行する機能

C# プラットフォーム認証ストアとの同期

すべてのプラットフォームで .NET 4.x および UnityWebRequest API からのモダンな方式(TLS1.2)による暗号化に対応になりました。これには、プラットフォーム毎の認証ストアに対する自動照合も含まれます。

システムストア照合へのアクセスを提供しない Xbox One と PS Vita では、埋め込み CA ストアを使用して照合が行われます。

UnityScript へのサポートの終了

以前お伝えした通り、本リリースをもって UnityScript の廃止が完了しました。詳細は、昨夏の Richard Fine によるブログ記事をご参照ください。

今後、スクリプティングランタイムおよび、Unity 対応バージョンの C# を継続的にアップグレードしていく予定であり、C# のほうがより大きな可能性を持っていることから、終了の決定に至りました。

  • スクリプティングランタイムのアップグレードによって .NET 4.6、および将来的には C# 7 の使用が可能になります。
  • JobSystem によって、マルチスレッドコードを、競合状態やデッドロックから守る形で簡単に記述することが可能となります。
  • NativeArray タイプでは、ネイティブコードによってストレージが制御されている大きな配列を作成したり扱ったりできます。これにより、割り当て挙動がより自在に制御可能となり、ガベージコレクションに関わる懸念をなくすことができます。
  • スクリプトコンパイル時に使うパイプラインが制御可能なので、スクリプトをアセンブリ内にどのように組み合わせるかをカスタマイズできます。

また、UnityScript コードを含むアセットストアパッケージの受領も停止し、UnityScript を含むパッケージは削除しました。

さらに、UnityScript から C# への自動変換ツールを公開しました。いくつか入手可能なものがありましたが、それらの採用しているアプローチは十分に満足の行くものではありませんでした。私達は Script Updater を記述した際に UnityScript コードの機能については非常に多くを学びましたので、その知識を応用して独自のソリューションを構築しました。こちらからダウンロードしていただけます

Visual Studio Code 用のデバッガー拡張機能

Visual Studio Code を統合開発環境として使用されることを検討されている方のために、拡張機能「Unity Debugger Extension for Visual Studio Code」を開発しました。これは今後も維持していく予定となっています。現時点ではプレビュー版をご利用いただけます。

Visual Studio コードを使用して Unity 内で C# コードのデバッグを行うことをお考えの方は、こちらのフォーラムの投稿(英語) をご参照の上、是非お試しください。ご意見・ご感想もお待ちしています。この拡張機能は今後更新され、Unity の新しい Mono ランタイムで C# のデバッグに対応となる予定です。また、報告済みのバグへの対応も進めています。

XR

HoloLens Holographic Remoting

HoloLens Holographic Remoting は、アプリケーションがローカルのデスクトップマシンのパワーを活用してランタイムでのレンダリングや処理の負荷を抑制できるようにするものです。Automotive および AEC 関連の Unity ユーザーの皆様には特にこの機能が有用となることでしょう。ご使用を開始する方法は、こちらで詳しくお読みただけます

リリースノート

Unity 2018.2 には 183 件の改良と 1426 件の修正が含まれています。新機能・改良・修正の全一覧はリリースノートをご参照ください。 新機能についてのフィードバックをぜひフォーラムにお寄せください。

2018.2 ベータ版のテストにご協力くださった皆様、ありがとうございました。

バージョン 2018.2 のリリースは、ベータテストにご協力くださった皆様のおかげで実現されました。新機能をいち早くご試用くださったこと、素晴らしいフィードバックをお寄せくださったことに、心より感謝申し上げます。

25 Unity Gear Set の懸賞当選者に関して

現在、2018.2 ベータ版のすべての懸賞応募者の皆様のレビューを行っています。近日中に 25 人の当選者にメールでギフトバウチャーをお届けします。(検証への当選権を得るには、今までに報告されたことのないバグで、かつ再現可能であり、Unity によって実際にバグであることが確認されたものを報告していただいている必要があります)

次回ベータ版のテストにご参加ください

まだベータ版のテスターになられていない方は、是非参加をご検討ください。最新の機能に早期にアクセスでき、ご自身のプロジェクトに新ベータ版との互換性があるかどうか確認することもできます。また、経験と知識が豊富な Unity コミュニティのメンバーと交流したり、Unity の未来に影響を与えることができるだけでなく、素敵な懸賞に当たる可能性もあります。

最新のオープン・ベータ版は こちらからダウンロードできます。すべての新機能が利用可能になるだけでなく、不具合を報告していただくことによって、最高品質のソフトウェアの実現に寄与できます。

まずは、影響力のあるベータ版テスターになるためのガイド(英語)で概要をご確認ください。ベータ版のニュースやアップデート、ヒントなどに関するメールを受け取りたい方は、以下のフォームからサインアップしてください。




2018年7月10日 カテゴリ: テクノロジー | 29 分 で読めます