258 lines
9.5 KiB
C#
258 lines
9.5 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using UnityEngine;
|
|||
|
|
using UnityEngine.Events;
|
|||
|
|
using UnityEngine.Networking;
|
|||
|
|
using Object = UnityEngine.Object;
|
|||
|
|
|
|||
|
|
namespace ZXKFramework
|
|||
|
|
{
|
|||
|
|
public class ResAssetBundle : IRes
|
|||
|
|
{
|
|||
|
|
private Dictionary<string, AssetBundle> abDic = new Dictionary<string, AssetBundle>();
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
private AssetBundle mainAB = null;
|
|||
|
|
|
|||
|
|
//ab<61><62><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<DEB8>web<65>˲<EFBFBD><CBB2>ܷ<EFBFBD><DCB7><EFBFBD>streaming assets <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD>Ϊ<EFBFBD>ᵼ<EFBFBD><E1B5BC><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
private string PathUrl
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
#if UNITY_IOS
|
|||
|
|
return Application.streamingAssetsPath+"/";
|
|||
|
|
#elif UNITY_ANDROID
|
|||
|
|
return Application.streamingAssetsPath+"/";
|
|||
|
|
#elif UNITY_WEBGL
|
|||
|
|
return Application.dataPath + "/AssetBundles/WebGL/";
|
|||
|
|
#elif UNITY_EDITOR
|
|||
|
|
return Application.streamingAssetsPath + "/";
|
|||
|
|
#else
|
|||
|
|
return Application.streamingAssetsPath+"/";
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private string mainABName
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
#if UNITY_IOS
|
|||
|
|
return "IOS";
|
|||
|
|
#elif UNITY_ANDROID
|
|||
|
|
return "Android";
|
|||
|
|
#elif UNITY_WEBGL
|
|||
|
|
return "WebGL";
|
|||
|
|
#else
|
|||
|
|
return "PC";
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
////web<65><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//public IEnumerator LoadWebDependency(string abName)
|
|||
|
|
//{
|
|||
|
|
// Loading.Instance.titleText.gameObject.SetActive(true);
|
|||
|
|
// Loading.Instance.downloadText.gameObject.SetActive(true);
|
|||
|
|
// if (mainAB == null)
|
|||
|
|
// {
|
|||
|
|
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(PathUrl + mainABName);
|
|||
|
|
// Loading.Instance.downloadText.text = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|||
|
|
// yield return request.SendWebRequest();
|
|||
|
|
// mainAB = DownloadHandlerAssetBundle.GetContent(request);
|
|||
|
|
// manifest = mainAB.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
|
|||
|
|
// Loading.Instance.UpdateProgress(0.1f);
|
|||
|
|
// }
|
|||
|
|
// AssetBundle ab = null;
|
|||
|
|
// //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
// string[] strs = manifest.GetAllDependencies(abName);
|
|||
|
|
// for (int i = 0; i < strs.Length; i++)
|
|||
|
|
// {
|
|||
|
|
// if (!abDic.ContainsKey(strs[i]))
|
|||
|
|
// {
|
|||
|
|
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// UnityWebRequest request1 = UnityWebRequestAssetBundle.GetAssetBundle(PathUrl + strs[i]);
|
|||
|
|
// Loading.Instance.downloadText.text = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + strs[i];
|
|||
|
|
// yield return request1.SendWebRequest();
|
|||
|
|
// ab = DownloadHandlerAssetBundle.GetContent(request1);
|
|||
|
|
// abDic.Add(strs[i], ab);
|
|||
|
|
// Loading.Instance.UpdateProgress(0.1f * (i + 1f));
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
////<2F><>web<65><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//public void LoadDependency(string abName)
|
|||
|
|
//{
|
|||
|
|
// if (mainAB == null)
|
|||
|
|
// {
|
|||
|
|
// Debug.Log(PathUrl + mainABName);
|
|||
|
|
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// mainAB = AssetBundle.LoadFromFile(PathUrl + mainABName);
|
|||
|
|
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Manifest
|
|||
|
|
// manifest = mainAB.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
|
|||
|
|
// }
|
|||
|
|
// AssetBundle ab = null;
|
|||
|
|
// //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
// string[] strs = manifest.GetAllDependencies(abName);
|
|||
|
|
// for (int i = 0; i < strs.Length; i++)
|
|||
|
|
// {
|
|||
|
|
// if (!abDic.ContainsKey(strs[i]))
|
|||
|
|
// {
|
|||
|
|
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// ab = AssetBundle.LoadFromFile(PathUrl + strs[i]);
|
|||
|
|
// abDic.Add(strs[i], ab);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// //<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
|
|||
|
|
// if (!abDic.ContainsKey(abName))
|
|||
|
|
// {
|
|||
|
|
// ab = AssetBundle.LoadFromFile(PathUrl + abName);
|
|||
|
|
// abDic.Add(abName, ab);
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
////ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ͷ<EFBFBD>ʽ
|
|||
|
|
//public T LoadRes<T>(string abName, string resName) where T : Object
|
|||
|
|
//{
|
|||
|
|
// LoadDependency(abName);
|
|||
|
|
// return abDic[abName].LoadAsset<T>(resName);
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
////ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD>ʽ
|
|||
|
|
//public Object LoadRes(string abName, string resName)
|
|||
|
|
//{
|
|||
|
|
// LoadDependency(abName);
|
|||
|
|
// return abDic[abName].LoadAsset(resName);
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
////ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Type<70><65>ʽ
|
|||
|
|
//public Object LoadRes(string abName, string resName, System.Type type)
|
|||
|
|
//{
|
|||
|
|
// LoadDependency(abName);
|
|||
|
|
// return abDic[abName].LoadAsset(resName, type);
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
////<2F>첽<EFBFBD><ECB2BD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>첽<EFBFBD><ECB2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>첽<EFBFBD><ECB2BD><EFBFBD><EFBFBD>AB<41><42> <20><> <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD>ʽ
|
|||
|
|
//public void LoadResAsync(string abName, string resName, UnityAction<Object> callBack)
|
|||
|
|
//{
|
|||
|
|
// Game.Instance.StartCoroutine(RealLoadResAsync(abName, resName, callBack));
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
//public IEnumerator RealLoadResAsync(string abName, string resName, UnityAction<Object> callBack)
|
|||
|
|
//{
|
|||
|
|
// LoadDependency(abName);
|
|||
|
|
// AssetBundleRequest abr = abDic[abName].LoadAssetAsync(resName);
|
|||
|
|
// yield return abr;
|
|||
|
|
// callBack(abr.asset);
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
////<2F>첽<EFBFBD><ECB2BD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>첽<EFBFBD><ECB2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>첽<EFBFBD><ECB2BD><EFBFBD><EFBFBD>AB<41><42><EFBFBD><EFBFBD> <20><><EFBFBD>ͷ<EFBFBD>ʽ
|
|||
|
|
//public void LoadResAsync<T>(string abName, string resName, UnityAction<T> callBack) where T : Object
|
|||
|
|
//{
|
|||
|
|
// Game.Instance.StartCoroutine(RealLoadResAsync(abName, resName, callBack));
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
//public IEnumerator RealLoadResAsync<T>(string abName, string resName, UnityAction<T> callBack) where T : Object
|
|||
|
|
//{
|
|||
|
|
// LoadDependency(abName);
|
|||
|
|
// AssetBundleRequest abr = abDic[abName].LoadAssetAsync<T>(resName);
|
|||
|
|
// yield return abr;
|
|||
|
|
// callBack(abr.asset as T);
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
////<2F>첽<EFBFBD><ECB2BD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>첽<EFBFBD><ECB2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>첽<EFBFBD><ECB2BD><EFBFBD><EFBFBD>AB<41><42><EFBFBD><EFBFBD> System.Type<70><65>ʽ
|
|||
|
|
//public void LoadResAsync<T>(string abName, string resName, System.Type type, UnityAction<Object> callBack) where T : Object
|
|||
|
|
//{
|
|||
|
|
// Game.Instance.StartCoroutine(RealLoadResAsync(abName, resName, type, callBack));
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
//public IEnumerator RealLoadResAsync(string abName, string resName, System.Type type, UnityAction<Object> callBack)
|
|||
|
|
//{
|
|||
|
|
// LoadDependency(abName);
|
|||
|
|
// AssetBundleRequest abr = abDic[abName].LoadAssetAsync(resName, type);
|
|||
|
|
// yield return abr;
|
|||
|
|
// callBack(abr.asset);
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
//public void LoadSceneFromWeb(string abName, string sceneName, UnityAction<string> callBack)
|
|||
|
|
//{
|
|||
|
|
// Game.Instance.StartCoroutine(ILoadSceneFromWeb(abName, sceneName, callBack));
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
////web<65><62><EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>webҲ<62><D2B2><EFBFBD>ã<EFBFBD>
|
|||
|
|
//public IEnumerator ILoadSceneFromWeb(string abName, string sceneName, UnityAction<string> callBack)
|
|||
|
|
//{
|
|||
|
|
// // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// Loading.Instance.Show();
|
|||
|
|
// Loading.Instance.UpdateProgress(0);
|
|||
|
|
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// yield return Game.Instance.StartCoroutine(LoadWebDependency(abName));
|
|||
|
|
|
|||
|
|
// if (!abDic.ContainsKey(abName))
|
|||
|
|
// {
|
|||
|
|
// using (UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(PathUrl + abName))
|
|||
|
|
// {
|
|||
|
|
// AssetBundle ab;
|
|||
|
|
// Loading.Instance.downloadText.text = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3D<33><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + abName;
|
|||
|
|
// float temp = Loading.Instance.slider.value;
|
|||
|
|
// //yield return request.SendWebRequest();
|
|||
|
|
// request.SendWebRequest();
|
|||
|
|
// while (!request.isDone)
|
|||
|
|
// {
|
|||
|
|
// Loading.Instance.UpdateProgress((request.downloadProgress * (1 - temp)) + temp);
|
|||
|
|
// yield return null;
|
|||
|
|
// }
|
|||
|
|
// if (request.isDone)
|
|||
|
|
// {
|
|||
|
|
// Loading.Instance.UpdateProgress(1f);
|
|||
|
|
// Loading.Instance.titleText.gameObject.SetActive(false);
|
|||
|
|
// Loading.Instance.downloadText.gameObject.SetActive(false);
|
|||
|
|
// }
|
|||
|
|
// ab = DownloadHandlerAssetBundle.GetContent(request);
|
|||
|
|
// abDic.Add(abName, ab);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// string[] strs = abDic[abName].GetAllScenePaths();
|
|||
|
|
// for (int i = 0; i < strs.Length; i++)
|
|||
|
|
// {
|
|||
|
|
// if (sceneName == Path.GetFileNameWithoutExtension(strs[i]))
|
|||
|
|
// {
|
|||
|
|
// callBack(strs[i]);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>
|
|||
|
|
//public void UnLoad(string abName)
|
|||
|
|
//{
|
|||
|
|
// if (abDic.ContainsKey(abName))
|
|||
|
|
// {
|
|||
|
|
// abDic[abName].Unload(false);
|
|||
|
|
// abDic.Remove(abName);
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
////<2F><><EFBFBD>а<EFBFBD><D0B0><EFBFBD>ж<EFBFBD><D0B6>
|
|||
|
|
//public void ClearAB()
|
|||
|
|
//{
|
|||
|
|
// AssetBundle.UnloadAllAssetBundles(false);
|
|||
|
|
// abDic.Clear();
|
|||
|
|
// mainAB = null;
|
|||
|
|
// manifest = null;
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
public void Load<T>(string assetName, Action<T> action) where T : UnityEngine.Object
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void UnLoadAll()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|