Search Unity

Unity 2022.1 における 2D 機能アップデート

はじめに

本稿では、Unity 2022.1 における 2D 周りの機能追加・アップデートについて、筆者が勤める株式会社キッズスターでの利用事例なども交えて紹介いたします。

なお、特別な断り書きがある場合を除き、Unity や 2D 系パッケージのバージョンは次に挙げるものを用いて説明しています。

  • Unity 2022.1.23f1
    • Unity 2021 と対比する場合は Unity 2021.3.14f1 と対比します
  • 2D Packages
    • 2D Animation: 8.0.4
    • 2D Pixel Perfect: 5.0.2
    • 2D PSD Importer: 7.0.3
    • 2D Sprite: 1.0.0
    • 2D SpriteShape: 8.0.1
    • 2D Tilemap Editor: 1.0.0
    • 2D Tilemap Extras: 3.0.2

主な機能追加・改善

2D PSD Importer の改善

Photoshop 形式ファイルのインポートをサポート

これまでは .psb (Photoshop Big Document) 形式のファイルしかインポートできませんでしたが、2D PSD Importer v7 で .psd (Photoshop Document) 形式のファイルもインポートできるようになりました。

株式会社キッズスターでもアート素材の受け渡しの際に「.psd じゃなくて .psb で保存し直してください」と言ったやりとりがしばしば発生していたので、これが不要になるのはとても嬉しい改善です。

.psd ファイルに対しても PSD Importer を利用可能になった

なお、.psd ファイルに対するデフォルトの Importer は TextureImporter となっており、手動で PSD Importer に切り替える必要があります。 「Presets を使えば…」と思われるかもしれませんが、Presets は Importer の型毎に設定を保存する仕様になっているため今回のケースには利用できません。 完全に自動化するためには、次のような AssetPostprocessor を実装する必要があります。

using System.Linq;
using UnityEditor;
// Assembly Definition Files を設定している場合は、
// Unity.2D.Psdimporter.Editor を参照する必要があります。
using UnityEditor.U2D.PSD;

public class SwitchToPSDImporter : AssetPostprocessor
{
    private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
    {
        foreach (var importedAsset in importedAssets.Where(x => x.EndsWith(".psd")))
        {
            AssetDatabase.SetImporterOverride<PSDImporter>(importedAsset);
        }
    }
}

レイヤー管理の改善

Inspector で PSD/PSB ファイルを開いて Layer Management タブから読み込むレイヤーを選択できるようになりました。

レイヤーのチェックを外して Apply すると読み込まれる Sprite や Bone の情報が変化する

アート制作上必要になるがゲームでは使わないようなレイヤーを除外することで、PSD/PSB ファイルはそのまま利用しつつ Sprite として読み込まれるテクスチャのサイズを小さくすることができるので、アーティストのワークフロー改善が見込めます。

モザイクモードの間隔指定

.psd/.psb ファイルの Inspector
.psd/.psb ファイルの Inspector

レイヤーを取り込む際の各 Sprite の配置間隔を変更できるようになりました。

Mosaic Padding の値に応じて Sprite のレイアウトも変化する

2D Animation の改善

Sprite Deformation, SpriteSwap, IK のプレビュー

Unity 2021.3 では正しくプレビューされない
Unity 2022.1 では IK 込みでプレビューされる

2D Animation 8.0.0 から AnimationClip を Inspector に表示した際の Preview Window で、Sprite Deformation、SpriteSwap、2D IK などの 2D Animation が正しくプレビューされるようになりました。

Deformation のプレビュー
SpriteSwap のプレビュー

これまでは、確認用のシーンを作成したり Animation ウィンドウで確認したりと、組んだ Animation の確認にそれなりに手間が掛かっていましたが、Inspector で確認できるようになったことでワークフローの改善が見込めます。

SpriteSwap の Keyframe 表示改善

Unity 2021.3 までは SpriteSwap を用いた際に、Keyframe に対して接線情報などの AnimationCurve に関する情報が表示されていましたが、Unity 2022.1 からはこれが表示されないようになりました。

Unity 2021.3 では Broken / Constant Tangent として AnimationCurve が表示されている
Unity 2022.1 ではそもそも AnimationCurve が表示されていない

その他のアップデート

2D Physics がドロネーテッセレーションをサポート

Unity 2022.1 から PolygonCollider2D, CompositeCollider2D, TilemapCollider2D のポリゴン生成アルゴリズムにドロネー三角形分割を用いることができるようになりました。

