最近项目使用lua+cocos进行开发,开发中想实现一个功能,就是使用lua读取文件夹里面所有的文件名 包含子文件夹文件名 读出来以后可以方便的使用require 文件, 比如:想要require 一个lua文件 就要 require "xx.xx.xx.test.lua" 只要把文件名全部读出来 就可以直接写一个公共函数 Grequire(className) 使用的时候就可以不用关心xx.xx.xx路径,现在就此方案 需要使用lfs的支持 安装过程种也遇到过许多问题, 就此在这里分享一下过程,写了6年代码 第一次写博客分享,希望大家能够鼓励一下,哈哈哈~
1.首先需要下载安装lfs库,下载地址:https://github.com/keplerproject/luafilesystem 感谢作者提供各式各样的插件。下载后解压缩文件
要使用到的是 lfs.c和lfs.h
2.在lua项目的frameworks\cocos2d-x\external\lua\下 新建一个文件夹luafilesystem(名字自定义) 把lfs.c和lfs.h拷贝进去
然后VS打开frameworks\runtime-src\proj.win32\xxx.sln 在libluacocos2dx里面右键 1.新建筛选器 2.导入现有项目把lfs.c和lfs.h导入
3.上面完成后打开frameworks\cocos2d-x\cocos\scripting\lua-bindings\manual\network\lua_extensions.c
文件添加引入lfs库代码
一个是#include "luafilesystem/lfs.h" 和 {"lfs", luaopen_lfs} 16行代码"lfs"是在lua里面的全局变量 可以改成其它名字,就此完成C++方面 如果发布android的时候需要添加 frameworks\cocos2d-x\cocos\scripting\lua-bindings\proj.android\Android.mk文件的编译
好了 就此就可以使用VS 进行编译了~~~~
4.编译完成后 在lua里面使用方式为 require "lfs" lfs在C++里面压栈的时候是全局变量 所以在lua里面直接可以使用lfs.xxx()函数 但是有一点需要注意的是 如果你的cocos-lua版本带有 全局变量检测的话 就需要在 require "cocos.init"之前引入lfs库否则会报全局变量污染错误”USE " cc.exports.lfs = value " INSTEAD OF SET GLOBAL VARIABLE“ 我的是在最初就引入了 所以lua方面正常
纯手写 请鼓励给点鼓励啊 如有写的不好的地方请见谅~