開発部エンジニアのY.A.です。
今日はUnityでScript登録時に私自身も陥ったミスを共有したいと思います。
環境
- Unity 2022.2.21f1
- OS : Windows10
- VisualStudio2022
はじめに
今回起きた問題は、「iOS向けに作成したアプリの実行結果が文字化けしてしまう」というものです。 問題の原因と対処をお話します。
原因
まず初めに今回の原因ですが、Windows版のUnityEditorにおける標準の文字コードが「shift-jis」ということでした。 Unityの運用上C#のスクリプトの追加方法は下記のように2種類(実行OS違いを含めると4種)あります。
- UnityEditorからC#のスクリプトの追加
- UnityEditorからスクリプト編集用IDEから追加
今回の問題は、Windows版のUnityEditor上でスクリプトを追加した際に起きます。
検証
現象の検証を行います。
コードの作成
以下のスクリプトを追加し、任意のGameObjectにアタッチします。
※必ずエディター上でスクリプト追加してください
using UnityEngine; public class NewBehaviourScript : MonoBehaviour { void OnGUI() { if (GUI.Button(new Rect(10, 70, 50, 30), "Button ぼたん")) Debug.Log("Button Clicked"); } }
実行結果
Windows上で実行することで下記のような結果が得られます。
想定通りです。
こちらのコードをGitにプッシュしMacの環境に落としてきて実行します。
以下のように文字化けしているのが確認できました。
対策
先に説明した通り、今回の問題はスクリプトの文字コードにです。
この現象が起きる際には、コードのプレビュー画面でも以下のように文字化けしています。
VisualStudioで文字コードの変換
コードエディターにVisualStudioを使用している場合、ファイルの上書き保存で文字コードの変換ができます。
- 文字コードを修正したいファイルを選択します。
- 「ファイル」-「名前をつけて(ファイル名)を保存」を選択します。
- ファイル保存用のダイアログが表示されたら「上書き保存」の横のドロップダウンからエンコード付きで保存を選択します。
- 保存オプションの詳細設定でエンコードを「Unicode(UTF-8シグネチャ付き)-コードページ65001」を選択し「OK」を押します。
- Editor上でコードのプレビューを確認すると文字化けが修正されています。
UnityEditorの拡張機能で対応
以下の記事を参考にUnityEditorを拡張している人が多くいました。
こういう設定をしてしまうのもいいですね!
まとめ
今回の問題はいろんな人が困っているようです。
Unity2020から問題が起きているという話もあるので、今後修正が施されるかもしれません。
Xamarin初期のころにもそんな問題あったなと思いながら、こういう時に日本語って不便だなって思います。
皆さんも、クロスプラットフォーム開発の時は気を付けてみてください。
おわりに
KENTEMでは、Unityを使ったアプリの開発者を大募集しています!
UnityでXRアプリの開発にご興味ある方は、是非下記のリンクからご応募ください。
https://hrmos.co/pages/kentem2211/jobs/A0012hrmos.co