対応している Collider の Use Delaunay Mesh にチェックをつけるだけ

これまでの分割方法だとポリゴンが細すぎる・小さすぎるなどで物理エンジンに無視されてしまうことがありましたが、これが改善される場合があります。

U, n, y のカーブ部分やロゴの一部で形状の変化が顕著

また、メッシュの形状によってはポリゴン数自体が減る効果も得られます。

登録商標マーク部分を拡大

株式会社キッズスターでレベルデザインやモデリングを担当しているメンバーからも「これまでのアルゴリズムでは無駄が多く欠けが心配されるようなポリゴンになりがちでしたが、Deraunay Tessellation を使うことで比較的綺麗なポリゴンが生成されるようになるのは安心できる」という好意的な意見が聞かれました。

Shader Graph の 2D マスタースタック がブレンドモードをサポート

株式会社キッズスター的に嬉しいアップデートのひとつがこちらです。

しばしば「加算シェーダないの…?」と聞かれて、手書きのシェーダを書くなどしていたので、Shader Graph の設定ひとつで実現できるようになったことは非常にありがたいアップデートと言えます。

なお、Universal Render Pipeline v12 の時点で Blending Mode プロパティは追加されているようですが、Changelog に依ると v13.1.1 で Blending 周りに改善が入っているようです。

SpriteShape Sort Point

SpriteShapeRenderer コンポーネントの SpriteShape Sort Point フィールドにて、SpriteShape の描画順決定に用いる要素として SpriteShape の中心を用いるか SpriteShape の Pivot を用いるかを選択可能になりました。

以前より Sprite Renderer に備わっていた機能が SpriteShape でも利用できるようになり、より柔軟な描画順の制御ができるようになりました。

Sprite Atlas v2 正式リリース

Unity 2021 までは Experimental として提供されていた Sprite Atlas v2 が、Unity 2022 では Experimental が外れて正式にリリースされました。

2021.3 では Experimental がついているが、2022.1 では Experimental が外れている

Sprite Packing Mode を Sprite Atlas v2 にすると、メニューの Assets > Create > 2D > Sprite Atlas から作成されるアセットの拡張子が .spriteatlasv2 というものになります。(v1 は .spriteatlas

既に Sprite Atlas v1 として作成されたアセットがある場合、Sprite Packing Mode を変更した時点でアセットが自動的に変換されます。

SpriteAtlas v1 形式(.spriteatlas)のアセットは SpriteAtlas v2 形式(.spriteatlasv2)に自動変換される

一度 v2 形式に変換されたアセットは Sprite Packing Mode を Sprite Atlas v1 に戻しても再変換されないため、プロジェクトの設定を変更する前にバックアップを取っておきましょう。

また、2021.3 の時点では v1 でしか選択できなかった「ビルド時にのみ Sprite Atlas をパックする」ための Enabled for Builds オプションが v2 でも選択できるようになっています。

Sprite Atlas v2 がデフォルトに

これまでも ProjectSettings の Editor パネルから、利用する Sprite Atlas のバージョンを変更することで Sprite Atllas v2 を利用することができましたが、Unity 2022 からは 2D / 2D URP テンプレートを用いると Sprite Atlas v2 が選択された状態でプロジェクトがセットアップされるようになりました。

2D か 2D (URP) を選択すると 2D 系の Packages がインストールされた状態のプロジェクトが作成される
Unity 2021.3 でプロジェクトを新規作成した場合
Unity 2022.1 でプロジェクトを新規作成した場合

おわりに

本記事では Unity 2022.1 に於ける 2D 周りの機能追加・改善を紹介しました。

2D Animation や 2D PSD Importer など Package Manager によって提供される公式パッケージの更新情報は一覧しづらい側面もあるので、本記事が「まとめ情報」としてお役に立てれば幸いです。

筆者が勤める株式会社キッズスターの主力事業である子供向けモバイルアプリ「ごっこランド」では70以上の2Dゲームを提供しており、2D周りのアップデートは特に関心が高い領域となっているので、今後も継続的にアンテナ感度を高く保っていきたいと思っております。

参考リンク

--

筆者紹介:もんりぃ先生(森 哲哉)

株式会社キッズスター / CTO。Unity Ambassador。Microsoft MVP for Developer Technologies。モバイルゲーム開発に軸足を置きつつ、登壇・執筆活動にも精を出す。Player, AssetBundle ビルド・ワークフロー・アーキテクチャなどのおじさん業を得意とする。

Twitter:https://twitter.com/monry
この記事はいかがでしたか?