258 lines
9.5 KiB
C#
Raw Normal View History

2025-03-11 16:24:25 +08:00
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()
{
}
}
}