xlua探索笔记

[xlua]探索笔记之自定义装载器

2020-10-20  本文已影响0人  符文剑舞

写在前面的话

这个世界也许是一面镜子,你对它笑它也对你笑。

lua脚本的填装方式在xlua里有三种方式,为什么会有三种方式呢?

第一种方式,

LuaEnv luaenv = new LuaEnv();

luaenv.DoString("require('mylua')");

第二种方式,通过System.IO 打开一个lua脚本,读取里面的字符串然后调用lua的DoString方法。

第三种方式, 自定义装载器,其实require的底层实现也是走这个装载器,看起来不一样而已。

图1

图1是xlua里提供的例子。看到这个设计的时候,我叹了口气......都是被逼的。

因为,lua脚本作为资源走更新流程,也就意味着某些软件/顽皮的玩家会对脚本进行一波一波的修改。有的纯属好奇,有的也就是顽皮孩子的想法。总之,为了整个环境的安稳,也避免一些顽皮的孩子惹出不必要的麻烦。于是就有了自定义装载这个东西。

1.在AddLoader 的方法里可以定义脚本的解密方法,在资源发布的时候就可以加密一下。例子里有 SignatureLoader.cs脚本,(虽然有个加密、解密的例子,我确信开发的时候都会有人去魔改这个的类的,毕竟熊孩子还是不少的)

图3

2.另外呢!我注意到xlua里有一个更好玩的东西luagit。一些其他的资料表明这个luagit不是哪都可以用的(iOS上就难说了),我确信在这个自定义装载里luagit会有一席之地。

这些东西我是怎么知道的?

嗯...cocos2d-x 4.0的代码里,有一摸一样的东西。

图5 图六 图七

最后,我们所以会使用luajit,还不是为了优化性能什么的。我们所以会用加密还不是因为这个世上总有几个熊孩子?所以,这些技术手段也只是规劝性质的让熊孩子别皮了,你真的要皮,还是会继续加密。就成了我开头说的,世界是一面镜子。不如,我们都对着镜子微笑吧!这些技术说到底只是手段而已,你对着镜子微笑,镜子也对着你微笑,世界就变得很美好了。

上一篇下一篇

猜你喜欢

热点阅读