渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

Unity2017.1.0f1のリリースノート日本語訳 その1


f:id:esakun:20150730215258g:plain

正式リリース候補版2017.1.0f1がリリースされました。
改めて何が追加・修正・変更されたのかを確認していきます。

リリースノートを読むだけでは分かりづらい事を調べて画面キャプチャなどで紹介するという趣旨もありつつ、読んでも全く理解出来ていないものもあります。

リリースノート2017.1.0f1 Release Notes (Full)の上から順番に確認していきます。

※本シリーズは3部構成になっております。

Features

2D: Added Sprite Physics Shape to Sprite Editor, to allow users to set a custom default shape for a Sprite for generating collider shapes with a PolygonCollider2D.

f:id:esakun:20170629141038p:plain

SpriteEditorにEdit Physics Shapeというメニューが追加され、任意のColliderの形を作ることが出来るようになりました。

f:id:esakun:20170629141514p:plain

このように当たり判定領域のポイントを追加・削除することが出来ます。
PolygonCollider2Dコンポーネントをアタッチすることで動作します。

2D: Introduced 2D Sprite Atlas, a new asset that will supplant the Sprite Packer. With it comes new and improved workflows that gives the developer more control on how to pack sprites and use them at runtime.

SpritePackerに代わる2D Sprite Atlasが追加されました。
f:id:esakun:20170629144352p:plain 有効化するためには、Project Settings > Editor > Sprite PackerのModeをEnabled For BuildsまたはAlways Enabledにする必要があります。その場合、SpritePackerは動作しなくなります。

https://unity3d.com/sites/default/files/2017_1_feature_spriteatlas.gif

2D Sprite Altasの1つの利点は各Spriteの取得方法がしやすくなったことです。
従来のSpritePackerではSpriteの参照を何処かに保持しておかないといけませんでした。
しかし2D Sprite Atlasでは、以下のコードのように、SpriteAtlasインスタンスの参照さえ保持していれば、Spriteのファイル名指定で取得できます。

public class SpriteAtlasSample : MonoBehaviour
{
    public Image img;
    public SpriteAtlas atlas;

    void Start ()
    {
        // 文字列指定でSpriteを取得することが可能
        var sp = atlas.GetSprite ("UnityChan");
        img.sprite = sp;
    }
}

また今まではAtlasの設定を複数のSpriteの設定で行われていましたが、SpriteAtlas1箇所で設定できるようになったのは便利です(この方法が自然です)。

2D: Sprite Mask. Mask Sprites in world space using the new SpriteMask component.

Spriteにマスク機能が追加されました。※uGUIのImageではなくSpriteです。

マスク側にSpriteMaskコンポーネントをアタッチして、マスク画像を設定します。

f:id:esakun:20170629151351p:plain
アルファチャンネル付きの画像をマスクとして使います。

f:id:esakun:20170629151234g:plain

このようにCut Offのしきい値を変更することも出来ます(↑後半辺り)

ちなみにこのマスクも、半透明マスクは出来ないので曲線はアンチエイリアスがかからずカクカクになるため注意です。

https://unity3d.com/sites/default/files/2017_1_feature_spritemask.gif

Shurikenもマスクに対応しています。

Animation: Manual Keyframing Workflow. Separate Recording and Preview modes in the Animation Window. Contextual menus added to all animatable properties in the inspector.

f:id:esakun:20170629152137p:plain
明示的なPreviewモードがAnimationウィンドウに追加されました。
これで間違えて記録されることは減りそうな気はします。

Animation: New GameObjectRecorder in UnityEditor.Experimental.Animations

まだExperimentalリリースですが、キーフレームを打たずにAnimationClipをUnity上で作れるようなEditor機能を作ることが出来るようになりました。

実際試した記事はコチラです。

https://unity3d.com/sites/default/files/2017_1_feature_experimental_gameobjectrecorder.gif
Unity2017.1f2リリースノートより

Audio: Added support for ambisonic audio clips and ambisonic decoder plugins.

Ambisonic(アンビソニックス)フォーマットの音楽ファイルがサポートされたようです

