目前lua集成protobuf主要有兩種方式
1. protobuf-gen-lua方案
https://github.com/sean-lin/protoc-gen-lua 參照說明即可集成
這個方案是將proto文件導出成lua文件, 使用起來稍微麻煩, 不能直接創建lua table, 而是要用生成lua pb文件中指定格式的table來生成二進制, 同樣服務器返回的二進制數據也是反序列化成生成lua pb文件中指定格式的table。 對數組的操作與lua原生方式不一樣, 沒有良好的打印日志功能, 需要自己編寫, 如果自己封裝框架會很別扭, 因為要編寫系列方法來處理lua table和lua pb中的table的轉換和對應關系
2. 雲風pbc方案
https://github.com/cloudwu/pbc
這個方案處理的很干凈利落 類似與json.decode json.encode 可以直接把lua table生成二進制和直接從二進制反序列化成lua table, 因此log功能 框架封裝都處理起來很順手
這個方案提供了tolua封裝
需要注意的是,pb文件是proto編譯生成的,暴露在資源路徑下,需要自己進行加密,否則真成了裸奔了
啟動時需要注冊protobuf文件
local buffer = cc.FileUtils:getInstance():getStringFromFile(" XXX.pb")
protobuf.register(buffer)