Unity3D 游戏项目实例教程之资源加载管理器

资源加载管理器,顾名思义,就是负责加载资源的, Unity 中负责加载资源的是 WWW 类,根据 Flash 的游戏加载风格,我修改成了实用并且简单的类库!

我们先来看下最终结果的示例演示代码:

 
 
</pre><br />
我们需要事先说明的是:场景打包成 unity3d 后缀文件, 其他的打包成 assetbundle 后缀文件! 类库中所有文件如下:
WwwData.cs 文件

using UnityEngine;
using System.Collections;

/// <summary>
/// 加载完成资源存储结构
/// </summary>
public class WwwData
{
	/// <summary>
	/// 加载路径
	/// </summary>
	public string path;

	/// <summary>
	/// 加载类型枚举
	/// </summary>
	public WwwLoaderTypeEnum loaderTypeEnum;

	/// <summary>
	/// 加载完成之后的数据
	/// </summary>
	public WWW www;

	/// <summary>
	/// 构造函数
	/// </summary>
	/// <param name="path">Path.</param>
	/// <param name="loaderTypeEnum">Loader type enum.</param>
	/// <param name="www">Www.</param>
	/// <param name="loaderDestroyTypeEnum">Loader destroy type enum.</param>
	public WwwData(string path, WwwLoaderTypeEnum loaderTypeEnum, WWW www)
	{
		this.path = path;
		this.loaderTypeEnum = loaderTypeEnum;
		this.www = www;
	}
}
WwwDataManager.cs 文件

using UnityEngine;
using System.Collections.Generic;

/// <summary>
/// 资源管理器
/// </summary>
public class WwwDataManager
{
	public static readonly WwwDataManager instance = new WwwDataManager();

	/// <summary>
	/// 加载缓存数据
	/// </summary>
	private Dictionary<string, WwwData> dataList;

	/// <summary>
	/// 所有未被释放的引用
	/// </summary>
	private IList<AssetBundle> assetList;

	/// <summary>
	/// 数据总数
	/// </summary>
	/// <returns>The count.</returns>
	public int dataCount()
	{
		if (this.dataList == null) return 0;
		return this.dataList.Keys.Count;
	}

	/// <summary>
	/// 添加数据到缓存
	/// </summary>
	/// <param name="wwwData">Www data.</param>
	public void InsertData(WwwData wwwData)
	{
		if (wwwData == null) return;
		// 如果为空,要创建
		if (this.dataList == null) this.dataList = new Dictionary<string, WwwData> ();
		this.dataList.Add (wwwData.path, wwwData);
	}

	/// <summary>
	/// 移除数据对象
	/// </summary>
	/// <param name="path">Path.</param>
	public void RemoveData(string path, bool destroy = false)
	{
		if (this.dataList == null || !this.dataList.ContainsKey (path)) return;

		WwwData wwwData = this.dataList [path];
		if (wwwData != null) 
		{
			// 释放引用的资源
			if(wwwData.www.assetBundle != null)
			{
				wwwData.www.assetBundle.Unload(false);
			}
			wwwData.www.Dispose();
			wwwData.www = null;
		}
		this.dataList.Remove (path);

		if (destroy) this.Destroy ();
	}
	
	/// <summary>
	/// 卸载资源
	/// </summary>
	/// <param name="path">Path.</param>
	public void UnloadData(string path)
	{
		AssetBundle assetBundle = this.GetDataAssetBundle (path);
		if (assetBundle != null) assetBundle.Unload (false);
	}

	/// <summary>
	/// 清除对象
	/// </summary>
	public void Destroy()
	{
		Resources.UnloadUnusedAssets();
	}

	/// <summary>
	/// 获取字符串
	/// </summary>
	/// <returns>The data text.</returns>
	/// <param name="path">Path.</param>
	/// <param name="loaderTypeEnum">Loader type enum.</param>
	public string GetDataText(string path)
	{
		if (this.dataList == null || !this.dataList.ContainsKey(path)) return "";

		WwwData wwwData = this.dataList [path];
		if (wwwData != null) return wwwData.www.text;

		return "";
	}

	/// <summary>
	/// 获取声音
	/// </summary>
	/// <returns>The data audio clip.</returns>
	/// <param name="path">Path.</param>
	public AudioClip GetDataAudioClip(string path)
	{
		if (this.dataList == null || !this.dataList.ContainsKey(path)) return null;
		
		WwwData wwwData = this.dataList [path];
		if (wwwData != null) return wwwData.www.audioClip;
		
		return null;
	}

