当前位置: 首页 > news >正文

TSRPC+Cocos

TSRPC文档: https://tsrpc.cn/docs/get-started/api.html

创建

先创建一个默认的会话项目,找一个文件夹在控制台运行以下代码:

npx create-tsrpc-app@latest first-api --presets browser
# 或者
yarn create tsrpc-app first-api --presets browser

运行之后根据自己的需求选
在这里插入图片描述

等待
在这里插入图片描述

新建初始模板结束
在这里插入图片描述

会发现在运行Powershell的文件夹下出现了一个“first-api”文件夹,里面包含前端和后端工程。
在这里插入图片描述

分别下载依赖,运行如下代码

npm i

看看后端里写的readme,运行后端

npm run dev

运行前端
注意要用命令行运行,不要用liveServer什么的。

npm run dev

可以看到如下页面
在这里插入图片描述

都运行起来之后,就可以发消息了
在这里插入图片描述

如果使用的是WS,也是一样的操作,前端页面如下:
在这里插入图片描述

使用Cocos制作前端

之前的前端部分可以关掉了,接下来用Cocos Creator制作一个前端。
新建一个Cocos项目,把这些复制到package.json

  "dependencies": {"tsrpc-browser": "^3.4.11","tsrpc-miniapp": "^3.4.1"}

先运行

npm i

sharedclient的内容复制到cocos里
在这里插入图片描述

注册一个全局管理器

GameManager.ts
import { HttpClient } from "tsrpc-browser";
import { ReqAddData } from "../shared/protocols/PtlAddData";
import { serviceProto } from "../shared/protocols/serviceProto";/*** 前端游戏状态管理* 主要用于实现前端的预测和和解*/
export class GameManager {private client;constructor() {// Use browser client or miniapp client depend on the platform this.client = new HttpClient(serviceProto, {server: "http://192.168.231.98:3000",json: true,logger: console,});}async addData(obj: ReqAddData): Promise<void> {let ret = await this.client.callApi('AddData', obj);if (!ret.isSucc) {console.log("请求失败");return;}}async loadList() {let ret = await this.client.callApi('GetData', {});// Errorif (!ret.isSucc) {alert(ret.err.message);return;}// Successreturn ret.res.data;}
}

发送按钮绑定事件

this.gameManager.addData({ content, name });
// 发送完成后刷新一次
this.scheduleOnce(() => {this._updateList();
}, 0.5)

配合UI制作等等,实现一个对话窗功能

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 在react中 使用redux
  • 2024年最新软件测试学习路线图(从入门到精通)
  • 利用长度选择器优化Prompt示例选择:提升AI对话效率
  • python实现多个pdf文件合并
  • docker镜像结构
  • pikachu下
  • Redis常用操作及springboot整合redis
  • 监听html元素是否被删除,删除之后重新生成被删除的元素
  • Django_Vue3_ElementUI_Release_004_使用nginx部署
  • C编程控制PC蜂鸣器
  • 【乐企-业务篇】开票前置校验服务-规则链服务接口实现(纳税人基本信息)
  • dedecms(四种webshell姿势)、aspcms webshell漏洞复现
  • Leetcode 144. 二叉树的前序遍历(Easy)
  • JZ2440开发板——S3C2440的UART的使用
  • STM32启用FPU浮点运算
  • [PHP内核探索]PHP中的哈希表
  • AWS实战 - 利用IAM对S3做访问控制
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Druid 在有赞的实践
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • learning koa2.x
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Python 反序列化安全问题(二)
  • tweak 支持第三方库
  • 开源地图数据可视化库——mapnik
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • raise 与 raise ... from 的区别
  • zabbix3.2监控linux磁盘IO
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (5)STL算法之复制
  • (Java入门)学生管理系统
  • (十一)图像的罗伯特梯度锐化
  • (四)JPA - JQPL 实现增删改查
  • (算法)区间调度问题
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • ../depcomp: line 571: exec: g++: not found
  • .“空心村”成因分析及解决对策122344
  • .net core 连接数据库,通过数据库生成Modell
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET上SQLite的连接
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .NET中的十进制浮点类型,徐汇区网站设计
  • 。。。。。
  • :=
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [ACTF2020 新生赛]Include
  • [ActionScript][AS3]小小笔记
  • [Android Studio 权威教程]断点调试和高级调试
  • [Android]创建TabBar
  • [Android]使用Git将项目提交到GitHub