SLB: 让我怎么说你?

很久没有写博了,不是不想写,是实在没有时间,现在只有趁着上班到外网发一发牢骚。

 

这段时间公司要制作游戏中的npc,还是带Ai 的那种,经过我的不懈努力终于定下来,AI逻辑使用Lua编写的脚本来控制。所以这段时间一直在研究Lua。因为自己写的一套GUI也想做成Lua驱动的架构。

 

    公司里用的是LuaPlus的接口,可以很好的和C++结合起来,但是我却实在不太喜欢。其一、它自身太大。其二、它是建立在lua基础上的,并且更改了Lua的代码。这个是我很不爽的两件事情。于是自己在Lua的官方站点上评估了其他几个Lua的外敷库。其中luabind的功能是最强大的,虽然强大,但是它使用了boost库,这无疑使它的体积大了许多,并且boost中的那些东西非常晦涩难懂,最可恨的是我并不觉得它易于使用。所以luabind不是我想要的。MluaBind 则是基于loki的一套库,并且帮你邦定了STL的一些基本模板。只是版本才到达0.5,并且我研究了一阵子也不知道他怎么获得Lua里的对象。

    SLB是我所研究的库里最接近我的要求的,也是我研究的最仔细的一个库。首先它不依赖于其他任何库,并且支持继承和转型,缺点在于他必须将注册的类放在一个命名空间下,并且不支持注册类成员变量。但是其结构清晰,代码尺寸小的特点非常吸引我。在研究了一段时间以后我才明白SLB走了一条非常特别的路

 

    SLB 将每一个C++对象都存储于一个LightData中,并封装成Object对象。在Object的继承类Table中实现了所有的metatable方法,并将方法注册到Lua中且和C++对象关联起来。也就是说SLB里的所有C++对象的操作都是由C++自己来管理的。而最让我气愤的是SLB居然不提供在C++中引用Lua对象的任何东西。这个该死的SLB,我发信给他的作者也没有任何回音。现在只好自己慢慢改它。好消息是现在我已经添加了一个类实现了C++中的Lua对象的访问。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值