Unity和Lua交互
用lua就表示项目用到了热更新,通常每次热更新都会从服务器获取最新的lua脚本放到Android/ios设备的本地目录下,但是lua应该放到哪个目录下呢,这里就先说说lua里面的路径问题
1、不可以放到Resources文件夹下,因为无法找到其在设备下的位置,Resources下的东西是由unity来管理的,使用的时候通过Resources.load/loadAll来加载,而且后缀为lua的文件,无法通过Resources来加载
2、不可以放到StreamingAssets文件夹,因为在设备下StreamingAssets文件夹里面的资源只能读,不能写,当我们热更新最新的资源的时候,是不好操作的!而且StreamingAssets文件夹下的东西最终在生成apk的时候会被unity打包进一个叫pkg.apk的apk安装包里,解压这个pkg.apk可以看到StreamingAssets文件夹下的资源,pkg.apk是存在于应用的安装目录下的,是应用的资源文件,unity中设置应用的安装目录是由设置PlayerSettings下的Install Location来设置的,Install Location设置为Perfer External(优先安装到外部设备,也就是sdcard),安装此包,用文件查看器查看才能看到此应用的安装目录(通常在/mnt/asec目录下),但是没有sdcard的手机貌似即使选项设置为了Perfer External也是看不到此应用的相关安装目录的,通常如下:

com.zwh.p1是我的包名,安装目录的名称通常是(应用的包名-数字),此安装目录默认是不能删除的,如果通过第三方软件强制删除,那么相对应的应用就会再也用不起来了(应用的数据文件被破坏),
如果程序就是安装到外部,那么都是能看到他的安装目录的,其他应用也是如此:

