Ubuntu 18.04 で Unity (ゲーム開発環境) を動かす方法

## 手順

- Unity Hub をインストールする
- Unity をインストールする
- MonoDevelop をインストールする

ダウンロード、インストール待ち、動作確認等で１～３時間程度かかると思います。今のところ、インストールしても簡単には動かせないようです。ある程度、 Linux の基礎知識が必要になります。

## Unity Hub をインストールする

Unity Hub は複数バージョンの Unity を管理するためのソフトです。バージョン 2017 を動作確認用に入れておいて、 2018 を主に使うというようなケースで使います。Unity Hub をインストールしておくと、 Unity Hub の GUI からインストールしたい Unity のバージョンを選択して、簡単にインストールできるようにもなります。

- [Unity のダウンロードページ](https://unity3d.com/jp/get-unity/download) を開く
- 「Unity Hub の詳細はこちら」 のリンクを開く
- Unity のフォーラム (掲示板) が開くので、その中から 「Unity Hub v2.0.0 Release」のような項目を探して開く
- 最初の投稿に「Hub 2.0.0 for Linux」のように、 Linux 用実行ファイルへのリンクが貼られているので、それをダウンロードする
  - *.AppImage という形式のファイルが貼られています。これは、Linux のディストリビューションごとの差異を気にせずに実行できるようにする配布形式です([AppImage の詳しい解説](https://www.virment.com/how-to-use-appimage-linux/))。
- ダウンロードした .AppImage ファイルに実行可能属性を追加して実行する
  - ファイルマネージャから対象ファイルのプロパティを開いて実行可能のチェックボックスを有効にするか、 chmod コマンドで実行可能属性を追加します。
- システムへ統合するか確認するダイアログが表示されるので、統合しておく
  - システムへ統合しておくと、 Ubuntu のアプリ一覧へ追加されます。統合されている場合は、起動中アプリ一覧が表示されているバーの端の「アプリケーションを表示する」ボタンを押すと Unity Hub のアイコンが追加されます。
  - AppImage はインストーラではなく実行ファイルなので、移動させたり削除してしまうと起動できなくなります。 ~/AppImages 等のフォルダを作って、移動してから起動する方が良いかもしれません。

## Unity Hub から Unity をインストールする

- Unity Hub を起動する
- Unity のユーザ登録をする (登録済みの場合はそれを使う)
- 登録されたユーザ情報を Unity Hub に入力する
- ライセンスの管理画面が出たら、必要に応じてライセンスを選ぶ
  - 個人で使う場合は、新規で Unity Personal のライセンスを追加する (無料)
- Unity Hub の左上の 「←」ボタンを押して、最初の画面に戻る
- メニューから「インストール」を選択し、 Unity をインストールする
  - Android ビルドサポート等の追加モジュールは必要なければ今はインストールしないでも大丈夫です。 Unity Hub で後からモジュールを追加できます。
- しばらく待つとインストール完了

## Unity を起動する

- Unity Hub を開く
- メニューから「プロジェクト」を選択
- 「新規作成」ボタンを押す
- プロジェクト名等を入力して「作成」ボタンを押す
- Unity が起動する

ここで、「Failed to initialize unity graphics」と表示されて Unity が起動できない場合は、[このページ](https://forum.unity.com/threads/unity-on-linux-release-notes-and-known-issues.350256/) を開いて、必要なパッケージがインストールされているか確認してください。「Dependencies and Recommended Packages」のところに、起動に必要なパッケージの一覧が書かれています。
簡単にパッケージの確認とインストールができるように、コピペで使えるコマンド一覧を書いておきます。ターミナルに貼り付けると実行できます。一気に全部コピペすると問題が起こった時に対処できなくなりそうなので、２～３行ずつ貼り付けてみて、様子を見ながらコピペしてください。

```bash
sudo apt install gconf-service
sudo apt install lib32gcc1
sudo apt install lib32stdc++6
sudo apt install libasound2
sudo apt install libc6
sudo apt install libc6-i386
sudo apt install libcairo2
sudo apt install libcap2
sudo apt install libcups2
sudo apt install libdbus-1-3
sudo apt install libexpat1
sudo apt install libfontconfig1
sudo apt install libfreetype6
sudo apt install libgcc1
sudo apt install libgconf-2-4
sudo apt install libgdk-pixbuf2.0-0
sudo apt install libgl1-mesa-glx
sudo apt install libgl1
sudo apt install libglib2.0-0
sudo apt install libglu1-mesa
sudo apt install libglu1
sudo apt install libgtk2.0-0
sudo apt install libnspr4
sudo apt install libnss3
sudo apt install libpango1.0-0
sudo apt install libstdc++6
sudo apt install libx11-6
sudo apt install libxcomposite1
sudo apt install libxcursor1
sudo apt install libxdamage1
sudo apt install libxext6
sudo apt install libxfixes3
sudo apt install libxi6
sudo apt install libxrandr2
sudo apt install libxrender1
sudo apt install libxtst6
sudo apt install zlib1g
sudo apt install debconf
sudo apt install npm
```

## MonoDevelop のインストール

Linux 用の Unity では MonoDevelop (C# コードのエディタ) が付属していないので、必要であれば次の手順でインストールします。

- [MonoDevelop のダウンロードページ](https://www.monodevelop.com/download/) を開く
- Linux のタブを選択する
- Ubuntu 18.04 のインストール準備用コマンドが４行ほど書かれているのでコピペで実行する
- インストール用コマンドを実行する

```bash
sudo apt-get install monodevelop
```

### Unity の設定

- メニューから 「Edit」 → 「Preferences」 を開く
- 「External Tools」 タブを選択
- 「External Script Editor」 → 「Browse」
- /usr/bin/monodevelop を選択

Unity と MonoDevelop の連携はうまく動かないようです。 .cs ファイルをダブルクリックしても MonoDevelop 内でソースコードのエディタが開かない場合は、手動でプロジェクトファイルを開く必要があります。

- MonoDevelop のメニューから 「ファイル」 → 「開く」
- Unity のプロジェクトフォルダを選択
- プロジェクト名.sln ファイルを開く

## トラブルシューティング

### OpenGL の動作確認
glxgears を起動して、ギアが回っているウインドウが表示されるかチェックしてみてください。 glxgears は次のコマンドで実行できます。

```bash
sudo apt install mesa-utils
glxgears
```

### Unity に空白のエラーが出て実行できない場合

C# 形式のファイルを追加した時、 Unity のコンソールに空白のエラーメッセージが出て実行できなくなる場合があります。[上記の手順](#unity-%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B) で、必要なパッケージがインストールされているか確認してください。
また、 MonoDevelop をインストールすると .Net 関連の DLL が追加されて問題が解消されるかもしれません。

### VirtualBox 上の Ubuntu で Unity が起動できない場合

次の設定を確認してください。
設定項目がグレーアウトされて変更できない場合は、仮想マシンの電源をオフにしてから設定画面を再度開いてください。

- VirtualBox の設定画面を開く
- 「ディスプレイ」タブを開く
- 「ビデオメモリー」を 128 MB にする
- 「グラフィックスコントローラ」を VBoxSVGA にする
  - VMSVGA ではうまく動きませんでした (VirtualBox 6.0.12)。
- 「3Dアクセラレーションを有効化」のチェックを有効にする
- 「システム」タブを開く
- 「メインメモリー」を 2048MB 以上に設定する (多いほど良い)
  - Unity を起動した直後に free -h で確認すると、 used が 1.2G になっていました。

上記の設定後、仮想マシンを起動して、

- VirtualBox のメニューから 「デバイス」 → 「Guest Additions CD イメージの挿入」
- 自動起動での実行確認画面が出たら、パスワードを入力する
  - 自動起動しなかった場合は、 sudo /media/[ユーザ名]/VBox_GAs_[バージョン番号]/VBoxLinuxAdditions.run を実行する
- 「VirtualBox Guest Additions: Running kernel modules will not be replaced until 
the system is restarted」が表示されるまで待つ
- 仮想マシンを再起動

この設定で Unity が起動できるようになると思います。
Guest Additions のインストールでエラーが出る場合は、次のコマンドを入力した後で再度実行してください。

```bash
sudo apt install build-essential
sudo apt install linux-headers-$(uname -r)
```

## 参考リンク

- [UbuntuでゲームエンジンのUnityをインストールする手順](https://www.virment.com/how-to-setup-unity-ubuntu/)