kyubuns/AkyuiUnity

Parallel Import に対応していません

c3-hoge-fuga-piyo opened this issue · 1 comments

Describe the bug
A clear and concise description of what the bug is.

Parallel Import が有効になっているとテクスチャが正しくインポートできず生成されたプレハブも不正な状態になってしまいました。


Importer.ImportAssetPostProcessImportAsset.ProcessingFile などを設定し AssetDatabase.ImportAsset を通して PostProcessImportAsset.OnPreprocessAsset を呼び出していますが、 Parallel Import が有効になっている場合インポート処理が行われるのはワーカースレッド上になるためここusing スコープを抜けた( PostProcessImportAsset.ProcessingFile などがリセットされた)後に PostProcessImportAsset.OnPreprocessAsset が呼ばれここでブロックされてしまい、結果テクスチャのインポート設定が意図していない状態になります( Sprite になっていない、 userData が空など)

ImportAssetOptions.ForceSynchronousImport を指定して AssetDatabase.ImportAsset を行うように処理を変更してみましたが、手元の環境だとワーカースレッド上でインポート処理を行うことは変わらずで今回の問題への対応とはならず、 Parallel Import に対応するには時間がかかりそうだっため一旦 Issue という形で提起させていただきました。

To Reproduce
Steps to reproduce the behavior:

  1. Project Settings/Editor/Asset Pipeline/Parallel Import を有効にする
    • 反映にUnity エディタの再起動が必要
  2. 画像を含む適当な XD ファイルを XdImportSettings 経由でインポートする
  3. アセットは生成されるが内容が正しくない
    • テクスチャがデフォルトのインポート設定のまま( Sprite になっていない)ため、uGUIから参照できずにUIコンポーネントの Source Image などがすべて None になる
    • PostProcessImportAsset.OnPreprocessAsset がスキップされるため、 userData にJSONデータが入らずここ で例外が発生する

※非同期処理による問題なので環境によらず再現できるか不明です…… 🙇

Expected behavior
A clear and concise description of what you expected to happen.

Parallel Import が有効になっていてもアセットが正しい状態で生成される。

Environment

  • Windows 10
  • Unity 2022.2.0f1
  • 7a2baa1

※Parallel Import 自体は Unity 2021.2 から提供されているため、おそらくこれ以降のバージョンなら発生する可能性があります。

報告ありがとうございます。
v1.4.0にて対応を行いました。