さけのさかなのブログ

同人ゲーム開発やってます。Unity使ったりする。

【Unity】CloudBuildでうまくいかない場合対応

概要

 以下の条件において、UnityCloudBuildでビルドしたものが上手く動かない場合の対応方法。

条件

  • windows環境で開発していて
  • Resourcesフォルダ下のファイル名に濁点/半濁点がある

 上記の条件をみたすとき、Resources.Load, Resources.LoadAsyncに失敗してコケる。

ナンデ?

 UnityCloudBuildのログを見ると、ファイル名がNFDになっていることがわかる。このためにファイルが見つからずにロードに失敗する。

5871: [Unity] Updating Assets/Resources/AbilityEffects/ヤンシャオグイ.asset - GUID: 407fd122216a3674f90de5822614aed0...

 テキストエディタとかにコピペしてみよう。

対応

 ロードする際のパスをNFDに変換してやれば良い。

1.シンボル定義

 処理を分けるため、CloudBuildの設定でシンボルを定義する。

f:id:enuenupi:20161219133230p:plain

2.ロード処理時にstring.Normalize

public T Load(string path)
{
#if CLOUD_BUILD
    path = path.Normalize(System.Text.NormalizationForm.FormD);
#endif
    return Resources.Load<T>(path);
}

 そもそもファイル名に日本語を使わないのが無難だけど、なんだかなあ。

+