参考:
Laya-ProtoBuf 生成器环境搭建由Docker自动完成.
【咸鱼教程】protobuf在websocket通讯中的使用
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个不同文件夹,所以还是得复制粘贴,暂时没想到怎么一键发布,不需要再复制粘贴到指定文件夹。