unity如何导入资源包在unity里导入外部资源包

推荐这篇日记的豆列
&&&&&&&&&&&&
&(2人关注)1312人阅读
Unity(26)
Unity读取内部、外部资源详解
unity读取资源大概分为两部分:一部分为内部资源,什么是内部资源,就是导入unity中的资源,我们称之为Asset,这部分资源unity有现成的管理方法。另外一部分是外部资源,没有导入unity,也不是打包的AssetBundle资源,比方说就是一个txt、png、lua等资源,需要自己去实现读取以及资源的管理。下面具体介绍:
先说下个平台路径问题:
Application.dataPath :
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data
Application.streamingAssetsPath : Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw
Application.persistentDataPath :
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
Application.temporaryCachePath : Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Library/Caches
dataPath是app程序包安装路径,app本身就在这里,此目录是只读的。streamingAssetsPath是dataPath下的Raw目录。
app的独立数据存储目录下有三个文件夹:Documents,Library和tmp。
Documents目录,存储需要长期保存的数据,如热更新内容,iCloud会自动备份此目录。
Library目录,这个目录下有两个子目录,Caches和Preferences。
Caches是一个相对临时的目录,适合存放下载缓存的临时文件,空间不足时可能会被系统清除,Application.temporaryCachePath返回的就是此路径。我把热更新
的临时文件写在这里,等一个版本的所有内容更新完全后,再把内容转移到Documents目录。
Preferences用于应用存储偏好设置,用NSUserDefaults读取或设置。
tmp目录,临时目录,存放应用运行时临时使用的数据。
Application.dataPath :
/data/app/xxx.xxx.xxx.apk
Application.streamingAssetsPath :
jar:file:///data/app/xxx.xxx.xxx.apk/!/assets
Application.persistentDataPath :
/data/data/xxx.xxx.xxx/files
Application.temporaryCachePath :
/data/data/xxx.xxx.xxx/cache
Android这几个路径读取权限和IOS一样,需要注意的就是Application.streamingAssetsPath目录是jar包协议,在unity中需要用www去加载文件,其他的路径可以直接用文件流去读取。
这个就不说了。。。通用的。。。
关于资源的释放问题,已经有小伙伴详细的解答了,就不啰嗦了,点传送门。
再来说说外部资源,外部资源需要遵循ftp 、jar、http、https等协议,具体的拼接需要注意多一个或者少一个“/”的问题,然后用www去加载就行。读取外部资源大部分用到pc上,android、ios等还是扔到persistentDataPath 路径里。具体例子如下:
public Texture2D LoadTexture2D(string path)
string dataPath = "file:///" +
WWW www = new WWW(dataPath);
while (!www.isDone)
if (www.error != null)
return null;
Texture2D texture = new Texture2D(4, 4, TextureFormat.ARGB32, false);
texture.LoadImage(www.bytes);
texture.wrapMode = TextureWrapMode.C
www.Dispose();
需要注意的就是释放资源,直接用GameObject.DestroyImmediate(texture)或者GameObject.Destroy(texture),这样才能卸载掉内存,外部资源不是一个Asset,unity不会去帮你管理的,这时需要注意内存泄漏问题。
个人实践,如有错误欢迎留言交流。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:46954次
积分:1099
积分:1099
排名:千里之外
原创:63篇
评论:20条
(1)(2)(1)(4)(8)(28)(21)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'Unity工程 打包到Android平台文件读取路径 - 简书
Unity工程 打包到Android平台文件读取路径
当我们在Unity中开发了一个应用 然后想把他打包到android平台下,这时如果你的应用没有读取什么本地文件,一般来说是没有什么问题的,但是如果有本地xml或Json文件的读取,这时没有做路径的处理,那么打包后的apk就会出现问题,下来住要是分享如何处理android路径。
1. 第一种 路径加载文件Resources,当你在Unity工程的Asset路径下创建一个Resources文件夹,然后将一些资源文件放到该文件夹下,那么可以用脚本来直接加载Resources文件夹下的资源。
Resources.Load("文件名字,注:不包括文件后缀名");这样Load方法需要传入一个string类型的参数,然后返回Resources文件夹下的对应物体的GameObject对象。要注意的是用这种方法可以在PC端和Android加载资源,但是不能修改其中的资源,也就是说只可以读不可以写。所以一般都放一些预设体,当从PC端打包到android端的时候,这个文件夹中的资源会把没有用的东西都自己舍去只留下项目中真正使用的部分,相当于做了一定的优化。
2.第二种 直接放在项目根路径下来保存文件,把XML文件直接创建到Asset或者Asset目录下的其他文件夹中,在PC平台中可以使用Application.dataPath+路径 直接方法对应文件,但是在移动平台这样是不能访问的。Application.dataPath返回的其实就是Asset的根目录。
3.第三种 在Asset目录下创建StreamingAssets文件夹,这个文件夹中存放的资源在PC端可以实现可读可写操作,但是在移动端只能只能读,不能写,当我们通关后想把一些信息存起来是不可以的。
string filepath = Application.dataPath +"/StreamingAssets"+"/my.xml";
4.第四种persistentDataPath 该路径下的文件是存放在手机沙盒当中的,在手机端是可读可写的,当我们想要用一个文件来存放每关的信息时,这个方式是可以的,但是由于这个文件我们无法再开发中直接创建,所以在项目的文件数据管理模块中,应用代码来生成这个文件比如说XML、Json这样生成的文件可以在移动端自由读写。
菜鸟一名 希望路过的大神多指教
一个Unity独立开发者23:28 提问
Unity官方标准资源包导入
unity导入官方资源包后出现 all compiler errors have to be fixed
版本是5.4.1,这种情况怎么解决呀,总不能把Script都删了吧,自带的第一人称角色控制器,求解决谢谢~~~
按赞数排序
这种问题是导入之后脚本出错了,你看下console面板里有没有红色叹号,然后点击它,就会在你资产面板里找到你那个脚本,删除就可以了,但是可能会出现你游戏内某个物体没有用!
其他相关推荐

我要回帖

更多关于 unity 导入资源 的文章

 

随机推荐