Unity中lua 的 io.open() 文件路径的问题

Unity中lua 的 io.open() 文件路径的问题,第1张

lua 中读写文件一般都是用 io库中的方法,但是有很多资料对文件相对路径的问题都讲的不太清楚,经过我的测试得到以下结论。

在 io *** 作中有两种路径的写法:绝对路径和相对路径

绝对路径:说的是在运行环境的完整路径,例如 D:\Test.txt , 调用io.open(“D:\Test.txt”)

相对路径:指的是在项目根目录下的路径,

例如:我的项目是unityObject,那我在 io 库的默认路径就是项目根目录 unityObject\ ,如果不指定路径的话(就是文件在根目录下)调用 io.open(“text.txt”),这种方式就是lua会从项目工程的根目录下查找指定文件名的文件。

但是,在实际开发过程中不同的 开发环境或发布平台 在最终发布的时候有些文件夹是不会打包到安装包的,所以,这时候就要指定到一个合适的文件夹中,例如在unity中Streaming Assets文件夹打包时候资源不压缩不加密。可以把一些简单不重要的文件放在这里,这时候就要指定相对路径了,例如: io.open(“Assets/StreamingAssets/text.txt”)这样lua就会从根目录开始按照指定的路径查找文件。

最后还有一点

windows下路径分割必须用两个斜线,这是因为 \是转移序列。\n表示换行 \表示\本身 。\t表示制表符

io.open也可以使用 /做路径分割符号。

Lua require可以加载一个 lua文件进来 搜索路径默认是 lua的安装目录

可以打印package.path查看用那些搜索路径也可以 添加自己的路径

following code

如果在Windows下(??Linux行不行不知道)\x0d\x0aobj=io.popen("cd") --如果不在交互模式下,前面可以添加local \x0d\x0apath=obj:read("*all"):sub(1,-2)--path存放当前路径\x0d\x0aobj:close() --关掉句柄\x0d\x0a上述原理是利用Windows的cd命令返回工作目录;至于sub(1,-2)是为了去掉换行符\x0d\x0a当然如果你有lua socks或者你有lfs(注意匹配你的Lua版本),你可以使用lfs(Lua File System)\x0d\x0arequire("lfs")\x0d\x0apath=lfs.currentdir()\x0d\x0a这个则是Lua文件系统库中的函数。\x0d\x0a??就是这样


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11905287.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存