	/// <summary>
	/// 获取 AssetBundle 对象
	/// </summary>
	/// <returns>The data asset bundle.</returns>
	/// <param name="path">Path.</param>
	/// <param name="loaderTypeEnum">Loader type enum.</param>
	public AssetBundle GetDataAssetBundle(string path)
	{
		if (this.dataList == null || !this.dataList.ContainsKey(path)) return null;

		WwwData wwwData = this.dataList [path];
		if (wwwData != null) return wwwData.www.assetBundle;

		return null;
	}

	/// <summary>
	/// 获取 Texture2D 对象
	/// </summary>
	/// <returns>The data texture.</returns>
	/// <param name="path">Path.</param>
	/// <param name="loaderTypeEnum">Loader type enum.</param>
	public Texture2D GetDataTexture(string path)
	{
		if (this.dataList == null || !this.dataList.ContainsKey(path)) return null;

		WwwData wwwData = this.dataList [path];
		if (wwwData != null) return wwwData.www.texture;

		return null;
	}

	/// <summary>
	/// 加载 GameObject 预设引用
	/// </summary>
	/// <returns>The game object by prefab name.</returns>
	/// <param name="path">Path.</param>
	/// <param name="loaderTypeEnum">Loader type enum.</param>
	/// <param name="prefabName">Prefab name.</param>
	/// <param name="mainAsset">If set to <c>true</c> main asset.</param>
	public GameObject CreateGameObjectByPrefabName (string path, string prefabName, bool mainAsset = false, bool unload = true)
	{
		AssetBundle assetBundle = this.GetDataAssetBundle (path);
		if (assetBundle == null) return null;

		GameObject prefabObject = null;
		if (mainAsset) 
		{
			prefabObject = (GameObject)assetBundle.mainAsset;
		} else {
			prefabObject = (GameObject)assetBundle.Load (prefabName, typeof(GameObject));
		}

		// 用完立刻卸载
		if (unload)
		{
			assetBundle.Unload (false);
		} else
		{
			if(this.assetList == null) this.assetList = new List<AssetBundle>();
			if(!this.assetList.Contains(assetBundle)) this.assetList.Add(assetBundle);
		}

		return prefabObject;
	}

	/// <summary>
	/// 加载 Texture2D 预设引用
	/// </summary>
	/// <returns>The texture by prefab name.</returns>
	/// <param name="path">Path.</param>
	/// <param name="loaderTypeEnum">Loader type enum.</param>
	/// <param name="prefabName">Prefab name.</param>
	/// <param name="mainAsset">If set to <c>true</c> main asset.</param>
	public Texture2D CreateTextureByPrefabName (string path, string prefabName, bool mainAsset = false, bool unload = true)
	{
		AssetBundle assetBundle = this.GetDataAssetBundle (path);
		if (assetBundle == null) return null;
		
		Texture2D prefabTexture = null;
		if (mainAsset) 
		{
			prefabTexture = (Texture2D)assetBundle.mainAsset;
		} else {
			prefabTexture = (Texture2D)assetBundle.Load (prefabName);
		}
		// 用完立刻卸载
		if (unload)
		{
			assetBundle.Unload (false);
		} else
		{
			if(this.assetList == null) this.assetList = new List<AssetBundle>();
			if(!this.assetList.Contains(assetBundle)) this.assetList.Add(assetBundle);
		}
		
		return prefabTexture;
	}

	/// <summary>
	/// 判断是否存在数据
	/// </summary>
	/// <returns><c>true</c>, if data was existsed, <c>false</c> otherwise.</returns>
	/// <param name="path">Path.</param>
	public bool ExistsData(string path)
	{
		if (this.dataList == null) return false;

		return this.dataList.ContainsKey (path);
	}
}
WwwLoaderItem .cs 文件

using UnityEngine;
using System.Collections;

/// <summary>
/// 单个对象加载管理器
/// </summary>
public class WwwLoaderItem : MonoBehaviour
{
	// 加载进度
	public delegate void DelegateLoaderProgress(string path, float currentValue, float totalValue);
	// 加载完成
	public delegate void DelegateLoaderComplete(WWW data);
	// 加载出错
	public delegate void DelegateLoaderError (string errorText);

	// 加载进度
	public event DelegateLoaderProgress OnProgress;
	// 加载完成
	public event DelegateLoaderComplete OnComplete;
	// 加载出错
	public event DelegateLoaderError OnError;

