unity Xlua集成编译Protobuf保姆级教程(2)

上次我们集成编译好了各平台的xlua.
接下来 我们在LuaDll 添加如下代码在这里插入图片描述

        [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
        public static extern int luaopen_protobuf_c(System.IntPtr L);

        [MonoPInvokeCallback(typeof(LuaDLL.lua_CSFunction))]
        public static int LoadProtobufC(System.IntPtr L)
        {
            return luaopen_protobuf_c(L);
        }

        [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
        public static extern int luaopen_pb(System.IntPtr L);

        [MonoPInvokeCallback(typeof(LuaDLL.lua_CSFunction))]
        public static int LoadPb(System.IntPtr L)
        {
            return luaopen_pb(L);
        }

然后在LuaDLL 中添加
在这里插入图片描述

 AddBuildin("pb", XLua.LuaDLL.Lua.LoadPb);

我们把ua-protobuf 目录下的protoc.lua 文件拷贝到我们lua框架下
然后我们创建一个proto3 文件

syntax = "proto3"; 

message Monster
{
    string Name     = 1;
    int32   level     = 2;
    string Describe  = 3;
} 

最后我们编写一些测试lua 文件
在这里插入图片描述

local TestPb = class("TestPb");
-- 测试PB的序列化和反序列化
function TestPb:TestPB()
    Resource.resourceLoaderManager:LoadMainAsset
    (AssetCategory.CusShaders, "Assets/Download/Proto/Monster.proto.txt",function(res)
        if(res~=nil)
        then
            local protoString=res.Target.text;
           local protoc = (require("Framework/NetWork/protoc")).new()
            --引入PB库
            local pb = require "pb"
            assert(protoc:load(protoString, "Monster.proto"))
                  local data =
                 {
                     Name = '缝合怪',
                     level  = 100,
                     Describe = "重型战士,活跃于战场的最前线。缝合怪能用肉勾把敌人拖向他,还能在受伤时释放毒云。",
                 }
                 -- 序列化成字节流
                 local bytes = assert(pb.encode('Monster', data))
                 print(pb.tohex(bytes));
                 -- 反序列化成lua的table
                 local data2 = assert(pb.decode('Monster', bytes))
                 print(data2.Name)
                 print(data2.level)
                 print(data2.Describe)
        end
    end);
end
return TestPb;

运行效果如下:
在这里插入图片描述
xlua 到此就集成测试完毕了,接下来编写一个完善的通信框架

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity XLua 商业游戏源码是指使用Unity引擎和XLua语言进行开发的高质量、专业水准的游戏源代码。 首先,Unity是世界上最流行和强大的游戏引擎之一,广泛用于创建各种类型的游戏,包括PC、手机、虚拟现实和增强现实游戏。它提供了丰富的工具和功能,使开发者可以轻松创建出错综复杂和令人印象深刻的游戏。Unity的跨平台特性也使得游戏可以在不同的设备上运行。 而XLua是一种基于Lua语言的脚本编程框架,它可以与Unity引擎完美集成,为开发者提供了更灵活、高效的游戏开发方式。XLua具有良好的性能和扩展性,可以轻松地将Lua脚本与C#代码结合起来,发挥出各自的优势。 商业游戏源码意味着这些源代码是由具有丰富游戏开发经验的专业开发团队编写的。他们经过精心设计和优化,代码结构清晰,易于理解和维护。商业游戏源码通常包含了各种常见的游戏开发功能,例如角色控制、物体碰撞、动画系统、UI界面、游戏关卡设计等。这些源码可以作为学习游戏开发的参考,也可以用于商业游戏项目快速搭建和开发。 总结来说,Unity XLua 商业游戏源码是一种高质量和专业水准的游戏源代码,它利用Unity引擎和XLua语言的强大功能,为游戏开发者提供了高效、灵活的开发方式,可以用于学习游戏开发和商业游戏项目的开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值