如果Install Location设置为Force Internal(强制安装到手机内存),那么是看不到程序的安装文件的!
如何访问StreamingAssets文件下的资源:
string GetStreamingAssetsPath()
{
return
#if UNITY_ANDROID
//"jar:file://" + Application.dataPath + "!/assets/";
UnityEngine.Application.streamingAssetsPath+"/";
#elif UNITY_IPHONE
Application.dataPath + "/Raw/";
#elif UNITY_STANDALONE_WIN || UNITY_EDITOR
"file://" + Application.dataPath + "/StreamingAssets/";
#else
string.Empty;
#endif
}
WWW www=new WWW("file://c:/a1.lua");
//使用上面的方式加载c盘的lua文件时,是加载不出来的
WWW www=new WWW("file:///c:/a1.lua");
//加个斜杆/ 即可!
当我把一个lua文件放到unity下StreamingAssets文件夹里,然后通过如上代码去访问这个lua文件,打印访问的路径如下:
路径 = jar:file:///mnt/asec/com.zwh.p1-1/pkg.apk!/assets/mi.lua
由此可见,StreamingAssets文件夹下的资源被打包进了pkg.apk这个安装包里去了!
3、先看看unity中几个路径有关的类,在android平台输出的路径为什么
Debug.Log ("temporaryCachePath = " + UnityEngine.Application.temporaryCachePath); //temporaryCachePath = /storage/sdcard0/Android/data/com.zwh.p1/cache
Debug.Log ("dataPath = " + UnityEngine.Application.dataPath); //dataPath = /mnt/asec/com.zwh.p1-2/pkg.apk
Debug.Log ("persistentDataPath = " + UnityEngine.Application.persistentDataPath); //persistentDataPath = /storage/sdcard0/Android/data/com.zwh.p1/files
Debug.Log ("streamingAssetsPath = " + UnityEngine.Application.streamingAssetsPath); //streamingAssetsPath = jar:file:///mnt/asec/com.zwh.p1-2/pkg.apk!/assets
可以看出dataPath和streamingAssetsPath指的是程序安装的位置,而temporaryCachePath和persistentDataPath指的则是sdcard的位置,所以可以选择这两个路径作为存放lua文件的地方,
前提是unity出包的时候,要设置Playersettings下Write Access为External(SDCard),不然这两个路径的位置是不一样的!
Unity和Lua交互的更多相关文章
- 整理Lua和Unity和Lua交互文章链接
重点文章: 1.[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上) 2.[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(中) 3.Lua和C++交互详细总结 4. ...
- tolua#是Unity静态绑定lua的一个解决方案
tolua#代码简要分析 2017-04-16 23:02 by 风恋残雪, 98 阅读, 1 评论, 收藏, 编辑 简介 tolua#是Unity静态绑定lua的一个解决方案,它通过C#提供的反射信 ...
- C++与Lua交互(四)
引言 通过前几篇,我们已经对Lua的C API有了一定的了解,如lua_push*.lua_is*.lua_to*等等.用C++调用Lua数据时,我们主要运用lua_getglobal与lua_pus ...
- C++与Lua交互(一)
引言 之前做手游项目时,客户端用lua做脚本,基本所有游戏逻辑都用它完成,玩起来有点不爽,感觉"太重"了.而我又比较偏服务端这边(仅有C++),所以热情不高.最近,加入了一个端游项 ...
- Unity与IOS交互
Unity IOS交互 @By 广州小龙 QQ群:63438968 环境:Mac os 10.9.2 Unity 4.2.1f4 Xcode 5.0.2 Unity IOS的交互我写过一个教程 ...
- [Unity3D]Unity3D游戏开发之Unity与Android交互调用研究
各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...
- Unity与Android交互-Unity接入高德地图实现定位以及搜索周边的功能(使用Android Studio)详细操作
刚进公司给安排的任务就是Unity接入高德地图,算是踩了不少坑总算做出来了,抽点时间写个博客记录一下 废话不多说 先上效果图 获取定位并根据手机朝向显示周边信息 使用的Unity ...
- C++与Lua交互之配置&交互原理&示例
|Lua 简介 Lua 是一种轻量小巧的脚本语言,也是号称性能最高的脚本语言,它用C语言编写并以源代码形式开放. 某些程序常常需要修改内容,而修改的内容不仅仅是数据,更要修改很多函数的行为. 而修改函 ...
- Unity与服务区交互数据
Unity与服务区交互数据 Unity可能在用的时候使用到登陆等需要与服务器交互数据.今天尝试使用了WWW类和WWWForm类来实现Get请求与Post请求. 1.WWW Unity圣典解释: WWW ...
随机推荐
- Ajax实现异步操作实例_针对JSON格式的请求数据
最近写了一篇ajax异步操作XML格式的,今天就写关于json格式的. 一.简单了解Json 1. JSON有两种表示结构,对象和数组. 1.1 对象: { key1:value1, key2:val ...
- 用java语言编写的简单二叉树
package com.cjonline.foundation.evisa; public class TestTree { private int data=-1; private TestTree ...
- focal loss for dense object detection
温故知新 focal loss for dense object detection,知乎上一人的评论很经典.hard negative sampling, 就是只挑出来男神(还是最难追的),而foc ...
- Object Detection with Discriminatively Trained Part Based Models
P. Felzenszwalb, R. Girshick, D. McAllester, D. RamananObject Detection with Discriminatively Traine ...
- JDBC连接数据库时错误提示的解决方案汇总
今天在连接JDBC时,出现了错误 最开始的URL是这样写的 Connection conn = DriverManager.getConnection("jdbc:mysql://local ...
- ZooKeeper下载安装(Windows版本)
进入Apache ZooKeeper官方网站进行下载,https://zookeeper.apache.org/releases.html 这里我们选择zookeeper-3.4.12版本进行下载 百 ...
- Oracle 数据导出注意事项
1.数据导出exp.expbd和imp.impbd 区别: exp,imp:既可以在客户端执行也可以在服务端执行,效率慢于expbd.impbd expbd.impbd:只能够在服务端执行,impbd ...
- Oracle树形结构数据---常见处理情景
Oracle树形结构数据---常见处理情景 1.查看表数据结构 SELECT * FROM QIANCODE.TREE_HIS_TABLE T ORDER BY T.NODE_LEVEL; ...
- js一键勾选所有的checkbox
//一键勾选全部的checkbox function checkAll(){ var obj = document.getElementById("all"); var arr = ...
- Struts2前期(这框架目前正处于淘汰状态)
Struts2第一天 Struts2的学习路线 1. Struts2的入门:主要是学习Struts2的开发流程(Struts2的开发流程.常见的配置.Action类的编写) 2. Struts2的Se ...