【Unity】アプリ実行中にセンサとの接続が切れた場合に再起動せずに接続しなおす

背景と今回やること

以下の記事と同じコードを使用しています.

challenge-think.hatenablog.com

Unityで外部センサからの値を使用するアプリを制作しました.

アプリを実行して遊んでいる最中にセンサとの接続が切れて動かなくなった場合,今まではアプリの再起動をするしかありませんでした.

しかし,これは非常に面倒くさかったので,アプリを再起動せずにその場で再起動できるようにしてみました.

上の記事からの変更点はほとんどなく,Updateメソッドのみです.

コード

github.com

void Update()
{
    if(serialStatus == 1){
        if (Input.GetKey(KeyCode.Space)){
            Close();
            StartCoroutine("Open");
        }
    }
}

>今回はスペースキーを押すと接続をし直すように作りました. スペースキーを押すと,以下の内容のCloseメソッドが発火し,一度すべてが切断されます. その後,Openメソッドによって再接続されるという流れです.


private void Close()
{
    isRunning_ = false;

    if (thread_ != null && thread_.IsAlive) {
        thread_.Join();
    }

    if (serialPort_ != null && serialPort_.IsOpen) {
        serialPort_.Close();
        serialPort_.Dispose();
    }
    Debug.Log("CLOSE!");
}