“ROS2 Unityとの通信“で通信ができていることを前提にスクリプトを記載している。
板Planeを追加し、TestScreenと名前を変更します。
Unity側の設定やスクリプトです。スクリプトはROS2とUnityの通信で使用したコードを変更します。メッセージファイルの名前も変更されているので注意!
テクスチャを作成し、受け取ったデータをテクスチャデータとして設定するだけです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Robotics.ROSTCPConnector;
using CameraMsgMsg = RosMessageTypes.CppPubsub.CameraMsgMsg;
public class Subscriber : MonoBehaviour
{
private ROSConnection ros;
public string mTopicName = "topic";
public GameObject mTestScreen;
Texture2D mTexture;
// Start is called before the first frame update
void Start()
{
Debug.Log("Start");//スクリプトが開始されたことを確認
ROSConnection.GetOrCreateInstance().Subscribe<CameraMsgMsg>(mTopicName, Callback);
mTestScreen = GameObject.Find("TestScreen");//テクスチャ表示先のオブジェクト
mTexture = new Texture2D(1, 1);
mTestScreen.GetComponent<Renderer>().material.mainTexture = mTexture;//テクスチャをオブジェクトに設定
}
void Callback(CameraMsgMsg msg) {
mTexture.LoadImage(msg.img_data);//ROS2側から受け取ったデータでテクスチャ更新
}
}