Audio: Timeline Editor Audio Track support. Audio clips are now enabled in Timeline, using a scheduling API.

f:id:esakun:20170629153133p:plain

TimelineEditorにAudio Trackを追加できるようになりました。

Collab: In-Progress. In-Progress allows developers using Unity Collaborate to see who else on their team has made local changes to a Scene or Prefab before those changes have been published.

現状のUnity Collaborateの仕様を把握していないので確認が難しいですが、要するにリモートに変更がありそれをローカルに反映する前にその変更の有無を確認することが出来るということでしょうか。シーンやPrefabの差分がどう確認できるのかは気になります。

Editor: Added new ArcHandle class in UnityEditor.IMGUI.Controls to interactively edit arcs in the Scene View.

https://unity3d.com/sites/default/files/2017_1_feature_archandle.gif
このようなGUIをEditor拡張で描画出来るようになったようです。

参考 : Unity - Scripting API: ArcHandle

Editor: Experimental feature : retained-mode UI system for the Editor (UI Elements)

よく分かりません。

GI: Added support for baked LODs in Progressive Lightmapper

Progressive Lightmapperにベイク済みLODがサポートされました。

GI: Support for double sided materials in Progressive Lightmapper. Added a new material setting that causes lighting to interact with backfaces. When enabled, both sides of the geometry get accounted for when calculating Global Illumination. Backfaces do not count as invalid when seen from other objects. Backface rendering is not controlled by this setting nor will backfaces be represented in the lightmaps. Backfaces bounce light using the same emission and albedo as frontfaces.

Progressive LightMapperが両面描画をサポートしました。

Graphics: Added Custom Render Texture asset. A Custom Render Texture is a new type of Render Texture that can be easily updated with a shader. It provides a user interface and a scripting framework.

CustomRenderTextureが追加されました。

https://unity3d.com/sites/default/files/2017_1_feature_customrendertexture.gif
Unity2017.1f2リリースノートより

↑このようなことが出来るんでしょうね。

Graphics: Added LineUtility class and ‘LineRenderer.Simplify’ function. Optimize your lines and curves by using the LineUtility to create a simplified version with a similar shape.

LineUtilityクラスと、LineRenderer.Simplify関数が追加されました。
LineUtilityを使うと最適化された曲線を生成できます。

LineRenderer.Simplify関数も同様に無駄なポイントを削除してくれるようです。

Generates a simplified version of the original line by removing points that fall within the specified tolerance.

Unity - Scripting API: LineRenderer

Graphics: Added partial update/readback of compute buffers

ComputeBufferの部分的な更新とリードバックが追加されました。
ぶっちゃけよく分かっていません。

graphics: Updated Splash screen logo and style

スプラッシュスクリーンロゴとスタイルが更新されました。

IMGUI: Added SearchField, a new IMGUI Control. It comes with Normal and Toolbar UI styles but can also be customized.

SearchFieldという新しいIMGUIが追加されました。

f:id:esakun:20170629195615p:plain
以下のサンプルコードでこんな検索窓をサクッと作れます。

[CustomEditor (typeof(TestUI))]
class TestUIEditor:Editor
{
    SearchField s;
    string searchTxt = "";

    public override void OnInspectorGUI ()
    {
        if (s == null)
            s = new SearchField ();
        base.OnInspectorGUI ();
        var t = (TestUI)target;
        searchTxt = s.OnToolbarGUI (searchTxt);
        // Returnキーを押して離したタイミングで何かするサンプル
        if (Event.current.keyCode == KeyCode.Return &&
            Event.current.type == EventType.KeyUp) {
            Event.current.Use ();
            Debug.Log (searchTxt);
            // Do SomeThing...
        }
    }
}

Input: Added new Player Settings property ‘Input Manager’ for enabling backend of new input system preview feature. The front-end is supplied separately and is not included with the release.

フロントエンドのリリースは別タイミングですが、PlayerSettingsにInput Managerプロパティが追加されました。
よく分かっていません。

iOS: Enable deferred shading rendering path for Metal and OpenGL ES 3.0 for A8 and later iOS devices.