	/// <summary>
	/// 加载状态
	/// </summary>
	private bool progressStatus = false;

	/// <summary>
	/// 加载对象
	/// </summary>
	private WWW www;

	/// <summary>
	/// 调用进度事件
	/// </summary>
	/// <param name="path">Path.</param>
	/// <param name="currentValue">Current value.</param>
	/// <param name="totalValue">Total value.</param>
	private void InvokeProgress(string path, float currentValue, float totalValue)
	{
		if (this.OnProgress != null) this.OnProgress (path, currentValue, totalValue);
	}
	/// <summary>
	/// 调用完成事件
	/// </summary>
	/// <param name="data">Data.</param>
	private void InvokeComplete(WWW data)
	{
		if (this.OnComplete != null) this.OnComplete (data);
	}
	/// <summary>
	/// 调用出错事件
	/// </summary>
	/// <param name="loaderEnum">Loader enum.</param>
	private void InvokeError(string errorText)
	{
		if (this.OnError != null) this.OnError (errorText);
	}

	/// <summary>
	/// 开始加载
	/// </summary>
	/// <param name="path">Path.</param>
	public void Loader(string path, WwwLoaderTypeEnum loaderTypeEnum, int version)
	{
		this.progressStatus = false;
		this.StartCoroutine (LoaderBegin(path, loaderTypeEnum, version));
	}

	/// <summary>
	/// 开始加载
	/// </summary>
	/// <returns>The begin.</returns>
	/// <param name="path">Path.</param>
	private IEnumerator LoaderBegin(string path, WwwLoaderTypeEnum loaderTypeEnum, int version)
	{
		// 说明,这儿只有 场景(默认是把场景打包成 Unity3D 后缀文件) 使用缓存池加载,因为不用缓存池加载方法,无法使用 Application.LoadLevel 加载场景
		// 可能是自己理解的不多,还是本来就应该是这样,这儿可以按照自己的处理方式进行调整
		if (loaderTypeEnum == WwwLoaderTypeEnum.UNITY_3D) 
		{
			this.www = WWW.LoadFromCacheOrDownload(path, version);
		} else {
			this.www = new WWW(path);
		}
		yield return this.www;

		if (!string.IsNullOrEmpty (this.www.error)) 
		{
			this.InvokeError (this.www.error);
		} 
		else 
		{
			if (this.www.isDone) 
			{
				this.InvokeComplete (this.www);
			} 
		}
		this.StopCoroutine (LoaderBegin(path, loaderTypeEnum, version));
	}

	/// <summary>
	/// 触发加载进度
	/// </summary>
	void Update()
	{
		if (this.www != null && !this.progressStatus) 
		{
			if(this.www.progress >= 1) this.progressStatus = true;
			this.InvokeProgress (this.www.url, this.www.progress, 1);
		}
	}
	
	/// <summary>
	/// 销毁对象
	/// </summary>
	public void UnLoader()
	{
		Destroy (this.gameObject);
	}
	
	/// <summary>
	/// 销毁自己
	/// </summary>
	public void UnLoaderThis()
	{
		Destroy (this);
	}
}
WwwLoaderManager.cs 文件

using UnityEngine;
using System.Collections.Generic;

/// <summary>
/// 资源加载管理器
/// </summary>
public class WwwLoaderManager
{
	public static readonly WwwLoaderManager instance = new WwwLoaderManager();

	// 加载进度
	public delegate void DelegateLoaderProgress(string path, float currentValue, float totalValue);
	// 加载完成
	public delegate void DelegateLoaderComplete ();
	
	/// <summary>
	/// 加载顺序列表
	/// </summary>
	private IList<WwwLoaderOrder> orderList;

	/// <summary>
	/// 当前加载对象
	/// </summary>
	private WwwLoaderObject wwwLoaderObject;

	/// <summary>
	/// 当前加载顺序对象
	/// </summary>
	private WwwLoaderOrder wwwLoaderOrder;

	/// <summary>
	/// 当前加载路径
	/// </summary>
	private WwwLoaderPath wwwLoaderPath;

	/// <summary>
	/// 当前加载状态
	/// </summary>
	private bool loaderStatus = false;

