项目记录27--unity-tolua框架 网络端+protobuf

来源:互联网 发布:微信站街营销软件 编辑:程序博客网 时间:2024/04/27 22:36
放假两天一直在搞lua protobuf ,之前运行tolua的例子失败了,回过头来看并不是例子的问题,而是自己没注意到些问题。顺便将网络部分给调节通,服务器还是使用熟悉点的erlang来,把之前的字节流改成protobuf,包头还是使用之前的定义,加密之类的没变化,就是数据部分变化就好。废话不多说
(1).先按照protobuf-2.5.0
https://github.com/REALDROOPY/protobuf-2.5.0
1去到protobuf目录编译protobuf ./configure—>make—>make install—>进入protobuf下的python目录输入python setup.py build—>python setup.py install
2.最后生成protoc在/user/local/bin下,查看下有没有protoc


(2).下载protoc-gen-lua 
https://github.com/topameng/protoc-gen-lua
设置protoc-gen-lua的路径到Path
(3).到例子目录下测试生成protoc --lua_out=./ person.proto  生成一个person_pb.lua就是需要的lua文件


()运行tolua里面protobuf的例子。
luaException: [string "protobuf/protobuf.lua"]:31: module 'pb' not found:
no field package.preload['pb’]


回想以前做coco2dx的时候就用过导出lua接口,就遇到过没有在c文件里面写入接口,会不会是这个问题?,查看luaDLL.cs
[DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
public static extern int luaopen_pb(IntPtr L);   
发现这个接口是有导出的,所以很大的问题就是没有加载"pb"这个库
 _luaState.OpenLibs(LuaDLL.luaopen_pb);
还要注意就是必须是同个luaState这个库才能使用上,所以建议实现一个统一的luaManager.cs来管理以后的对lua的调用,里面封装加载DLL,callFunc等对lua的调用方法。


好了,到这里面客户端的环境就搞好了。

服务端就免了这不是重点,有兴趣的去下载erlang_protobuf吧,也很容易就是到导出pb文件使用。

 

看看实现吧!!!!

在客户端c#边先要加载库!!!

  //加载库
    public void InitLuaLibrary()
    {
        _luaState.OpenLibs(LuaDLL.luaopen_pb); 
    }

客户端代码直接截图吧,懒了哈哈!!!!






服务端 :------------------------------------------------------------------------------


效果呢?????---------------------------------------------------别急看吧!!!



OK-------!!到这里网络部分框架也搞定了,调通了,方法也简化了调用,只需要protoid , pb_data,callBack 就OK,里面的细节不需要暴露出来!!!!!!!!


0 0
原创粉丝点击