####まえがき
前回はデバイスを完成させましたので次は利用できるアプリケーションを作成していきたいと思います.
####本題
Unityと端末がBluetoothで通信できるようにする
#####機器概要
・Windows10 Laptop
・Unity 2019.3.2f1
・スタンプ型デバイス(M5StickC)
####手順
デバイスからの送信は前回実装したので今回はUnity側で受信するscriptを実装する
#####1.新規プロジェクトを作成
#####2.設定を変更
File/Build Settings...からUWPに変更
Switch Platformする
#####3.script作成
受信するためのscriptはこちらをありがたく使わせていただきます.
以下のscriptをAssetsに作成
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class ColorChanger : MonoBehaviour
{
public SerialHandler serialHandler;
private bool flag = false;
int num = 0;
public Material[] array = new Material[5];
void Start()
{
serialHandler.OnDataReceived += OnDataReceived;
}
void OnDataReceived(string message)
{
var data = message.Split(
new string[]{"\n"}, System.StringSplitOptions.None); //受信する
Debug.Log(message);
switch (data[0]){
case "ON": //ONの時
if(flag == false){ //一度だけ実行する
//オブジェクトの色を用意したMaterialの色に変更する
GetComponent<Renderer>().material.color = array[num].color;
num++;
if(num > 4) num = 0;
flag = true;
}
break;
default:
if(flag == true) flag = false;
break;
}
}
}
#####4.objectにアタッチ
Demo用にCubeを作成
Cubeに作成したscriptをアタッチする
Serial Handler
Port Name:作成したデバイスのBluetooth接続Portに変更
※今回はBluetoothがCOM6となっていた
ColorChanger
Serial Handler:Cubeをアタッチ
Array:変化させる色のマテリアルをいくつか作成してアタッチ
####実行例
Unityで使えた!! pic.twitter.com/Iyj506nRYU
— ゆーま (@sagirin262) August 21, 2020
####あとがき
次はHoloLens2での利用,スタンプデバイスの位置を取得する手法を考えようかと思います
####参考
【Unity】ESP32マイコンでBluetoothでUnityと接続するコントローラを作る
Unity2018でシリアル通信できない問題
BluetoothSerialでお手軽無線通信(M5StickC)
Bluetoothの自作デバイスを作りたい
UnityでC#によりCOMポートからのデータ入力
Serial Port Utility Pro
【Unity】Serial Port Utility Proをつかってシリアル通信する(Unity2019 & Win10 ※System.IO.Portsは使用しない)