A8以降(iPhone6以降)のiOSデバイスにおいて、Metal、OpenGLES3.0のディファードシェーディングが可能になりました。

Particles: Added support for using Sprites in the Particle System, via the Texture Sheet Animation Module

TextureSheetAnimationModuleでSpriteを扱えるようになりました。

f:id:esakun:20170629203845p:plain

ModeSpritesにして、Spriteを設定します。Spriteは複数設定できるのでかなり自由度が上がりました。

https://unity3d.com/sites/default/files/2017_1_feature_particle_sprites.gif
Unity2017.1f2リリースノートより

Particles: Apply Noise Module data to particles sizes and rotations, and also send the noise data to your shaders via new Custom Vertex Streams.

ノイズモジュールのデータをパーティクルのサイズと回転に適用して、CustomVertexStreamsに送信できるようになりました。

https://unity3d.com/sites/default/files/2017_1_feature_particle_noise_2.gif
Unity2017.1f2リリースノートより

Particles: New Donut emission shape.

f:id:esakun:20170629210631p:plain
ドーナツ型のシェイプが追加されました。

Playables: Playable Assets added to Playable API.

Playable AssetsがPlayableAPIに追加されました。
Experimentalが外れたということでしょうか。

Playables: Playable Director added to play Playable Assets

PlayableDirectorがPlayableAssetを再生するために追加されました。

Playables: Timeline Editor and Runtime API. A tool for sequencing animation, scripts and audio.

音、スクリプト、アニメーションをシーケンシャルに実行するタイムラインエディタ、ランタイムAPIが追加されました。

https://unity3d.com/sites/default/files/2017_1_feature_timeline.png
Unity2017.1f2リリースノートより
要は↑が追加されました。

Shaders: Added support for “inline” sampler states.
- HLSL SamplerState objects that aren’t taking sampling state from any texture (like what “sampler”+TextureName samplers do), but where sampling state is instead derived from the name.
- For example, “MyLinearClampSampler” sets up bilinear filtering and clamp wrap mode; while “point_repeat_sampler” sets up point filtering and repeat wrap mode.
- This allows e.g. doing both PCF depth comparison and reading raw depth value from a shadow map in a single shader.
- Note that generally only modern graphics APIs support separate textures & samplers. You might therefore want to specify #pragma target 3.5 or similar in your shaders for this.
- Implemented on DX11, DX12, PS4, XB1, Metal (Vulkan not yet).

色々とinlineがサポートされたようです。
よく分かってないです。

Windows: Multi-display support for UWP.

UWPに於いてマルチディスプレイがサポートされました。

Changes

Asset Import: Upgraded FBX SDK to 2016.1.2

FBX SDKが2016.1.2にアップグレードされました。 ちなみにFBX 2016の仕様書はコチラです。

Build Pipeline: Added new function SwitchActiveBuildTargetAsync. This defers switching so that scripts can be imported first.

EditorUserBuildSettingsクラスにSwitchActiveBuildTargetAsyncメソッドが追加されました。

[MenuItem ("Switch/iOS")]
static void SwitchIOS ()
{
    EditorUserBuildSettings.SwitchActiveBuildTargetAsync (BuildTargetGroup.iOS, BuildTarget.iOS);
}

スクリプトを最初にインポートできるようにビルドターゲットの切り替えを遅延させるとの事です。 スクリプトのビルドが完了してから、アセットのインポートが走るということなのでしょうか。そのメリットがイマイチ分かっていません。

Build Pipeline: Event EditorBuildSettings.activeBuildTargetChanged has been deprecated as events do not survive script reloading. Replaced with interface class IActiveBuildTargetChanged and attribute ActiveBuildTargetChanged.

EditorBuildSettings.activeBuildTargetChangeイベントは廃止になりました。
代わりにIActiveBuildTargetChangedインターフェースを実装してActiveBuildTargetChangedで受け取ることが出来ます。

using UnityEngine;
using UnityEditor.Build;

public class ActiveBuildTargetChangedTest : IActiveBuildTargetChanged
{
    public void OnActiveBuildTargetChanged (UnityEditor.BuildTarget previousTarget, UnityEditor.BuildTarget newTarget)
    {
        Debug.Log (previousTarget + " / " + newTarget);
    }

