Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity】2DAnimation iPadのProcreateで作成したpsd(→psb)ファイルが読み込めない&回避策

Unity 2021.1.0f1 Personal(2021年3月)
procreate 5X 5(2021年3月)

f:id:hiyotama:20210329192536p:plain
今回はUnityの2DAnimationの素材読み込み時につまづいた点について共有致します。
問題が解決に至ったというわけではないのですが回避はできました。
Adobe税を払っていないと一手間ふた手間とかかって大変です。

前提

Unityの2DAnimationではpsb形式のファイルを2D PSD Importerパッケージで読み込むことにより、レイヤーごとに分けられたパーツとその位置、描画順をそのまま反映してくれ大変便利です。
psbファイルとはPhotoShop用の拡張子であるpsdのビッグドキュメントであり、30000 x 30000ピクセル以上の素材を保存する時に使われます。
psd編集ソフトは世の中にたくさんあるのですがpsbを編集できるソフトは恐らく現状ではPhotoShopのみであり、PhotoShopを持っていない人がUnityの2DAnimationを使うのはなかなかに面倒です。
ただ、psdファイルの拡張子を直接psbに書き換えるだけで2D PSD Importerは機能するので、素材の更新が面倒ですが一応PhotoShop無しでもやれないことはないです。
(素材の更新:psbファイルの拡張子をpsdに書き換え→psd編集ソフトで編集→再度psdファイルの拡張子をpsbに書き換え)

Procreateで作成したpsdファイルが読み込めない

iPad用のペイントアプリProcreateが非常に使い勝手が良くpsd形式でのExportにも対応しているため、Unityの2DAnimation用の素材として活用しようとしました。
しかしAirDropでMacBookへ送り、拡張子をpsbに変更後Unityにドラッグ&ドロップで読み込んだところ、正常に読み込めませんでした。

f:id:hiyotama:20210329191449p:plain
Projectビューへドラッグ&ドロップした状態

f:id:hiyotama:20210329191939p:plain
Sprite Editorにも何も表示されない

PsdInvalidException: Unrecognized layer section type.
PhotoshopFile.PsdFile.VerifyLayerSections () (at Library/PackageCache/com.unity.2d.psdimporter@4.0.2/Editor/PSDPlugin/PsdFile/PsdFile.cs:562)
PaintDotNet.Data.PhotoshopFileType.PsdLoad.Load (System.IO.Stream input) (at Library/PackageCache/com.unity.2d.psdimporter@4.0.2/Editor/PSDPlugin/PhotoShopFileType/PsdLoad.cs:68)
UnityEditor.U2D.PSD.PSDImporter.OnImportAsset (UnityEditor.AssetImporters.AssetImportContext ctx) (at Library/PackageCache/com.unity.2d.psdimporter@4.0.2/Editor/PSDImporter.cs:215)
UnityEditor.AssetImporters.ScriptedImporter.GenerateAssetData (UnityEditor.AssetImporters.AssetImportContext ctx) (at /Users/bokken/buildslave/unity/build/Modules/AssetPipelineEditor/Public/ScriptedImporter.cs:22)
UnityEditorInternal.InternalEditorUtility:ProjectWindowDrag(HierarchyProperty, Boolean)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)

Consoleには上記のエラーが出ていました。
2D PSD Importerパッケージ内でファイルのロード時にPsdInvalidException: Unrecognized layer section type.というエラーが発生しています。

回避策

パッケージ内を追っても解決には至らなかったため色々と試し回避策を見つけました。
GIMPというフリーソフトでpsdを一度読み込み、特に編集せずExport、その後拡張子をpsbに変換してUnityに読み込みます。

f:id:hiyotama:20210329192436p:plain
正常に読み込まれました

f:id:hiyotama:20210329192536p:plain
Sprite Editor>Skinning Editor パーツの分割・パーツ位置・描画順も正常です

なんとかUnityの2D Animationを使うことができました。
しかしPhotoShopを契約していない人には面倒な作業が多すぎます…。
2D PSD Importerがpsd形式にも対応してくれると非常に楽なのですが。

注意点

PhotoShopを契約していない状態で素材を更新するためには拡張子をpsbからpsdに戻し、編集ソフトで編集し、再びpsb形式に戻す必要があります。
その際の注意点として、psd形式に戻した状態でUnityを読み込むと、2DAnimationで設定したボーンデータなどが無くなってしまいます。
素材を更新する際はコピーをしてそちらを編集、編集終了後に元データに上書き、というプロセスが良さそうです。