Laya中使用Protobuf

参考:

Laya-ProtoBuf  生成器环境搭建由Docker自动完成.

网络和格式--ProtocolBuffer

【咸鱼教程】protobuf在websocket通讯中的使用

egret官网提供工具

codeing源码:

https://gamedaybyday.coding.net/p/LayaProtoBuf

在Laya的论坛社区和官方教程中没有找到便利的方法。有个水友github发了个Docker自动生成的,但是没有Egret的好用。

没有指定版本的话,应该proto版本是2

一 运行npm安装

在Laya项目文件夹下,右键选择“在此处打开Powershell窗口”

 输入以下命令

npm install protobufjs@6.8.4 -g
npm install @egret/protobuf -g

 

二 运行pb-egret add

运行pb-egret add 禁止运行

先运行一次下列命令,选择Y

Set-ExecutionPolicy Unrestricted

然后再运行pb-egret add就可以了

pb-egret add

 

项目目录下生成了protobuf文件夹

三 根据.proto文件生成库文件

写一个测试用.proto文件,放在protobuf/protofile文件夹下

 运行pb-egret generate

pb-egret generate

运行后再protobuf/bundles下生成了如下文件,这就是.proto文件生成的库文件,可以当成第三方库在Laya里使用

 修改项目protobuf文件夹下的pbconfig.json如下图

 

 再次运行pb-egret generate,得到的文件变小了,不生成一些不使用的方法。

 

 四 Laya中使用库文件

复制protobuf/library下的protobuf-library.min.js到项目bin/libs下

复制protobuf/library下的protobuf-library.d.ts到项目libs下

复制protobuf/bundles下的protobuf-bundles.min.js到项目bin/libs下

复制protobuf/bundles下的protobuf-bundles.d.ts到项目libs下

Laya的UI编辑器下,F9,勾选如下

库的顺序一定不能错!!在bin/index.js里查看,要先加载protobuf-library.js,然后再加载protobuf-bundles.js,不然会报错,找不到protobuf.roots初始化对象。

代码中使用,确定template.login可以使用。socket发送可以自己调试下,我没有服务器,没调试过。

五  修改.proto文件后,如何更新

1. 按照上面的步骤4,从protobuf/bundles复制新的文件到bin/libs和libs目录下

2.  修改protobuf/pbconfig.json里有个outputFile发布路径。但是2个文件分别得放到bin/libs和libs  2个不同文件夹,所以还是得复制粘贴,暂时没想到怎么一键发布,不需要再复制粘贴到指定文件夹。

原文地址:https://www.cnblogs.com/gamedaybyday/p/12716984.html