Web開発など

Java, JS, CSS, HTML, Unity, C# のことなどを書いてます。フリーソフトや二次創作の公開もしています。

Unity:ゲームの二重起動抑止

Unity で開発したゲーム(アプリ)を、二重起動させない方法を書いていきます。方法としては、C#スクリプトで実装する感じです。

参考文献

hiroakioishi/AvoidDoubleLaunch.cs - GitHub

コード例

ゲームのプロセスが二重起動になるかを判定するメソッド IsDuplicated() を用意して、

bool IsDuplicated() {
  Process[] proc = Process.GetProcessesByName(
    Process.GetCurrentProcess().ProcessName
  );
  if (proc.Length > 1) return true;
  return false;
}
void Start() {
  if (IsDuplicated()) Quit();
  // ・・・省略・・・
}

ゲーム開始時の Start() から呼び出すようにしてみました。二重起動している場合は Quit()(実装は後述)で終了するようにしています。

解説

自分の環境だと、

Process.GetCurrentProcess().ProcessName

の戻り値は、EXE名(拡張子なしの string)でした。

二重起動させたときの変数 proc は長さ 2 の配列で、

proc[0].ProcessName
proc[1].ProcessName

配列要素のプロセス名(上のコードの戻り値)もEXE名でした。

ゲーム終了方法 - Quit() について

終了方法とQuit() メソッドの実装は、以下の記事に書いていました。

web-dev.hatenablog.com

必要に応じて参照して頂けると嬉しいです。