WebGL向けのゲームを作っています。タブやウィンドウを複製して二重起動されないように下記コードを追加したのですが、うまくいきません。
エディタで二重起動を再現する方法がよくわかっていないのでビルド&ランをして試しているのですが、アドレスをコピーして別のタブでもう一つ起動してみても何の問題もなく起動してしまいます。
確認すると、エディタ上で起動した際は proc.Length = 1 と(textに)表示されたところが、ビルド&ランすると proc.Lengthの値は変動しない(textの初期値9999)ままなので、おそらくビルド後はprocが存在しないとか、アクセスできないとかそんなところかなと想像しています。が、じゃあどうすればいいのかというのは全くわかりません。
どうすればいいんでしょうか?(汗)
ぶっちゃけどんな方法でも二重起動が防げればいいのですが・・・。
C#
1 void Start() { 2 if (IsDuplicated()) Quit(); // 二重起動したら終了 3 } 4 5 bool IsDuplicated() { 6 Process[] proc = Process.GetProcessesByName( 7 Process.GetCurrentProcess().ProcessName 8 ); 9 10 // proc.Lengthを確認 11 procLengthText.text = "" + proc.Length; 12 13 if (proc.Length > 1) return true; 14 return false; 15 } 16 17 void Quit() { 18 #if UNITY_EDITOR 19 UnityEditor.EditorApplication.isPlaying = false; 20 #elif UNITY_STANDALONE 21 UnityEngine.Application.Quit(); 22 #endif 23 } 24
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/18 08:03
2019/09/18 09:10 編集
2019/09/18 12:30