Unityエディタ拡張でエディタを再起動したいときに検索したコードだとUnityエディタを閉じた後にUnityHubが起動するだけで肝心のプロジェクトが起動するところまでいかなかったのでいろいろ試した
最初に試したこと
よくあるのはこんな感じのコード
static void Restart() { Process.Start(EditorApplication.applicationPath); EditorApplication.Exit(0); }
現在起動しているエディタのパスを指定して起動した後にエディタを閉じるというもの
2023/08/28 現在ではこのコードではエディタを閉じたのちにUnityHubが起動するのみでプロジェクトまでは開いてくれなかった
解決策
以下のフォーラムにて対処方法が記述されていた
Is there an API to restart the editor via script? - Unity Forum
static void Restart() { EditorApplication.OpenProject(Directory.GetCurrentDirectory()); }
Unity の CsReference 覗いてみたところエディタの再起動は以下のようなコードになっていた
https://github.com/Unity-Technologies/UnityCsReference/blob/62633e3912ab891be4c6f5ef4500e69f59d85ed4/Editor/Mono/Inspector/PlayerSettingsEditor/PlayerSettingsEditor.cs#L2916
Environment.CurrentDirectory と Directory.GetCurrentDirectory() はどちらもカレントディレクトリのパスを返すプロパティ or メソッド
どちらを使うかはほぼ好みに分かれるけど Environment.CurrentDirectory の方は setter でカレントディレクトリを移動出来てしまうので取得オンリーの Directory.GetCurrentDirectory() を採用した