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

时间: 2024-08-06 02:33:18

unity发布安卓lua路径不存在问题的相关文章

Unity发布安卓Splash Image适应手机、平板

问题描述: Unity发布安卓应用时,遇到只能添加一张SplashImage而需要适配手机及平板不同分辨率处理 解决方法: http://blog.csdn.net/aiyan1111111/article/details/51144617

Unity发布安卓无法读取StreamingAssets文件下数据库的问题

在移动端StreamingAssets下的文件是只读的,但大家可能跟我一样遇到了发布安卓以后放在StreamingAssets下的数据库文件一样读取不了, 但其实这个文件夹其实是可以读取到的,所以我们需要使用XML来读取文件,然后转存到persistentDataPath目录下,下面是代码: 1 public static class Config 2 { 3 public static string filepath = Application.persistentDataPath + "/T

Unity发布各平台路径

#if UNITY_EDITOR string filepath = Application.dataPath + "/StreamingAssets"; #elif UNITY_IPHONE string filepath = Application.dataPath +"/Raw"; #elif UNITY_ANDROID string filepath =Application.streamingAssetsPath; #endif 安卓获取文件时 需要通过W

unity发布安卓 截图保存到本地

using System.IO; //获取系统时间并命名相片名 System.DateTime now = System.DateTime.Now; string times = now.ToString (); times = times.Trim (); times = times.Replace ("/","-"); //文件名 string filename = "Screenshot"+times+".png"; /

unity发布安卓 手指控制物体缩放和旋转

直接帮到物体的身上就可以了 using UnityEngine; using System.Collections;using System.IO;public class hehe : MonoBehaviour{    private Touch oldTouch1;  //上次触摸点1(手指1)      private Touch oldTouch2;  //上次触摸点2(手指2) void Start()    { } void Update()    {        //没有触摸

历尽折腾,终于把Unity3D 的demo发布安卓啦(问题)

只要碰到两个比较蛋疼的问题: 1. Error generating final archive: Debug certificate expired on **** 从字面了解,是由于Debug证书过期所致. Android的应用程序必须经过开发者自己的自签名证书进行数字签名之后,才能安装到Android系统上.在开发调试阶段,默认情况下,ADT辅助工具帮我们对apk文件进行了签名,采用的是默认的Debug版本的签名文件. 安装之后,Android SDK会生成一个Debug签名证书,保存在d

在Unity中使用Lua脚本

前言:为什么要用Lua首先要说,所有编程语言里面,我最喜欢的还是C#,VisualStudio+C#,只能说太舒服了.所以说,为什么非要在unity里面用Lua呢?可能主要是闲的蛋疼.....另外还有一些次要原因:方便做功能的热更新:Lua语言的深度和广度都不大,易学易用,可以降低项目成本. C#与Lua互相调用的方案坦白来将,我并没有对现在C#与Lua互相调用的所有库进行一个仔细的调研,大概搜了一下,找到这样几个:slua:https://github.com/pangweiwei/sluaN

在Unity中使用Lua脚本:语言层和游戏逻辑粘合层处理

前言:为什么要用Lua 首先要说,所有编程语言里面,我最喜欢的还是C#,VisualStudio+C#,只能说太舒服了.所以说,为什么非要在Unity里面用Lua呢?可能主要是闲的蛋疼.....另外还有一些次要原因: 方便做功能的热更新: Lua语言的深度和广度都不大,易学易用,可以降低项目成本. C#与Lua互相调用的方案 坦白来将,我并没有对现在C#与Lua互相调用的所有库进行一个仔细的调研,大概搜了一下,找到这样几个: slua:https://github.com/pangweiwei/

unity接入安卓SDK,与安卓相互通信

.接SDK是个什么样的活计? SDK的工作流程: 1. 从unity端出发,向安卓发起一系列的请求(unity call android). 2. 安卓端收到unity端调用,然后在具体调用SDK的一系列接口(android内部调用) 3. SDK服务器处理之后得到结果,再返回给安卓(网络通信) 4. 安卓获得SDK结果,然后回调unity方法,将结果传回unity端(android call unity) 我们需要做的: 1. 在安卓端,将SDK集成进入 Android的 MainActivi