UnityプロジェクトをGitHub Desktopで管理する手順

# はじめに

 UnityプロジェクトをGitHubで管理できるようにする手順を毎回忘れてひどい目に合うので、備忘録として残しておくことにしました。今回はUnity 2021.1.15f、GitHub Desktop ver2.9.0を利用しました。例題として、多言語対応のためのLocalizationPackageの動作確認をしてみようと思います。[この辺の記事](https://blog.applibot.co.jp/2020/12/24/unity-localization-package/)が参考になります。

この記事で作ったリポジトリはこちらです。git cloneすればUnityで動作確認ができるはずです。合わせて参考にしていただければと思います。

https://github.com/YoshitakaAtarashi/LocalizationTest

# Unityプロジェクトを作る。

　とりあえずCanvasにTextを置いて、テキストとでも入力しておきましょうか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/7bc15827-4078-c5bf-d618-6eba3d1343c9.png)

# GitHub Desktopで新規リポジトリを作成する。

　Unityプロジェクトの名前をNameに、パスをLocal pathに設定します。Local pathに名前を含めてしまうと 名前/名前 というようなパスが出来上がって残念なことになります。(1敗目)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/7e1736bc-c171-1bab-30b1-1ae5cb26d47b.png)

　ここでGit ignoreでUnityを選べますが、このままだとLogs/ が管理対象になってしまい、余計なファイルをコミットすることになるので.gitignoreを早めに下記に変更する方がよいと思います。(2敗目)

```
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Mm]emoryCaptures/

# Never ignore Asset meta data
!/[Aa]ssets/**/*.meta

# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*

# Autogenerated Jetbrains Rider plugin
[Aa]ssets/Plugins/Editor/JetBrains*

# Visual Studio cache directory
.vs/

# Gradle cache directory
.gradle/

# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db

# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta

# Unity3D generated file on crash reports
sysinfo.txt

# Builds
*.apk
*.unitypackage

# Crashlytics generated file
crashlytics-build.properties
~*
.DS_Store
```

.gitignoreの編集はいろんな方法がありますがGitHub Desktopの場合、下図のようにすればできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/5a227c25-c0e4-c100-4dc4-7e81ef6a4e62.png)

大丈夫そうだなと思ったらPublish repositoryを実行してください。私は1敗目のときの名前/名前 というパスを作ってしまったせいで、Publish時に既存のリポジトリが存在するとエラーが出て、WEB上でリポジトリを削除する必要がありました。(3敗目)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/f6736f48-6cdf-4663-f61d-56ecfe05bb85.png)

無事にPublishできたらこんな画面が見れるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/16b6c709-a165-41ef-9851-3dd23fce65d2.png)

# Localizationパッケージを導入する。

com.unity.localization を Addしてください。私はlocalizationの後ろにスペースを入れてしまったため、エラーが出てなかなかインポートできませんした。(4敗目)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/d0a25b1a-1e6a-6679-91fc-d3320f7041c4.png)

こんな感じでLocalizationが追加されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/0e3ac12f-1235-44c6-0d9f-155d4b1d482d.png)

Logsのignoreを忘れているとGitHub Desktopがこんなことになります。.gitignoreを修正し、GitHub側のLogsを削除して、このChangeが出なくなるまで頑張りましょう。どうにもならない場合は最悪、最初からやり直しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/5e73b629-5d58-430d-30f8-c7b019d7f970.png)

# Localization Tableの作成

テキストを英語ロケールのときにはtextに置き換えて表示したい、という例を考えます。まずはProject Settings>Localizationを見て、EnglishとJapaneseを選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/0c690739-74c3-76f7-f1c2-9951346c3ba4.png)

これだけでも44個のファイルが追加されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/558f819f-b859-d634-532e-64e65ea8fc54.png)

Localization Tableを作りましょう。KeyはGUI上から選択する名前になるので命名規則をしっかり考えておくほうがよいでしょう。今回はテストなので適当です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/f3535fd1-3d86-f233-7526-f215d9e9e6b7.png)


# Localization String Eventの設定

Textオブジェクトに対してAdd ComponentでLocalizate String Eventを追加し、String Referenceで先ほど作ったテーブルとキーを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/b44387d8-24b8-bd96-e1fd-01a53f5bf912.png)

そうしてGizmosの下にあるロケールをEnglishに変更すると、ほら、変わらない...。(5敗目)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/d3b7921a-48fd-2202-923c-36a7a6fa1b0c.png)

正しいやり方は Text付近で右クリックをしてLocalizeをクリックすることです。こうすると、Update String イベント発生時にTextの値を変更する設定が自動追加されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/a2faa44c-fa96-8269-d433-6838e9b71939.png)

再度挑戦。無事textに変換されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/54534371-d94e-6b67-ad50-e699890514e7.png)

# Buildしてみた。

ビルドしてちゃんと英語ロケールになるかを確認しましょう。Project Settingsを下記のように変更して、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/2364f4f0-34d1-f89f-8980-994f1dcb8270.png)

実行、しても日本語のままです。(6敗目)
ということで、ここからが本当の地獄の始まりなのでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1804036/b3a23ef6-20ea-830a-2228-68cbb76024c0.png)

# 最後に

某案件で多言語対応の必要性がありLocalizationPackageを使ってテーブルを作ったものの、ビルド時に英語にならない不具合に遭遇したため、検証用環境を作ろうと思ったのが本記事の執筆の動機でした。GitHub Desktopを駆使してLocalizationPackageがまともに動くようになりましたら、その内容についても備忘録として記事化しようと思います。

# (7/31追記)解決への道筋

まず、この単純なサンプルについては、[9.Build Preview and configuration](https://docs.unity3d.com/Packages/com.unity.localization@0.10/manual/QuickStartGuide.html#9-build-preview-and-configuration) の通りに実行することで英語ロケールになることが確認できました。

本当の問題はLocalization-0.9で対応してしまった別プロジェクトで、この方法を実行するとロケール設定がぶっ壊れる現象を何とかしたかったのです。が、ここから学び、出した結論は「一からやり直し」でした。幸いmasterはLocalization対応していない状態なので、改めてブランチを切って、Localization-0.10をインストールして、一ヶ所だけ英語に変えてみたら問題なく動きました。残り85個分のテキストを再度Localize設定する作業にこれから入ります...。