5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UnityAdvent Calendar 2024

Day 13

LinuxでUnityを使う

Last updated at Posted at 2024-12-12

はじめに

この記事はUnity Advent Calendar 2024 13日目の記事です。

皆さんはUnityでどのOSに出力しているでしょうか?
モバイル用のiOS/AndroidあるいはデスクトップのWindows/MacOSに出力している方がほとんどだと思います。
今回は出力先としては珍しいLinuxについて解説します。
LinuxでUnityを使う利点として、WindowsやMacの使用にかかるライセンス料を大幅に減らすことができます。また、Unityを組み込みソフトとして使う場合や、AWS/Google Cloud(GCP)などのクラウド上で使う場合に選択肢として考えられます。

環境の準備

公式サイトではUnityを使えるLinuxのディストリビューションとして下記がリストアップされています。

System requirements
CentOS 7
Rocky
Ubuntu versions 20.04 and 22.04
https://docs.unity3d.com/hub/manual/InstallHub.html

今回の記事ではAWS上にUbuntu環境を用意し、そこにUnityをインストールします。既に環境がある方は、この節を飛ばしていただいて問題ありません。

AWSではNICE DCVというリモートデスクトップの機能があります。こちらの機能を含んだAMIをMarket Placeから探してきてインスタンスを立ち上げます。インスタンスタイプにはg4dn.xlargeなどGPU付きを指定します。
image.png

NICE DCVはセキュリティグループでUDP/TCPともに8443ポートを空けておく必要があります。また、SSH接続用にTCPの22も開けておきます。

最近のUnityは大きな容量を要求するのでストレージを少し大きめに設定しておきます
image.png

立ち上がったばかりのインスタンスにはパスワードが設定されていないので、コンソールから接続し下記のコマンドでパスワードを設定します。なお、初期のユーザー名がubuntuになっています。

sudo passwd ubuntu

NICE DCVクライアントを使って接続します。
image.png

上手くいくとUbuntuのデスクトップが表示されます。これで環境設定は完了です。
ubuntu.png

Unity Editorのインストール

ここからUnity Editorをインストールしていきます。
公式サイトに記載の手順で進めていきます。下記はUbuntuでの説明になります。

下記の4コマンドでUnityHubのインストールができます。

wget -qO - https://hub.unity3d.com/linux/keys/public | gpg --dearmor | sudo tee /usr/share/keyrings/Unity_Technologies_ApS.gpg > /dev/null

sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/Unity_Technologies_ApS.gpg] https://hub.unity3d.com/linux/repos/deb stable main" > /etc/apt/sources.list.d/unityhub.list'

sudo apt update

sudo apt-get install unityhub

上手くインストールができたらアプリケーション一覧にUnityHubのアイコンが表示されます
unityhub.png

アイコンをクリック、またはunityhubコマンドでUnityHubが起動します。
この時下記のエラーが出て実行できないことがあります。

A JavaScript error occurred in the main process
Uncaught Exception:
Error: /tmp/.org.chromium.Chromium.LesfF5: failed to map segment from shared object

こちらはsudo mount -o remount,exec /tmpのコマンドを実行してから、UnityHubを実行すると直すことができます。

UnityHubが実行できたら、ログインしUnity Editorをインストールします。
image.png

インストールができたら、プロジェクトを作成します
image.png

プロジェクトが開きました。
ここまで出来たら後はいつものUnityと変わりありません。
unity.png

ビルドして実行できるか確認してみましょう
build.png

バイナリを実行する

ビルドができたら実行ファイルをクリック、またはコンソールから叩くことで実行できます
もし実行できない場合は、実行権限が付与されているか確認しましょう
image.png

image.png

Linuxで制作する際の注意事項

ネイティブプラグインを使用する際は、Linux向けにビルドされたプラグインが必要になります。
既存のプロジェクトを移植する場合や、アセットストアからプラグインを入手した場合は注意が必要になります。
一方でC#で作成されたマネージドなプラグインであれば、Linuxでもそのまま使うことができます(DoTween、UniTask、UniVRMなど)

Github Actionsを使ってビルドする

ここまでLinuxにUnityをインストールしてビルドするまでを紹介してきました。Linux版のUnityを使って開発することも可能ですが、使い慣れたWindowsやMacで開発を行い、最終出力だけLinux版のバイナリが欲しいという方もいるでしょう。
そういう方のために、Github Actionsを使ってビルドできる方法を簡単に紹介します。

環境構築についてはこちらの記事を参照してください。

環境構築ができたら、下記のYAMLでLinux版のビルドができます。
基本のファイルからTarget PlatformをStandaloneLinux64に変更しただけになります。

# 名前を付ける。これがGithubActions上に表示される
name: Run the Linux build
on:
  workflow_dispatch: {}
jobs:
  build:
    name: Run the Linux build
    runs-on: ubuntu-latest
    steps:
      # リポジトリのチェックアウト
      - name: Check out my unity project.
        uses: actions/checkout@v4
      - name: Create LFS file list
        run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id

      # LFSファイルのキャッシュを取得する
      - name: Restore LFS cache
        uses: actions/cache@v4
        id: lfs-cache
        with:
          path: .git/lfs
          key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}

      # LFSファイルをPullする
      - name: Git LFS Pull
        run: |
          git lfs pull
          git add .
          git reset --hard

      # ファイル名にgitのハッシュを含めたいので$GITHUB_OUTPUTに保存しておく
      - name: Set outputs
        id: vars
        run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
        
      # Cache
      - uses: actions/cache@v4
        with:
          path: Library
          key: Library-${{ hashFiles('Assets/**', 'Packages/**', 'ProjectSettings/**') }}
          restore-keys: |
            Library-

      # Unityプロジェクトのビルド
      # 設定しない場合、buildフォルダに出力される
      - name: Run the Linux build
        uses: game-ci/unity-builder@v4
        env:
          UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
          UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
          UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
        with:
          targetPlatform: StandaloneLinux64
          unityVersion: 2022.3.0f1  #ここに使うUnityのバージョンを入れる

      # 成果物をZIPにしてアップロードする
      - name: Upload the Linux Build
        uses: actions/upload-artifact@v4
        with:
          name: Build-${{ steps.vars.outputs.sha_short }}
          path: build

このActionを実行し、うまくビルドできるとZIPファイルがGithub上にアップロードされます
image.png

このファイルをLinuxに転送します。

ZIPファイルを展開するとStandaloneLinux64というフォルダが生成されます。
この中のStandaloneLinux64というファイルが実行ファイルになります。
image.png

おわりに

LinuxでUnityを使うというニッチな技術を紹介しました。
Linuxを使うことでコスト性に優れたシステムを組むことができます。
是非参考にしてみてください

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?