	/// <summary>
	/// 加载
	/// </summary>
	/// <param name="pathList">Path list.</param>
	/// <param name="loaderProgress">Loader progress.</param>
	/// <param name="loaderComplete">Loader complete.</param>
	/// <param name="moduleName">Module name.</param>
	public void Loader(IList<WwwLoaderPath> pathList, WwwLoaderManager.DelegateLoaderProgress loaderProgress, WwwLoaderManager.DelegateLoaderComplete loaderComplete, string moduleName)
	{
		if(this.orderList == null) this.orderList = new List<WwwLoaderOrder>();

		WwwLoaderOrder wwwLoaderOrder = this.GetWwwLoaderOrderByOrderName (moduleName);
		if (wwwLoaderOrder == null) 
		{
			wwwLoaderOrder = new WwwLoaderOrder (moduleName, pathList, loaderProgress, loaderComplete);
			this.orderList.Add (wwwLoaderOrder);
		} else {
			wwwLoaderOrder.AttachEvent(loaderProgress, loaderComplete);
		}

		if (this.orderList != null && this.orderList.Count > 0 && !this.loaderStatus) 
		{
			this.LoaderOrder ();
		}
	}

	/// <summary>
	/// 加载顺序
	/// </summary>
	private void LoaderOrder()
	{
		if (this.orderList.Count > 0) 
		{
			this.loaderStatus = true;
			this.wwwLoaderOrder = this.orderList [0];
			this.LoaderItem ();
		} else {
			this.loaderStatus = false;
		}
	}

	/// <summary>
	/// 加载对象
	/// </summary>
	private void LoaderItem()
	{
		if (this.wwwLoaderOrder != null && this.wwwLoaderOrder.pathList.Count > 0) 
		{
			this.wwwLoaderPath = this.wwwLoaderOrder.pathList[0];
			//检查是否在缓存对象中,是否已经加载过
			bool existsStatus = WwwDataManager.instance.ExistsData(this.wwwLoaderPath.path);
			if(!existsStatus)
			{
				if(this.wwwLoaderObject == null) this.wwwLoaderObject = new WwwLoaderObject();
				this.wwwLoaderObject.Loader(this.wwwLoaderPath.path, this.wwwLoaderPath.loaderTypeEnum, this.wwwLoaderPath.version, OnProgressHandler, OnCompleteHandler, OnErrorHandler);
			}else{
				this.LoaderOperater(false, null);
			}
		} else {
			if(this.wwwLoaderOrder != null)
			{
				if(this.wwwLoaderOrder.wwwLoaderOrderEvent != null) this.wwwLoaderOrder.wwwLoaderOrderEvent.InvokeLoaderComplete();
				this.orderList.Remove(this.wwwLoaderOrder);
			}
			this.LoaderOrder();
		}
	}

	/// <summary>
	/// 加载进度
	/// </summary>
	/// <param name="path">Path.</param>
	/// <param name="currentValue">Current value.</param>
	/// <param name="totalValue">Total value.</param>
	private void OnProgressHandler(string path, float currentValue, float totalValue)
	{
		if (this.wwwLoaderOrder != null && this.wwwLoaderOrder.wwwLoaderOrderEvent != null) this.wwwLoaderOrder.wwwLoaderOrderEvent.InvokeLoaderProgress(path, currentValue, totalValue);
	}

	/// <summary>
	/// 加载完成
	/// </summary>
	/// <param name="www">Www.</param>
	private void OnCompleteHandler(WWW www)
	{
		this.LoaderOperater (true, www);
	}

	/// <summary>
	/// 加载错误
	/// </summary>
	/// <param name="errorText">Error text.</param>
	private void OnErrorHandler(string errorText)
	{
		this.LoaderOperater (false, null);
	}

	/// <summary>
	/// 加载数据操作
	/// </summary>
	/// <param name="operaterType">If set to <c>true</c> operater type.</param>
	/// <param name="www">Www.</param>
	private void LoaderOperater(bool operaterType, WWW www)
	{
		if (this.wwwLoaderOrder == null || this.wwwLoaderPath == null) return;

		if (operaterType) 
		{
			if(this.wwwLoaderPath.loaderTypeEnum != WwwLoaderTypeEnum.UNITY_3D)
			{
				WwwData wwwData = new WwwData (this.wwwLoaderPath.path, this.wwwLoaderPath.loaderTypeEnum, www);
				WwwDataManager.instance.InsertData(wwwData);
			}
		}
		this.wwwLoaderOrder.pathList.Remove (this.wwwLoaderPath);

		if (this.wwwLoaderObject != null) this.wwwLoaderObject.UnLoader (false);
		
		this.LoaderItem ();
	}