    public int callbackOrder {
        get {
            return -1;
        }
    }
}

このクラスを作っておくと、ビルドターゲットが切り替わる度にOnActiveBuildTargetChangedが実行されます。

Editor: 2017 Editor now needs a new version of license. Subscription key will be upgraded. 5.x license key will not be accepted by 2017 Editor.

2017Editorは新しいバージョンのライセンスが必要になります。
サブスクリプション型の5.xライセンスは使えません。

Editor: Added new GameObject sub menu - ‘GameObject/Effects/. This menu includes a Line andTrail creation. The particle system has also been moved to this menu.

f:id:esakun:20170629220043p:plain

GameObject/EffectsメニューにLine、Trailが追加されました。Particle Systemも同じ場所に移動しました。

Editor: Added requirement for Visual C++ Runtime 2013 and 2015 to be installed when installing Windows Editor (i.e. the check is performed by Windows Editor installer).

WindowsのUnityEditorをインストールする際にVisual C++ Runtime 2013と2015が必須になりました。

Editor: AssetServer version control support has been removed from the editor.

アセットサーバーのバージョンコントロールサポートがUnityEditorから削除されました。

Editor: Moved particle system rigidbody info message to top of the system as it does not just apply to inherit velocity

パーティクルシステムのrigidbody情報が上の方に移動しました。

Editor: New projects now default to text-based serialization

f:id:esakun:20170629221011p:plain
新規プロジェクトを作った時のAsset Serialize Modeのデフォルト設定が Force Textになりました。
地味だけどこれを待ってました。

Editor: Particle trail material slot is now always visible even if it is not used.

ParticleSystemのTrail Material設定箇所は使用しなくても常に表示されるようになりました。

Editor: RenderDoc enabled for DX12 Editor mode.

RenderDocがDX12Editor Modeを可能にしました。
よく分かっていません。

Light modes: Shadowmask and Distance shadowmask modes are now a Quality Setting and can be changed at runtime.

ShadowMaskDistance ShadowMaskのクオリティ設定をQualitySettingからランタイム中に変更できるようになりました。

OSX: Disabled Metal on macOS 10.12.2 and 10.12.3 for stability reasons if GLCore is also present in API list

GLCoreがAPIリストに存在する場合は安定性の理由から、macOS 10.12.2、10.12.3でMetalを非アクティブにします。

Universal Windows Platform: DX11 feature level 9.3 GPU support is required now. In practice this probably does not affect anything, as all Windows Phones that ever existed support 9.3 level already.

DirectX11の機能レベル9.3のGPUサポートが必要です。
実際には、これまでに存在していたすべてのWindows Phoneがすでに9.3レベルをサポートしているため、おそらく問題はないでしょう。

Universal Windows Platform: Removed support for building Windows 8.1 and Windows Phone 8.1 applications.

Windows 8.1、Windows Phone 8.1 アプリケーションのサポートが終わりました。

VR: Added OpenVR to the default PC VR SDK list. The default behavior is to try initializing Oculus first, followed by OpenVR if an Oculus device isn’t detected.

OpenVRをデフォルトのPC VR SDKリストに追加しました。
デフォルトの動作では、まずOculusを初期化してから、Oculusデバイスが検出されなければOpenVRを初期化します。

VR: GPU skinning can be enabled for Android VR. This is experimental, and behavior and performance should be verified on target devices.

Android VRのGPUスキニングを有効にすることができます。
これは実験的なものであり、動作とパフォーマンスをターゲットデバイスで検証する必要があります。

VR: Updated Google NDK for Android and iOS to 1.40

AndroidとiOSのためのGoogle NDKのバージョンを1.4.0にアップデートしました。

Windows: “Visible In Background” player setting now defaults to on.

Visible In Background設定をデフォルトONにしました。

Windows: Renamed “Windows Store” to “Universal Windows Platform”

Windows Store から Universal Windows Platformにリネームされました。

長くなってきたのでFeaturesとChangesでこの記事は終了し、次の記事で残りのImprovementsとAPI Changesを確認していきます。