86 lines
2.2 KiB
C#
86 lines
2.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using GameCore;
|
|
using Object = UnityEngine.Object;
|
|
|
|
namespace GameLogic
|
|
{
|
|
/// <summary>
|
|
/// 全局资源加载器
|
|
/// </summary>
|
|
public class GlobalResLoader
|
|
{
|
|
|
|
List<Object> list = new List<Object>();
|
|
/// <summary>
|
|
/// 加载完成回调
|
|
/// </summary>
|
|
Action action;
|
|
/// <summary>
|
|
/// 加载完成数量
|
|
/// </summary>
|
|
int finishCount;
|
|
/// <summary>
|
|
/// 所有数量
|
|
/// </summary>
|
|
int totalCount;
|
|
/// <summary>
|
|
/// 加载全局资源
|
|
/// </summary>
|
|
public void LoadGlobalRes(Action action) {
|
|
this.action = action;
|
|
App.ResMgr.Initialize(AppConst.bundleMode);
|
|
StringArrayConfig config = App.ResMgr.LoadAsset<StringArrayConfig>("InitResConfig");
|
|
App.ResMgr.UnLoadAsset(config.name);
|
|
totalCount = config.Configs.Length;
|
|
for (int i = 0; i < config.Configs.Length; i++)
|
|
{
|
|
App.ResMgr.LoadAssetAsync(config.Configs[i],LoadOneFinish);
|
|
}
|
|
}
|
|
|
|
public void UnLoadAll() {
|
|
for(int i=0;i<list.Count;i++){
|
|
if (list[i] == null) continue;
|
|
App.ResMgr.UnLoadAsset(list[i].name);
|
|
}
|
|
list.Clear();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 详细的进度
|
|
/// </summary>
|
|
public float Progress {
|
|
get {
|
|
if (totalCount == 0) return 1f;
|
|
return finishCount / totalCount;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 是否加载完成
|
|
/// </summary>
|
|
public bool IsLoadFinish {
|
|
get {
|
|
return finishCount == totalCount;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加载完成回调
|
|
/// </summary>
|
|
/// <param name="loader"></param>
|
|
private void LoadOneFinish(string name,Object asset) {
|
|
list.Add(asset);
|
|
finishCount++;
|
|
if (IsLoadFinish&&action!=null) {
|
|
action();
|
|
action = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|