參考:
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個不同文件夾,所以還是得復制粘貼,暫時沒想到怎么一鍵發布,不需要再復制粘貼到指定文件夾。