前言 说是入门,感觉入了好久。之前有所了解,说是ulua最好。官方网站 所以毫不犹豫git下载了最新的luaFramwork研究。直接看,作为lua小白,完全是天书。特别不明白,诸如哪里导出类,哪里看导出类的api。由于luaFramework,我拿到的基本上是最新的。bbs里的文档有些也不一致。git相关的demo很多也比较老旧。看的我云里雾里的。找遍全网,luaFramework作者的blog值得一看。 正文 以下为学习中的一些感悟:
1.packager类里将包和指定lua路径下的资源打包或者复制至StreamingAssets中,同时生成files.txt,即包含资源对象名+md5值(注意,md5是根据文件生成的)。 在其他平台运行时,首次会将资源解压至persistant目录。解压后,之后运行,会先下载files资源,并且更新检测,即本地不存在的文件及md5不一致的文件会更新。 采用线程来实现下载操作,值得学习。 2.自定义的类,放在customLuaSettings导出为对应wrap,可以在lua中使用。参考该系列;https://zhuanlan.zhihu.com/p/21442566?refer=pyluo 3.启动,GameManager中初始化game.Lua,require各界面及ctr,初始化ctrMgr,通过各界面的ctr,调用panelMgr创建panel并打开。 4.与后端交互,发送,通过networkMgr.sendMessage发送。有4种协议格式。 socket封装为socketClient负责收发,接受到消息后,调用networkMgr处理, 并且,发送socketcommand,从而network(lua)模块,解析对应的消息。在network模块中,有events模块,负责订阅(取消订阅)消息,类似消息号+handle, 5.metatable的介绍; http://mobile.51cto.com/iphone-285892.htm 举例,father={house=”america”} son={car=”toyoda”} setmetatable(son,father); print(son.house); son是没有house这个元素的,此时会查找son的metatable,发现是father,仍然查找不到,才会返回nil 过程如下: 1.在表中查找,如果找到,返回该元素,找不到则继续
2.判断该表是否有元表(操作指南),如果没有元表,返回nil,有元表则继续
3.判断元表有没有__index方法,如果__index方法为nil,则返回nil;如果__index方法是一个表,则重复1、2、3;如果__index方法是一个函数,则返回该函数的返回值 为所有的lua元素,增加自定义操作。 元表_index: http://blog.csdn.net/xocoder/article/details/9028347