UE4のHTML5パッケージ化でも日本語変数名が使える(けどタイムラインノードには少し問題が)
「昨日HTML5に関しては調査が終わってなかったんだけど、あれからさらに確認して、プロジェクト名とcontentsフォルダ内のアセット名・フォルダ名以外は日本語使っても大丈夫そうという感触が得られた。昨日その状態でもHTML5で上手く動かなかったけど、それはまた別の原因だった」
妹「なんだったの?」
「タイムライン(Timeline)ノードってあるでしょ」
「このタイムラインがGameModeの中に存在してるとエラーが起きるということがわかった」
妹「どこにもつながってないのに?」
「どこにもつながってなくても、動かしてなくてもなるんだよ。不思議なことに。つながっててもなるけど」
妹「不思議すぎる」
「さらにGameModeからタイムラインを含んだアクターをスポーンしても駄目で、GameModeからスポーンされたアクターからタイムラインを含んだアクターをスポーンしても駄目なことが確認できた」
妹「なんでタイムラインにそんなタタリが……」
「あれは見た目より複雑なノードだから、色々中でトラブルが起きたんじゃないかと。ただ日本語の問題じゃなさそうだった。名前とは関係なく起きるから」
妹「でもそうすると今度はタイムラインが使えないということに……」
「何かをスポーンさせたい時は、ゲームモードからじゃなくて、見えないアクターとかをレベル上に置いてからやった方がいいかもしれない。あとGameModeからディスパッチャーとかを使って、別のアクターにあるタイムラインを動かすのはセーフ」
妹「ゲームインスタンスとかは?」
「GameInstanceには元々タイムラインが作れない仕様になってるから。スポーンした時にどうなるかまでは試してないけど、それはあんまりやらないだろうし」
「ちなみにHTML5でパッケージ化した場合のエラー。1フレーム目が始まる前にエラーが起きると、ずっと起動中みたいな表示になる。でもいくら待っても無駄。日本語のアセット名とか、ConstructionScriptやBeginPlay、あるいは存在自体が問題のノードがある場合はこうなる」
「いったん起動した後のエラーはこんな感じ。意味はわからないから、何かエラーが起きたということしかわからないんだけど。時間差でGameModeからタイムライン有りのアクターをスポーンするとこうなる。あとはNullの変数を読み込んでもこういう感じのエラーになる。空の配列から中身をGETしたりしてもこうなる」
※UE4.19でデフォルトの設定の場合なので、バージョンが変わったり、設定によってはこれと違う結果になる可能性もあります。完成前にちょくちょくパッケージ化して確認しておくと、どこの何が原因でおかしくなったか特定しやすいです。