public void RemoveDataHandler(OnLoadedComplete handler) { if (handler == null) { return; } OnDataReady -= handler; }
public void AddDataHandler(OnLoadedComplete handler) { if (handler == null) { return; } if (readyToUse) { handler.Invoke(_resName, this, _param); } else { OnDataReady += handler; } }
/// <summary> /// Load raw resource by path /// </summary> /// <param name="path"> resource path </param> /// <param name="onComplete"> callback function when resource loaded </param> /// <param name="useLocal"> true: use file from Resource folder, false: use assetBundle </param> /// <param name="param"></param> private void LoadResourceByPath(string path, OnLoadedComplete onComplete, bool useLocal, System.Object param = null) { if (!string.IsNullOrEmpty(path)) { GAbstractData waitLoadResource = null; if (_dataMap.ContainsKey(path)) { waitLoadResource = _dataMap[path]; waitLoadResource.AddRef(); waitLoadResource.AddDataHandler(onComplete); } else { if (useLocal) { waitLoadResource = new GGameLocalData(); } else { waitLoadResource = new GAssetBundleData(); } _dataMap.Add(path, waitLoadResource); _loadingResList.Add(waitLoadResource); waitLoadResource.AddRef(); waitLoadResource.AddDataHandler(onComplete); waitLoadResource.Init(path, useLocal, param); } } else { DebugUtils.LogError(DebugUtils.Type.Resource, "GetGameData Can't input the null path!"); } }