	/// <summary>
	/// 根据序列名称检索加载序列
	/// </summary>
	/// <returns>The www loader order by order name.</returns>
	/// <param name="orderName">Order name.</param>
	private WwwLoaderOrder GetWwwLoaderOrderByOrderName(string orderName)
	{
		if (this.orderList == null || this.orderList.Count == 0) return null;
		
		foreach (WwwLoaderOrder wwwLoaderOrder in this.orderList) 
		{
			if(wwwLoaderOrder.orderName == orderName) return wwwLoaderOrder;
		}
		return null;
	}
}
WwwLoaderObject.cs 文件

扫描二维码关注公众号,回复: 3793738 查看本文章

using UnityEngine;
using System.Collections;

/// <summary>
/// 单个对象加载器,可单独使用加载资源
/// 可以使用这个类一个一个的加载资源
/// </summary>
public class WwwLoaderObject
{
	/// <summary>
	/// 空对象
	/// </summary>
	private GameObject gameObject;

	/// <summary>
	/// 加载脚本
	/// </summary>
	private WwwLoaderItem wwwLoaderItem;

	/// <summary>
	/// 加载进度
	/// </summary>
	private WwwLoaderItem.DelegateLoaderProgress loaderProgress;

	/// <summary>
	/// 加载完成
	/// </summary>
	private WwwLoaderItem.DelegateLoaderComplete loaderComplete;

	/// <summary>
	/// 加载错误
	/// </summary>
	private WwwLoaderItem.DelegateLoaderError loaderError;

	/// <summary>
	/// 开始加载
	/// </summary>
	/// <param name="path">Path.</param>
	/// <param name="loaderTypeEnum">Loader type enum.</param>
	/// <param name="version">Version.</param>
	/// <param name="loaderProgress">Loader progress.</param>
	/// <param name="loaderComplete">Loader complete.</param>
	/// <param name="loaderError">Loader error.</param>
	public void Loader(string path, WwwLoaderTypeEnum loaderTypeEnum, int version, WwwLoaderItem.DelegateLoaderProgress loaderProgress, WwwLoaderItem.DelegateLoaderComplete loaderComplete, WwwLoaderItem.DelegateLoaderError loaderError)
	{
		this.loaderProgress = loaderProgress;
		this.loaderComplete = loaderComplete;
		this.loaderError = loaderError;

		if (this.gameObject == null) 
		{
			this.gameObject = new GameObject ();
			this.gameObject.name = "ResourceLoaderManager";
		}
		this.wwwLoaderItem = this.gameObject.AddComponent<WwwLoaderItem> ();

		if(this.wwwLoaderItem == null) return;
		
		this.wwwLoaderItem.OnProgress += this.loaderProgress;
		this.wwwLoaderItem.OnError += this.loaderError;
		this.wwwLoaderItem.OnComplete += this.loaderComplete;

		this.wwwLoaderItem.Loader (path, loaderTypeEnum, version);
	}

	/// <summary>
	/// 销毁对象
	/// </summary>
	public void UnLoader(bool destory = true)
	{
		if(this.wwwLoaderItem == null) return;
		
		this.wwwLoaderItem.OnProgress -= this.loaderProgress;
		this.wwwLoaderItem.OnError -= this.loaderError;
		this.wwwLoaderItem.OnComplete -= this.loaderComplete;
		// 销毁自己
		this.wwwLoaderItem.UnLoaderThis ();
		// 销毁对象
		if (destory) this.wwwLoaderItem.UnLoader ();
	}
}
WwwLoaderOrder.cs 文件

using UnityEngine;
using System.Collections.Generic;

/// <summary>
/// 顺序加载管理器
/// </summary>
public class WwwLoaderOrder
{
	/// <summary>
	/// 队列名称
	/// </summary>
	public string orderName;

	/// <summary>
	/// 路径列表
	/// </summary>
	public IList<WwwLoaderPath> pathList;

	/// <summary>
	/// 队列事件
	/// </summary>
	public WwwLoaderOrderEvent wwwLoaderOrderEvent;

