unity发布安卓lua路径不存在问题

项目用的是xlua 采用自定义加载方式

使用File去读取路径下的文件,lua文件本来放在了StreamingAssets路径下

PC运行无问题,发布安卓后,居然提示路径不存在。

查了下资料后发现,File的这种操作方式无法在安卓平台去读取StreamingAssets路径下的文件,见鬼

这个路径只能用来AssetBundle.LoadFromFile来进行操作

资料参考:http://www.xuanyusong.com/archives/4033

 

如果真的想用File这种方式来读取的话,那么就不要把文件放在StreamingAssets路径下了

只能把lua放在Application.persistentDataPath; 这个路径下,我还是手动拷贝到安卓上的,确实可以做到再安卓上可以看见这个文件

(我在模拟器上面找到了这个路径,在小米手机上居然没有找到这个路径 = = )

这种可以制作手机上的自定义脚本游戏,感觉不错。

 

后来的解决方案是,把lua加上txt后缀,然后ab打包放在StreamingAssets路径下,就可以用AssetBundle.LoadFromFile来进行操作了

 

【代码】

1 void RequireLua(string name) {
2   TextAsset luaCode = bundle.Load(name, typeof(TextAsset)) as TextAsset;
3   lua.DoString(luaCode.text);
4 }

感觉不错,比我的要方便,之前用的大奥的那个lua框架,不是很好用,关键是没理解他的那种写法,那么我可以去借鉴上面代码的写法

 

 

其他参考资料

unity 在移动平台中,文件操作路径详解:http://blog.csdn.net/huang9012/article/details/44308743

Unity中的Path对应各平台中的Path :http://www.manew.com/forum.php?mod=viewthread&tid=21404&extra=page%3D1%26filter%3Dtypeid%26typeid%3D143

优秀程序员的博客有哪些?:https://www.zhihu.com/question/19934502

【可能会用到的再度优化】保留.lua后缀名,将lua文件打包成assetbundle:http://blog.csdn.net/musicseli/article/details/46415075

【检测更新,AB加密】Unity手游之路<十二>手游资源热更新策略探讨:http://blog.csdn.net/janeky/article/details/17666409

Unity资源处理机制(Assets/WWW/AssetBundle/...)读取和加载资源方式详解】:http://blog.csdn.net/swj524152416/article/details/54022282

 

 

============================================================================10月9日更新=========================================================================================

把lua打包成assetbundle,此时注意后缀为lua还无法打包

xlua写成 .lua.txt才可以打包

不过写成了这样后,lua脚本中的require关键字里面引用的路径在ab中就没啥用了,此时让lua去调用c#中的自定义加载lua方法来加载lua,以此达到require的目的

值得注意的是,之前我的代码里面写的是一当require的话会自动调用其构造函数,这个是不允许的,需要改下,让其不去调用构造函数

posted @ 2017-09-30 16:16  三页菌  阅读(726)  评论(0编辑  收藏  举报