Unity配置grpc,并实现只创建一个grpc的客户端
前段时间在做项目的过程中,需要实现一个机器人模型实时反映实际机器人的运动,因为本身在做机器人控制系统的时候,控制系统和上位机的通讯方式已经改成了面向服务的grpc通讯,因此在简化系统架构的基础上,在unity上配置grpc读取实时坐标,可以和上位机使用同样的api接口。
一、生成头文件
grpc的好处就不过多赘述,相信使用过的都清楚,相比于网上的其他教程,在本教程创建头文件时会更加方便。如果你以前使用过grpc,或者刚刚安装,那么在你C盘 C:\Program Files (x86)\grpc\bin 下,会有这么几个程序
如果你没有这些程序,可以直接去这里下载 https://packages.grpc.io/archive/2022/02/cc3de1c3eba4c342c406729649f3c39f829dcdbc-24ad316a-7a17-4194-ac29-a95eceae67c6/index.xml
很明显这是针对不同语言来生成头文件引用的,因为我们是C#,所以在此文件夹下右键 在windows终端中打开,输入如下代码(其中最后面是我自己写的proto文件):
PS C:\Program Files (x86)\grpc\bin> .\protoc.exe --csharp_out=. --grpc_out=. --plugin=protoc-gen-grpc=.\grpc_csharp_plugin.exe .\DemConDataTransfer.proto
然后就会生成如下文件,把这两个文件导入到你的Unity项目中。
二、导入包
有了这两个文件,你只需要到grpc的官网去下载unity - grpc 的package包(和上面下载的网址相同)并下载图中的文件
把这个包下载下来后,直接把里面的文件解压到 你的项目/Assets 中,打开unity,它自己就会帮你导入完成:
三、快乐地敲代码
我自己在做的过程中,由于我想要不断的更新坐标,所以要把api写在update函数里,因此创建了一个类,并用这个类管理所有我需要从控制器获取的数据,并且用这个类来创建grpc的客户端。这里有一个细节,要自行创建析构函数,把关闭客户端放在里面(很多例程不会这样做,别问为什么,问就是踩过坑),这样你在创建了一个对象的时候,这个对象就可以反复使用,反复调用里面的api了。
在这个类里面,你可以自己创建函数,对你proto文件定义的函数做一层封装,这样你在使用的时候就可以对象名+函数名来实现调用远程服务器上的函数了。
using UnityEngine;
using Grpc.Core;
using ExternalDataTransfer;//我自己proto文件生成的名称
using System;
public class myclient//客户端类
{
public myclient()
{
channel = new Channel("ip+端口", ChannelCredentials.Insecure);
client = new RPCDemConData.RPCDemConDataClient(channel);
}
public ~myclient()
{
channel.ShutdownAsync().Wait();
}
}
我自己专门创建了一个更新的函数绑定在摄像机上,这样启动时就可以加载运行,并且不断更新了。
public class textofgrpc : MonoBehaviour
{
public myclient ourcient;//声明一个客户端对象
void Start()
{
ourcient = new myclient();//实例化
}
void Update()
{
ourcient.getaxis();//我自己封装的更新坐标函数
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)