下载某资源文件并加载其中的所有Prefab到场景中
using System.Collections;
using System.Collections.Generic;
using UnityEngine; /// <summary>
/// LoadAssets打开某资源文件并加载其中的所有Prefab到场景中
/// </summary>
public class LoadAssets : MonoBehaviour
{
[HideInInspector]
public string address;//资源所在文件夹路径
public string fileToLoad;//资源文件名
private string manifestAssetBundleName;//Manifest文件,一般与所在文件夹名称相同
private AssetBundleManifest manifest;
private List<AssetBundle> assetBundles = new List<AssetBundle>(); private void Awake()
{
if(address.Equals(""))
return;
//Manifest文件的名称与生成的AssetBundle所在的文件夹同名
string[] ss = address.Split('/');
manifestAssetBundleName = ss[ss.Length - ];
LoadManifest(address + manifestAssetBundleName);
LoadDepend(fileToLoad); }
void OnGUI()
{
if (address.Equals(""))
return;
//第1步:读取Manifest
if (GUILayout.Button("地图加载(选择map.unity3d)"))
{
StartCoroutine(LoadObj(address, fileToLoad));
Caching.CleanCache();
}
}
//同步下载并读取Manifest文件
public void LoadManifest(string mainfestpath)
{
//Debug.Log("LoadManifest:"+mainfestpath);
AssetBundle manifestBundle = AssetBundle.LoadFromFile(mainfestpath);
if (manifestBundle != null)
{
manifest = (AssetBundleManifest)manifestBundle.LoadAsset("AssetBundleManifest");
}
}
//获取资源所依赖的资源并下载
void LoadDepend(string assetName)
{
string[] dps = manifest.GetAllDependencies(assetName);
for (int i = ; i < dps.Length; i++)
{
StartCoroutine(LoadAsset(address, dps[i]));
}
}
//下载资源
IEnumerator LoadAsset(string url, string fileName)
{
//Debug.Log("LoadAsset:" + url+" "+fileName);
WWW www = WWW.LoadFromCacheOrDownload("file://" + url + fileName, manifest.GetAssetBundleHash(fileName));
yield return www;
assetBundles.Add(www.assetBundle);
www.Dispose();
}
//下载并实例化游戏对象
IEnumerator LoadObj(string url, string fileName)
{
//Debug.Log("LoadOBJ:" + url + " " + fileName); WWW www = WWW.LoadFromCacheOrDownload("file://" + url + fileName, manifest.GetAssetBundleHash(fileName));
yield return www;
string[] AssetsNames = www.assetBundle.GetAllAssetNames();
foreach (string m in AssetsNames)
{
GameObject prefab = www.assetBundle.LoadAsset(m) as GameObject;
GameObject obj = GameObject.Instantiate(prefab);
} assetBundles.Add(www.assetBundle);
www.Dispose();
UnloadUnuseAssetBundle();
}
//清理未使用资源所占用的内存
void UnloadUnuseAssetBundle()
{
foreach (var item in assetBundles)
{
item.Unload(false);
}
}
}
下载某资源文件并加载其中的所有Prefab到场景中的更多相关文章
- HTML页面处理以及资源文件的加载
Javascript 异步加载详解 这篇文章很详细的介绍了HTML的页面处理以及资源文件的加载. 本文总结一下浏览器在 javascript 的加载方式. 关键词:异步加载(async loading ...
- 白鹭引擎 - 资源文件的加载 ( RES, loadConfig, loadGroup )
class Main extends egret.DisplayObjectContainer { public constructor() { super(); this.addEventListe ...
- Web资源文件的加载
一.关于页面跳转的一下几种方法: package com.gqx.load; import java.io.IOException; import java.io.PrintWriter; impor ...
- 背水一战 Windows 10 (11) - 资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件
[源码下载] 背水一战 Windows 10 (11) - 资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件 作者 ...
- UNITY_资源路径与加载外部文件
UNITY_资源路径与加载外部文件 https://www.tuicool.com/articles/qMNnmm6https://blog.csdn.net/appppppen/article/de ...
- 【Cocos2d-Js基础教学(5)资源打包工具的使用及资源的异步加载处理】
TexturePacker是纹理资源打包工具,支持Cocos2dx的游戏资源打包. 如果用过的同学可以直接看下面的资源的异步加载处理 首先为什么用TexturePacker? 1,节省图片资源实际大小 ...
- Unity3d Web3d资源的动态加载
Unity3d Web3d资源的动态加载 @灰太龙 参考了宣雨松的博客,原文出处http://www.xuanyusong.com/archives/2405,如果涉及到侵权,请通知我! Unity3 ...
- js文件 与 css文件 异步加载
使用lazyload 异步加载css js 文件. 提升页面初始化的速度,减少卡顿时间 , 下面是 使用方法 与 lazyload.js 源码 (中文注释) 调用方法后. 会追加到 head 标签末尾 ...
- 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间
[源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...
随机推荐
- PHP下载/采集远程图片到本地
/** * 下载远程图片到本地 * * @param string $url 远程文件地址 * @param string $filenNme 保存后的文件名(为空时则为随机生成的文件名,否则为原文件 ...
- ini配置文件在LINUX下面程序打不开?
ini配置文件在LINUX下面程序打不开? 在WINDOWS里面编辑的INI配置文件保存时默认是ANSI字符编码,LINUX可能不识别,导致LINUX程序不能打开INI配置文件,成功读取里面的参数. ...
- javascript 对象属性的添加,删除,json对象和字符串转换方法等
1:动态添加 对象属性 var obj = new Object(); console.log (obj.username); obj.username = "haha"; con ...
- ubuntu 安装 regex模块时 fatal error: Python.h: No such file or directory
原因是 python-dev包没有安装 根据Py2还是py3 sudo apt-get install python-dev 或者 sudo apt-get install python3-dev 安 ...
- 3、列表 list
列表 >>> list=['aaa','bbb','ccc'] >>> print list ['aaa', 'bbb', 'ccc'] >>> ...
- Solr 6.6.0 ERROR: Port 8983 is already being used by another process.
在目录D:\work\Solr\solr-6.6.0\bin下打开命令框: 输入:solr -e dih报错:ERROR: Port 8983 is already being used by ano ...
- 数据库中存在0,1,2.....或者1,null,2 排序时让0或者null在最后的sql语句
select * from yryz_products_t order by isnull(sort),sort; select * from yourtable order by cast ...
- 原来,多年以来,我一直是个curl/CRUD程序员
curl,就是create,update,remove,list的首字母简写.说是CRUD似乎更流行些,不过无所谓,知道是一个意思就好. curl程序员,就是增改删查程序员,中文说增删改查更加顺口. ...
- Win7 Visual Studio 2008如何注册
默认是90天试用 在控制面板中卸载程序,然后找到VS2008,点击卸载/更改 到这一步就不要动了 去下载并运行CrackVS2008ForWindows7,然后点击右上角的Bug微软,弹出 ...
- Mysql性能测试诊断
mysql> showglobal status; 可以列出mysql服务器运行各种状态值,另外,查询mysql服务器配置信息语句: mysql> showvariables; 一.慢查询 ...