大侠们unity怎么在lua中用cocos lua protobuff的

13906人阅读
cocos2d-x(24)
protobuf(1)
为了使游戏开发更加方便快捷,我继续了protobuf在lua下的尝试。
socket使用的是cocos2dx集成的websocket。
先说下环境:cocos2d-x-2.2.1 + protobuf 2.5.0 +&protoc-gen-lua +&Python 2.7.5
1.在protobuf目录下依次执行如下命令
python setup.py build
python setup.py install
2.在protoc-gen-lua目录下的plugin目录中新建protoc-gen-lua.bat文件,并将如下内容粘贴到里面
@python &你的目录&\protoc-gen-lua\plugin\protoc-gen-lua
3.生成protobuf对应的lua文件,执行如下命令:
&你的路径&/protoc.exe --lua_out=./ --plugin=protoc-gen-lua=&&你的路径&\protoc-gen-lua\plugin\protoc-gen-lua.bat& test.proto执行完后就会生成test_pb.lua文件。
4.使用cocos2dx的create_project.py创建lua工程;
5.将protoc-gen-lua/protobuf目录下的pb.c文件复制到lua工程的Classes目录下,并加入到C++工程中;
6.将protoc-gen-lua/protobuf目录下的所有lua文件复制到lua工程的Resources目录下;
7.编辑AppDelegate.cpp文件,添加如下代码:
extern &C&{
#include &lua.h&
#include &lualib.h&
#include &lauxlib.h&
int luaopen_pb (lua_State *L);
8.在AppDelegate::applicationDidFinishLaunching()方法中加入初始化方法:
luaopen_pb(tolua_s);
9.此时对lua工程进行编译,如果出错,请检查并修正;编译通过,并且可以正常运行后继续下面的步骤;
10.cocos2dx默认产生的lua工程包含2个文件hello.lua与hello2.lua,打开hello2.lua,将如下内容添加到文件末尾(因为我使用的是websocket,各位可根据自己的实际情况进行修改):
local wsProtobuf=nil
function testProtobuf()
wsProtobuf = WebSocket:create(&ws://localhost:8080/web&)
local function onOpen(strData)
print(&socket open ...&)
require &test_pb&
local msg=test_pb.Message()
msg.id=101
local person =test_pb.Person()
person.id=111
person.name=&user1&
person.email=&a1@a.a&
msg.data=person:SerializeToString()
local pb_data = msg:SerializeToString()
local t={string.byte(pb_data,1,-1)}
wsProtobuf:sendBinaryMsg(t,table.getn(t))
local function onMessage(strData)
print(&socket message ...&)
local function onClose(strData)
print(&socket close ...&)
local function onError(strData)
print(&socket error&)
if nil ~= wsProtobuf then
wsProtobuf:registerScriptHandler(onOpen,kWebSocketScriptHandlerOpen)
wsProtobuf:registerScriptHandler(onMessage,kWebSocketScriptHandlerMessage)
wsProtobuf:registerScriptHandler(onClose,kWebSocketScriptHandlerClose)
wsProtobuf:registerScriptHandler(onError,kWebSocketScriptHandlerError)
11.然后在hello.lua中调用testProtobuf()函数即可。
测试运行,你可以在服务器端查看收到的消息。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:214885次
积分:2815
积分:2815
排名:第12589名
原创:55篇
评论:87条
(2)(1)(8)(1)(1)(1)(3)(6)(1)(4)(3)(9)(15)(7)(1)(1)(2)(1)如何在LuaFramework中使用protobuf-gen-lua
下载 python-2.7.2.msi
下载&LuaForWindows_v5.1.4-45.exe
下载protobuf-2.4.1.zip
或者&protoc.exe(2.4.1版本)
前者地址&&
PS:有可能前者编译不出来protoc.exe 直接下载更省事。
下载&protoc-gen-lua.rar
1)配置好python的环境变量。具体百度,很简单。
2)准备好新建protoc-gen-lua.bat里面写@python
d:\protoc-gen-lua\plugin\protoc-gen-lua
3.对应文件位置。为了更简便,直接去对应LuaFramework的文件位置就好。
修改LuaFramework的BuildProtobufFile方法里的路径
&string dir =
AppDataPath +"/"+AppConst.AppName +"/Lua/3rd/pblua";
在d:/protobuf-2.4.1/src/protoc.exe&
在d:/protoc-gen-lua/plugin/protoc-gen-lua.bat
把刚才准备的2个东西放在指定位置。
然后CMD 打开控制台到D:\protobuf-2.4.1\python&输入
python setup.py build
python setup.py install
然后就可以直接使用了。
在LuaFramework_UGUI-master\Assets\LuaFramework\Lua\3rd\pblua
下放自己的xxx.proto 会在此文件夹生成对应的xxx.lua
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。23656人阅读
Unity3D客户端(2)
在移动手机游戏开发中,目前Unity3D已成为比较主流的开发技术。
那么对于客户端服务器协议的打解包,我们有3中常用的处理方式:
1、自定义结构体:在协议中直接传输代码中自定义的结构体;这种方式的坏处是极大的增加了重复性的工作量,并且不能实现协议前后向兼容,可扩展性差;
2、json、xml等文本协议格式: 使用json、xml等文本协议作为协议格式;这种方式的好处是易于开发,方便协议前后向兼容和扩展,缺点是不能序列化,数据量大,浪费带宽;
3、推荐使用的方式: protobuf协议打解包方式;protobuf是google提出的一套开源协议,具有良好的前后向协议兼容性,易于扩展,并且具有很高的序列化和反序列化的效率,能极大的减小传输数据量的大小;
在Unity3D开发中,对于网络部分一般使用C#语言进行开发。一般推荐使用protobuf-net第三方库来进行开发。
但是不幸的是,其中使用到的JIT技术在Unity3D的IOS版本中是不能使用的,在序列化时会导致异常。
经过google网上搜索,找到一种不方便使用的解决方案如下:
但是该方案很复杂,非常不便于操作。
经过笔者自己的实验,探索出下面可用的一种解决方案:
1、从SVN上下载protbuf-net的源码:
http://protobuf-/svn/trunk/protobuf-net
2、将该目录中的所有C#源码拷贝到Unity3D中,直接使用源码而不是第三方dll;
3、此时在Unity中编译时,可能会报错说 unsafe不能使用;
4、采用如下方案可以解决: 在Assets目录下面新建&smcs.rsp文件,并在其中写入 &-unsafe&字符串,前后不加空格;
5、重新启动unity,此时我们可以发现该工程能够通过编译;
经验证,该方案在IOS设备上也是可用的。从而保证我们的protobuf能够应用在Unity移动开发中。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:111013次
积分:1241
积分:1241
排名:千里之外
原创:23篇
转载:22篇
(1)(5)(4)(2)(3)(6)(4)(9)(2)(1)(1)(2)(2)(1)(2)(1)请问大侠们unity怎么在lua中用protobuf的-Unity3D-论坛-U3D在线
Unity3D在线
当前位置: ->
-> 请问大侠们unity怎么在lua中用protobuf的
Unity3D 论坛 > 请问大侠们unity怎么在lua中用protobuf的围观:388 | 回复:23
叶寒积分:154帖子:4
我就在找呢
杨飘国积分:269帖子:1
所以我抛弃NGUI了。。
叶寒积分:154帖子:4
杨飘国积分:269帖子:1
转投自带的UGUI了。
叶寒积分:154帖子:4
UGUI功能现在没有NGUI好吧?
叶寒积分:154帖子:4
而且现在大部分公司都在用NGUI
杨飘国积分:269帖子:1
那是因为都是4.6版本以下的。。
叶寒积分:154帖子:4
我之前在其他地方看到 NGUI据说也快被U3d收编了把?
杨飘国积分:269帖子:1
看起来也蛮温暖的
杨飘国积分:269帖子:1
4.6整合了些
反正现在看UGUI
免责声明:本站所有内容来源于互联网,如果本站部分内容侵犯您的权益,请您告知,站长会立即处理
Copyright Unity3D在线 All Rights Reserved.Theme by U3dOL 备案:京ICP备号-4 |SiteMap |网站地图 |百度统计| 联系我们本文已收录于以下专栏:
相关文章推荐
本文主要从一个程序员的角度阐述一下mmorpg服务器技能系统的程序框架设计,最近在做这个,就当做一个总结吧,其中某些概念可能没有解释清楚,欢迎大家拍砖讨论技能其实是战斗系统的一个组成部分,战斗基本上都...
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:
Markdown和扩展Markdown简洁的语法
代码块高亮
图片链接和...
接上篇,技能的表格属性字段我们已经设计好了,可以满足策划短期需求了,接下来我们来设计一下技能程序的框架技能系统服务器和客户端是有交互的,具体流程看下图:‘服务器要通知客户端是否能释放技能,吟唱时间,技...
Unity3D是个好引擎,但有一个缺憾是iOS下无法热更新。如果能用Lua写Unity3D的游戏逻辑,那就可以绕过苹果审核随意更新了。
有一种方法是用C#的基础上实现Lua。这个网上可以查到有几...
公司需要将Unity工程打包上架,在这里记录一下流程供参考。
一.打开unity工程,点击运行,查看游戏图片显示等功能是否正常.
        iOS平台一直是封闭的生态圈,iOS开发者要缴纳年费加入开发者计划才可进行iOS平台的APP开发测试,所开发的APP需要上传到App Store经过苹果审核以后才可对外发布。如果要开发企业内部应用,则要缴纳更高的费用购买企业账户才可以。
        对于现在火如荼的HTML5应用,我们可以借助PhoneGap对其打包,然后像原生APP一样发布它们;或者要求用户直接通过浏览器访问。前一种方式的优点是用户体验好
降低的播放机大小主要有两个途径:一是更改Xcode内的Active Build Configuration,二是更改Unity的Stripping级别。
在发布模式下生成
你可以在 Xcode的Active Build Configuration下拉菜单中的调试和发布选项之间进行选择。根据自身游戏的大小,选择发布模式生成的player&/s
之前在越狱手机里找到《永恒战士3》的程序发现是用Unity做的,拷出资源出来看的时候发现里面有游戏程序集,立马抽出来反编译了一下,发现里面的代码只有方法签名,没有方法体,还以为用什么高端混淆工具做的,...
&a href=&/us/app/smoopa-price-
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 protobuf lua 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信