【Unity】Script追加時の注意点

開発部エンジニアの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上でスクリプトを追加した際に起きます。

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を使用している場合、ファイルの上書き保存で文字コードの変換ができます。

  1. 文字コードを修正したいファイルを選択します。
  2. 「ファイル」-「名前をつけて(ファイル名)を保存」を選択します。
  3. ファイル保存用のダイアログが表示されたら「上書き保存」の横のドロップダウンからエンコード付きで保存を選択します。
  4. 保存オプションの詳細設定でエンコードを「Unicode(UTF-8シグネチャ付き)-コードページ65001」を選択し「OK」を押します。
    エンコードの選択画面
  5. Editor上でコードのプレビューを確認すると文字化けが修正されています。
    コードのプレビュー画面修正後

UnityEditorの拡張機能で対応

以下の記事を参考にUnityEditorを拡張している人が多くいました。
こういう設定をしてしまうのもいいですね!

https://www.tumblr.com/debuglog/26550984743/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AEutf-8%E5%A4%89%E6%8F%9B
debuglog.tumblr.com

まとめ

今回の問題はいろんな人が困っているようです。
Unity2020から問題が起きているという話もあるので、今後修正が施されるかもしれません。
Xamarin初期のころにもそんな問題あったなと思いながら、こういう時に日本語って不便だなって思います。
皆さんも、クロスプラットフォーム開発の時は気を付けてみてください。

KENTEMでは、Unityを使ったアプリの開発者を大募集しています!
UnityでXRアプリの開発にご興味ある方は、是非下記のリンクからご応募ください。
https://hrmos.co/pages/kentem2211/jobs/A0012hrmos.co