【PowerShell】ターミナルからコマンドでUnityを立ち上げる
前提
環境
- Windows
- Powershell
- Unity (おそらく 2018 以後 / 筆者は 2021, 2022 で動作確認済み)
本記事で書かないこと
- WindowsTerminal や Powershell のセットアップ方法
- 手前味噌ですが私の環境構築手順をスクラップにまとめてます。本記事を見てやってみたいと思って頂けたらぜひ! → Windows Terminal でかっこいい PowerShell 環境を構築する
- 手前味噌ですが私の環境構築手順をスクラップにまとめてます。本記事を見てやってみたいと思って頂けたらぜひ! → Windows Terminal でかっこいい PowerShell 環境を構築する
- Powershell の基礎知識
結論
$profile に以下を追記。
function Open-UnityEditor {
$version = (Get-Content .\ProjectSettings\ProjectVersion.txt)[0].Split(":")[1].Replace(" ", "")
$unityEditor = "C:/Program Files/Unity/Hub/Editor/" + $version + "/Editor/Unity.exe"
$project = Convert-Path .
Start-Process $unityEditor -ArgumentList "-projectPath" , $project
}
以下のように使用します。
# Unityプロジェクトのルートディレクトリに移動
cd C:\Hoge\Fuga\Piyo
# Unity起動
Open-UnityEditor
解説
function Open-UnityEditor {
$version = (Get-Content .\ProjectSettings\ProjectVersion.txt)[0].Split(":")[1].Replace(" ", "")
$unityEditor = "C:/Program Files/Unity/Hub/Editor/" + $version + "/Editor/Unity.exe"
$project = Convert-Path .
Start-Process $unityEditor -ArgumentList "-projectPath" , $project
}
上記の2行目( $version =
のところ)で Unity Editor のバージョンを取得しているところが肝です。
Unity Editor はバージョンごとに、以下のように実行ファイルのパスが異なります。
C:\Program Files\Unity<version>\Editor\Unity.exe
参考: https://docs.unity3d.com/ja/2018.4/Manual/GettingStartedInstallingHub.html
そのためプロジェクトフォルダ内からエディタバージョンを拾ってきて、実行ファイルパスを生成する必要があります。
エディタバージョンは ProjectSettings\ProjectVersion.txt
の 1 行目に記載されています。
m_EditorVersion: 2022.3.8f1 ← ★これ!
m_EditorVersionWithRevision: 2022.3.8f1 (abcdef012345)
以下の1文で、エディタバージョンを抜き取り、
$version = (Get-Content .\ProjectSettings\ProjectVersion.txt)[0].Split(":")[1].Replace(" ", "")
以下の1文で実行ファイルパスを生成しています。
$unityEditor = "C:/Program Files/Unity/Hub/Editor/" + $version + "/Editor/Unity.exe"
あとは Unity Editor のコマンドライン引数 に、起動対象のプロジェクトのパス(カレントディレクトリ)を設定して Start-Process しています。
$project = Convert-Path .
Start-Process $unityEditor -ArgumentList "-projectPath" , $project
あとがき
Unity を使い始めた頃は Unity Hub という便利なツールがあるんだなぁ、ここから一元管理できて便利だなぁ、みたいに思っていました。
しかし Unity でいくつかゲームを作るようになってから、いちいち Unity Hub を開くのが面倒 と感じるようになりました……。
開発作業するとき、私は VSCode (のターミナル) や Windows Terminal を最初に立ち上げて、そこからコマンドベースで諸々操作することが多く、 Unity Hub を立ち上げて GUI で操作するという行動が手間になっていました。
そこで、普段のコマンドライン操作で Unity を起動できれば最高じゃない! と思ったのがきっかけで上述のコマンドレットを作成しました。
ちなみに私は以下のようにエイリアスを設定して uni
で Unity が起動できるようにしています。
Set-Alias -Name uni -Value Open-UnityEditor -Option None
以上、同じ悩みを持っている方の参考になれば幸いです!
Discussion