public void Reset() { m_resourceObjDealFinished = null; m_gameObjDealFinished = null; m_param1 = m_param2 = m_param3 = null; m_gameObjectItem = null; }
//异步加载GameObject public void InstantiateAsync(string path, OnAsyncResourceObjFinished dealFinish, LoadAssetPriority priority, bool setSceneObject = false, object param1 = null, object param2 = null, object param3 = null, bool bClear = true) { if (string.IsNullOrEmpty(path)) { return; } uint crc = CrcHelper.StringToCRC32(path); GameObjectItem gameObjectItem = GetGameObjectItemFromPool(crc); if (gameObjectItem != null) { if (setSceneObject) { gameObjectItem.Obj.transform.SetParent(m_sceneGos, false); } if (dealFinish != null) { dealFinish(path, gameObjectItem.Obj, param1, param2, param3); } return; } gameObjectItem = m_gameObjectItemClassPool.Spawn(true); gameObjectItem.Crc = crc; gameObjectItem.SetSceneParent = setSceneObject; gameObjectItem.Clear = bClear; gameObjectItem.DealFinishCallback = dealFinish; gameObjectItem.Param1 = param1; gameObjectItem.Param2 = param2; gameObjectItem.Param3 = param3; //调用ResourceManager异步加载接口 ResourceMgr.Instance.AsyncLoadGameObjectItem(path, gameObjectItem, OnAsyncLoadGameObjectFinish, priority); }
public void Reset() { Crc = 0; Obj = null; Clear = true; Guid = 0; ResourceItem = null; AlreadyRelease = false; SetSceneParent = false; DealFinishCallback = null; Param1 = Param2 = Param3 = null; }
//异步加载资源, 仅仅是不需要实例化的资源,音频,图片等 public void AsyncLoadAsset <T>(string path, OnAsyncResourceObjFinished dealFinished, LoadAssetPriority priority, object param1 = null, object param2 = null, object param3 = null, uint crc = 0) where T : UnityEngine.Object { if (crc == 0) { crc = CrcHelper.StringToCRC32(path); } ResourceItem item = GetAssetFromAssetCache(crc); if (item != null) { if (dealFinished != null) { dealFinished(path, item.Obj, param1, param2, param3); } return; } //判断是否在加载中 AsyncLoadAssetParam para = null; if (!m_loadingAssetDict.TryGetValue(crc, out para) || para == null) { para = m_asyncLoadAssetParamPool.Spawn(true); para.m_crc = crc; para.m_path = path; para.m_priority = priority; //这里应该还少了对Sprite的判定 m_loadingAssetDict.Add(crc, para); m_loadingAssetList[(int)priority].Add(para); } AsyncCallBack callback = m_asyncCallBackPool.Spawn(true); callback.m_resourceObjDealFinished = dealFinished; callback.m_param1 = param1; callback.m_param2 = param2; callback.m_param3 = param3; para.m_callbackList.Add(callback); }