快速加载后,保证GameObject 与 Asset 一一对应
This commit is contained in:
parent
910693027c
commit
c071ee7b89
@ -46,7 +46,7 @@ public class RoTool : EditorWindow
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
private static HashSet<string> s_ValidExtMap = new HashSet<string>() { ".prefab", ".txt", ".xml", ".txt", ".lua", ".csv", ".ogg", ".wav", ".ttf", ".bytes", ".pb" };
|
||||
private static HashSet<string> s_ValidExtMap = new HashSet<string>() { ".prefab", ".txt", ".xml", ".txt", ".lua", ".luac", ".csv", ".ogg", ".wav", ".ttf", ".bytes", ".pb" };
|
||||
private static List<string> getAllFilesPathEX(string path, string searchPattern = "*.*", SearchOption searchOption = SearchOption.AllDirectories)
|
||||
{
|
||||
List<string> all = new List<string>();
|
||||
|
||||
@ -1217,25 +1217,35 @@ public class AssetsMgr : SingletonMono<AssetsMgr>
|
||||
else
|
||||
{
|
||||
string path = "";
|
||||
int loadCount = 0;
|
||||
Dictionary<string,GameObject> assetDict = new Dictionary<string,GameObject>();
|
||||
for (int i = 0; i < assetName.Length; ++i)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(assetName[i]))
|
||||
var currAssetName = assetName[i];
|
||||
if (!string.IsNullOrEmpty(currAssetName))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(pathName))
|
||||
{
|
||||
path = string.Format("{0}/{1}.prefab", pathName, assetName[i]);
|
||||
path = string.Format("{0}/{1}.prefab", pathName, currAssetName);
|
||||
}
|
||||
else
|
||||
{
|
||||
path = string.Format("{0}.prefab", assetName[i]);
|
||||
path = string.Format("{0}.prefab", currAssetName);
|
||||
}
|
||||
|
||||
//GameObject g = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(path);
|
||||
var handle = Addressables.LoadAssetAsync<GameObject>(path);
|
||||
yield return handle;
|
||||
gos.Add(handle.Result);
|
||||
Addressables.LoadAssetAsync<GameObject>(path).Completed += handle =>
|
||||
{
|
||||
assetDict[currAssetName] = handle.Result;
|
||||
loadCount++;
|
||||
};
|
||||
}
|
||||
}
|
||||
while (loadCount < assetName.Length) { yield return null; }
|
||||
for (int i = 0; i < assetName.Length; ++i)
|
||||
{
|
||||
gos.Add(assetDict[assetName[i]]);
|
||||
}
|
||||
}
|
||||
callback.DynamicInvoke(gos, seqId, pathName, assetName);
|
||||
}
|
||||
|
||||
@ -87,6 +87,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
|
||||
if(p.Value.Count > 0)
|
||||
{
|
||||
loadtaskCnt++;
|
||||
Debug.Log("[StartLoad] " + p.Key + " : " + string.Join(",", p.Value.ToArray()));
|
||||
ResourceMgr.Instance.LoadAsset<List<GameObject>>(OnLoadAssetsCompleted, p.Key, p.Value.ToArray());
|
||||
}
|
||||
}
|
||||
@ -95,6 +96,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
|
||||
if (mPrecacheCtrls.Count > 0)
|
||||
{
|
||||
loadtaskCnt++;
|
||||
Debug.Log("[StartLoad] " + Constants.AnimatorPath + " : " + string.Join(",", mPrecacheCtrls.ToArray()));
|
||||
ResourceMgr.Instance.LoadAsset<List<RuntimeAnimatorController>>(OnLoadAssetsCompleted, Constants.AnimatorPath, mPrecacheCtrls.ToArray());
|
||||
mPrecacheCtrls.Clear();
|
||||
}
|
||||
@ -102,6 +104,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
|
||||
if(mPrecacheUIPrefabs.Count > 0)
|
||||
{
|
||||
loadtaskCnt++;
|
||||
Debug.Log("[StartLoad] " + Constants.UIPath + " : " + string.Join(",", mPrecacheUIPrefabs.ToArray()));
|
||||
ResourceMgr.Instance.LoadAsset<List<GameObject>>(OnLoadAssetsCompleted, Constants.UIPath, mPrecacheUIPrefabs.ToArray());
|
||||
mPrecacheUIPrefabs.Clear();
|
||||
}
|
||||
@ -109,6 +112,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
|
||||
if (mPrecacheHeroModels.Count > 0)
|
||||
{
|
||||
loadtaskCnt++;
|
||||
Debug.Log("[StartLoad] " + Constants.ModelPath + " : " + string.Join(",", mPrecacheHeroModels.ToArray()));
|
||||
ResourceMgr.Instance.LoadAsset<List<GameObject>>(OnLoadAssetsCompleted, Constants.ModelPath, mPrecacheHeroModels.ToArray());
|
||||
mPrecacheHeroModels.Clear();
|
||||
}
|
||||
@ -116,6 +120,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
|
||||
if(mPrecacheMonsterModels.Count > 0)
|
||||
{
|
||||
loadtaskCnt++;
|
||||
Debug.Log("[StartLoad] " + Constants.ModelPath + " : " + string.Join(",", mPrecacheMonsterModels.ToArray()));
|
||||
ResourceMgr.Instance.LoadAsset<List<GameObject>>(OnLoadAssetsCompleted, Constants.ModelPath, mPrecacheMonsterModels.ToArray());
|
||||
mPrecacheMonsterModels.Clear();
|
||||
}
|
||||
@ -123,6 +128,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
|
||||
if(mPrecacheParterModels.Count > 0)
|
||||
{
|
||||
loadtaskCnt++;
|
||||
Debug.Log("[StartLoad] " + Constants.ModelPath + " : " + string.Join(",", mPrecacheParterModels.ToArray()));
|
||||
ResourceMgr.Instance.LoadAsset<List<GameObject>>(OnLoadAssetsCompleted, Constants.ModelPath, mPrecacheParterModels.ToArray());
|
||||
mPrecacheParterModels.Clear();
|
||||
}
|
||||
@ -130,6 +136,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
|
||||
if(mPrecachePetModels.Count > 0)
|
||||
{
|
||||
loadtaskCnt++;
|
||||
Debug.Log("[StartLoad] " + Constants.ModelPath + " : " + string.Join(",", mPrecachePetModels.ToArray()));
|
||||
ResourceMgr.Instance.LoadAsset<List<GameObject>>(OnLoadAssetsCompleted, Constants.ModelPath, mPrecachePetModels.ToArray());
|
||||
mPrecachePetModels.Clear();
|
||||
}
|
||||
@ -541,6 +548,7 @@ public class BattlePrepareManager : Singleton<BattlePrepareManager>
|
||||
ResourceMgr.Instance.RecycleGO(packageName, assetNames[idx], instGo);
|
||||
});
|
||||
}
|
||||
Debug.Log($"[OnLoadAssetsCompleted] {packageName} : {string.Join(',', assetNames)}");
|
||||
CheckLoadStatus();
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user