public void CallBackLua(string bundle) { if (manager.ContainsKey(bundle)) { CallBackNode topNode = manager[bundle]; //Debuger.LogError("node bundle =="+ bundle); do { if (topNode.isSingle) { object tmpObj = ILoadManager.Instance.GetSingleResources(topNode.scenceName, topNode.bundleName, topNode.resName); // Debuger.LogError("node bundle 22222==" + topNode.resName); topNode.luaFunc.Call(topNode.scenceName, topNode.bundleName, topNode.resName, tmpObj); } else { object[] tmpObj = ILoadManager.Instance.GetMutiResources(topNode.scenceName, topNode.bundleName, topNode.resName); topNode.luaFunc.Call(topNode.scenceName, topNode.bundleName, topNode.resName, tmpObj); } topNode = topNode.nextValue; }while (topNode != null); } else { // Debuger.Log("extern contain bundle =="+bundle); } }
public void Dispose() { nextValue = null; luaFunc.Dispose(); resName = null; bundleName = null; scenceName = null; }
public void AddCallBack(ResCallBack callback, object param) { CallBackNode node = new CallBackNode(); node.callback = callback; node.param = param; m_callbacks.Add(node); }
/// <summary> /// /// </summary> /// <param name="scenceName"> 场景名字</param> /// <param name="bundleName"> bundle</param> /// <param name="res">资源名字</param> /// <param name="single">加载的是一个资源 还是多个</param> /// <param name="luaFunc">lua回调函数</param> public void GetResources(string scenceName, string bundleName, string res, bool single, LuaFunction luaFunc) { ///没有加载过 if (!ILoadManager.Instance.IsLoadingAssetBundle(scenceName, bundleName)) { ILoadManager.Instance.LoadAsset(scenceName, bundleName, LoaderProgrocess); string bundlFullName = ILoadManager.Instance.GetBundleRelateName(scenceName, bundleName); if (bundlFullName != null && luaFunc != null) { CallBackNode tmpNode = new CallBackNode(scenceName, bundleName, res, luaFunc, single, null); CallBack.AddBundle(bundlFullName, tmpNode); // Debug.LogError("Get Multi Resources==" + bundleName + "res ==" + res); } else { Debuger.LogWarning("doest not contain bundle" + bundleName); } } //已经加载完成 else if (ILoadManager.Instance.IsLoadingBundleFinish(scenceName, bundleName)) { if (luaFunc != null) { if (single) { luaFunc.Call(scenceName, bundleName, res, ILoadManager.Instance.GetSingleResources(scenceName, bundleName, res)); } else { luaFunc.Call(scenceName, bundleName, res, ILoadManager.Instance.GetMutiResources(scenceName, bundleName, res)); } luaFunc.Dispose(); } } else { if (luaFunc != null) { string bundlFullName = ILoadManager.Instance.GetBundleRelateName(scenceName, bundleName); CallBackNode tmpNode = new CallBackNode(scenceName, bundleName, res, luaFunc, single, null); CallBack.AddBundle(bundlFullName, tmpNode); // Debug.LogError("Get Multi Resources==" + bundleName + "res ==" + res); } } }
public CallBackNode(string scence, string bundle, string res, LuaFunction tmpLuaFunc, bool single, CallBackNode tmpNode) { this.bundleName = bundle; this.resName = res; this.nextValue = tmpNode; this.luaFunc = tmpLuaFunc; this.isSingle = single; this.scenceName = scence; }
public void AddBundle(string bundle, CallBackNode tmpNode) { if (manager.ContainsKey(bundle)) { CallBackNode topNode = manager[bundle]; while (topNode.nextValue != null) { topNode = topNode.nextValue; } topNode.nextValue = tmpNode; } else { manager.Add(bundle, tmpNode); } }
public void Dispose(string bundle) { if (manager.ContainsKey(bundle)) { CallBackNode topNode = manager[bundle]; // 挨个释放 while (topNode.nextValue != null) { CallBackNode curNode = topNode; topNode = topNode.nextValue; curNode.Dispose(); } // 最后一个结点的释放 topNode.Dispose(); manager.Remove(bundle); } }