DEV Community

松本隆介
松本隆介

Posted on

UnityのWindowsアプリでアプリケーションの再起動処理

経緯

需要はそんなに多くはないと思うけどメモ
イベント用アプリ等だとオペレータに操作を任せるので何かあったら再起動...の手順があると望ましい。
ただオペレータに再起動のやり方を教えても普段PCを利用していない人の場合だとヒューマンエラーの原因となりかねない( あと見られたくないフォルダがあるとか... )のでゲーム内のUIに再起動ボタンを作成してそれを押下してもらう方法などがよいと思います。


スクリプト

using UnityEngine;

namespace sample
{
    public class Sample : MonoBehaviour
    {

        void Start()
        {
        }

        void Update()
        {
            if (Input.GetKeyDown(KeyCode.Return))
            {
#if UNITY_STANDALONE_WIN
                System.Diagnostics.Process.Start(Application.dataPath.Replace("_Data", ".exe"));
                Application.Quit();
#endif
            }
        }

    }
}

Enter fullscreen mode Exit fullscreen mode

解説

このサンプルスクリプトではEnterキーを押下した時にアプリケーションを再起動する。

Application.dataPathは [アプリ名]_Data フォルダまでのパスであるが [アプリ名] の部分は実際の実行ファイルの名前と同一でないとアプリが起動しない( 実行ファイルの名前のみ変更や_Dataフォルダのアプリ名部分の変更を行うとエラーが出て起動しない )為、このパスから自身のアプリケーション名を取得することが可能、ほかにもAssembly.GetEntryAssembly().Location等があるがこちらはUnityではnullが返されたり動作が安定しないので安牌として Application.dataPath から実行ファイル名を取得する方法で実装するのが一番お手軽だろう。

Top comments (0)