【Unity】Bluetooth接続を行う3


前回に続いてBluetoothを使ってみる。

前回までの処理をどんどん改造してみます。

とりあえず今回までで終わりの予定。

 

まずサーバとクライアントの接続を一対多を前提としてみる。

公式サンプルでは一対一前提なのでスレッドを入れ子にして対応する。

ゲームを作るとしてほしい機能としてこんなものがありそう。

◆ サーバの起動(他端末からSCAN可能にしてaccept+new Threadのループ)

◆ クライアントのサーバースキャン(サーバ一覧の名前とアドレスを取得)

◆ クライアントのサーバ接続(Unityでサーバ一覧から選択して実行)

◆ サーバの受付終了(ゲーム開始時)

◆ 端末名の取得と変更(ついでの機能)

また状況に応じてメッセージのやり取りを行うようにする。

 

一対多用のスレッド修正はこんな感じ。

accept() と readLine() がブロック処理かつループなのでスレッドで処理してます。

BluetoothServerSocketを閉じるところはどうやってもエラーを吐くのでエラーハンドルで無視するくらいしかなさそう。acceptを安全に中止する方法がない。

 

メッセージ送信の部分はサーバ送信で全てのクライアントに送られるようにする。

スレッドの方でサーバがメッセージを受け取った場合はこのメソッドも呼ばれるので全体に配信されることになる。

サーバで何か処理した後に配信する場合にはスレッドからの呼び出しは必要ない。

 

サーバの受付終了と端末名の取得・変更は簡単にできた。

 

レシーバーはほとんど変更してないけど検出時にUnityに返すようにしている。

実際にUnityに返す処理はこんな感じに変更。

 

Unity側ではメッセージを受け取ったら分解して適当な処理をする。

 

これでUnity側からBluetoothを利用できるようになったはず。

とりあえず1つアプリでも作ってみて変更が必要そうなら追記します。

 


コメントを残す

メールアドレスが公開されることはありません。