	/// <summary>
	/// 构造函数
	/// </summary>
	/// <param name="orderName">Order name.</param>
	/// <param name="pathList">Path list.</param>
	/// <param name="loaderProgress">Loader progress.</param>
	/// <param name="loaderComplete">Loader complete.</param>
	public WwwLoaderOrder(string orderName, IList<WwwLoaderPath> pathList, WwwLoaderManager.DelegateLoaderProgress loaderProgress, WwwLoaderManager.DelegateLoaderComplete loaderComplete)
	{
		this.orderName = orderName;
		this.pathList = pathList;

		this.AttachEvent (loaderProgress, loaderComplete);
	}

	/// <summary>
	/// 附加事件
	/// </summary>
	/// <param name="loaderProgress">Loader progress.</param>
	/// <param name="loaderComplete">Loader complete.</param>
	public void AttachEvent(WwwLoaderManager.DelegateLoaderProgress loaderProgress, WwwLoaderManager.DelegateLoaderComplete loaderComplete)
	{
		if (this.wwwLoaderOrderEvent == null) 
		{
			this.wwwLoaderOrderEvent = new WwwLoaderOrderEvent();
		}
		
		if(loaderProgress != null) this.wwwLoaderOrderEvent.OnLoaderProgress += loaderProgress;
		if(loaderComplete != null) this.wwwLoaderOrderEvent.OnLoaderComplete += loaderComplete;
	}
	
	/// <summary>
	/// 移除事件
	/// </summary>
	/// <param name="loaderProgress">Loader progress.</param>
	/// <param name="loaderComplete">Loader complete.</param>
	public void RemoveEvent(WwwLoaderManager.DelegateLoaderProgress loaderProgress, WwwLoaderManager.DelegateLoaderComplete loaderComplete)
	{
		if (this.wwwLoaderOrderEvent == null) return;
		
		if(loaderProgress != null) this.wwwLoaderOrderEvent.OnLoaderProgress -= loaderProgress;
		if(loaderComplete != null) this.wwwLoaderOrderEvent.OnLoaderComplete -= loaderComplete;
	}
}
WwwLoaderOrderEvent.cs 文件

using UnityEngine;
using System.Collections;

/// <summary>
/// 顺序加载管理器事件
/// </summary>
public class WwwLoaderOrderEvent
{
	// 加载进度委托
	public WwwLoaderManager.DelegateLoaderProgress OnLoaderProgress;
	// 加载完成委托
	public WwwLoaderManager.DelegateLoaderComplete OnLoaderComplete;

	/// <summary>
	/// 触发进度委托函数
	/// </summary>
	/// <param name="path">Path.</param>
	/// <param name="currentValue">Current value.</param>
	/// <param name="totalValue">Total value.</param>
	public void InvokeLoaderProgress(string path, float currentValue, float totalValue)
	{
		if (this.OnLoaderProgress != null) this.OnLoaderProgress (path, currentValue, totalValue);
	}

	/// <summary>
	/// 触发完成委托函数
	/// </summary>
	public void InvokeLoaderComplete()
	{
		if (this.OnLoaderComplete != null) this.OnLoaderComplete ();
	}
}
WwwLoaderPath.cs 文件

using UnityEngine;
using System.Collections;

/// <summary>
/// 加载路径结构
/// </summary>
public class WwwLoaderPath
{
	/// <summary>
	/// 加载路径
	/// </summary>
	public string path;

	/// <summary>
	/// 资源版本号
	/// </summary>
	public int version;

	/// <summary>
	/// 资源类别
	/// </summary>
	public WwwLoaderTypeEnum loaderTypeEnum;

	/// <summary>
	/// 构造函数
	/// </summary>
	/// <param name="path">Path.</param>
	/// <param name="version">Version.</param>
	/// <param name="loaderTypeEnum">Loader type enum.</param>
	public WwwLoaderPath(string path, int version, WwwLoaderTypeEnum loaderTypeEnum)
	{
		this.path = path;
		this.version = version;
		this.loaderTypeEnum = loaderTypeEnum;
	}
}
WwwLoaderTypeEnum.cs 文件

using UnityEngine;
using System.Collections;

/// <summary>
/// 加载资源类型枚举
/// </summary>
public enum WwwLoaderTypeEnum
{
	TEXT = 1, // 文本
	TEXTURE = 2, //贴图
	AUDIO = 3, // 声音
	MOVIE = 4, // 视频
	ASSET_BUNDLE = 5, // 资源
	UNITY_3D = 6 // 场景
}
资源下载地址: 点击下载

本文永久地址:http://www.omuying.com/article/23.aspx,【文章转载请注明出处!】


猜你喜欢

转载自blog.csdn.net/Winner_2012/article/details/44491699