示例#1
0
 public void Dispose()
 {
     callBack        = null;
     nextValue       = null;
     this.scenceName = null;
     this.bundleName = null;
     this.resName    = null;
 }
示例#2
0
 public void Dispose()
 {
     nextValue  = null;
     callBack   = null;
     resName    = null;
     bundleName = null;
     scenceName = null;
 }
 public void Dispose()
 {
     nextNode   = null;
     callBack   = null;
     sceneName  = null;
     bundleName = null;
     resName    = null;
 }
 public NativeResCallBackNode(bool isSingle, string sceneName, string bundleName, string resName, ushort backMagID, NatvieResCallBack callBack, NativeResCallBackNode nextNode)
 {
     this.sceneName  = sceneName;
     this.bundleName = bundleName;
     this.resName    = resName;
     this.backMagID  = backMagID;
     this.isSingle   = isSingle;
     this.nextNode   = nextNode;
     this.callBack   = callBack;
 }
示例#5
0
 public NativeResCallBackNode(bool tmpSingle, string tmpSceneName, string tmpBundle, string tmpRes, ushort tmpBackId, NativeResCallBack callBack, NativeResCallBackNode tmpNode)
 {
     this.isSingle   = tmpSingle;
     this.sceneName  = tmpSceneName;
     this.bundleName = tmpBundle;
     this.resName    = tmpRes;
     this.backMsgId  = tmpBackId;
     this.callBack   = callBack;
     this.nextNode   = tmpNode;
 }
示例#6
0
 public NativeResCallBackNode(bool isSingle, string sceneName, string bundleName, string resName
                              , ushort backId, NativeResCallBack callBack, NativeResCallBackNode backNode)
 {
     IsSingle   = isSingle;
     SceneName  = sceneName;
     BundleName = bundleName;
     ResName    = resName;
     BackMsgId  = backId;
     NextNode   = backNode;
     CallBack   = callBack;
 }
    private void GetResources(string sceneName, string bundleName, string resName, bool isSingle, ushort backID)
    {
        if (!ILoaderManager.Instance.IsLoadingAssetBundle(sceneName, bundleName))                    // 没有加载
        // 加载并添加请求
        {
            ILoaderManager.Instance.LoadAsset(sceneName, bundleName, OnLoadProgress);

            string bundleFullName = ILoaderManager.Instance.GetBundleReflectName(sceneName, bundleName);
            if (bundleFullName != null)
            {
                NativeResCallBackNode tmpNode = new NativeResCallBackNode(isSingle, sceneName, bundleName, resName, backID, OnSendToBackMsg, null);

                CallBackMgr.AddBundle(bundleFullName, tmpNode);
            }
            else
            {
                Debug.LogWarning("don't contains bundle = " + bundleName);
            }
        }
        else if (ILoaderManager.Instance.IsLoadingBundleFinish(sceneName, bundleName))              // 有加载,并且加载完成
        // 直接返回
        {
            if (isSingle)
            {
                UnityEngine.Object tmpObj = ILoaderManager.Instance.GetSingleResources(sceneName, bundleName, resName);

                ResBackMsg.Change(backID, tmpObj);
                SendMsg(ResBackMsg);
            }
            else
            {
                UnityEngine.Object[] tmpObjs = ILoaderManager.Instance.GetMultiResources(sceneName, bundleName, resName);

                ResBackMsg.Change(backID, tmpObjs);
                SendMsg(ResBackMsg);
            }
        }
        else                                                                                        // 已经加载,但没有完成
        // 把命令存下来

        {
            string bundleFullName = ILoaderManager.Instance.GetBundleReflectName(sceneName, bundleName);
            if (bundleFullName != null)
            {
                NativeResCallBackNode tmpNode = new NativeResCallBackNode(isSingle, sceneName, bundleName, resName, backID, OnSendToBackMsg, null);

                CallBackMgr.AddBundle(bundleFullName, tmpNode);
            }
            else
            {
                Debug.LogWarning("don't contains bundle = " + bundleName);
            }
        }
    }
示例#8
0
 public void CallBackRes(string bundles)
 {
     if (manager.ContainsKey(bundles))
     {
         NativeResCallBackNode tmpNode = manager[bundles];
         do
         {
             tmpNode.callBack(tmpNode);
             tmpNode = tmpNode.nextValue;
         } while (tmpNode != null);
     }
 }
示例#9
0
 public NativeResCallBackNode(bool tempSingle, string tempScenceName, string tempBundle,
                              string tempResName, ushort tempBackid, NativeResCallBack tmpBack,
                              NativeResCallBackNode tmpNode)
 {
     this.isSingle   = tempSingle;
     this.scenceName = tempScenceName;
     this.bundleName = tempBundle;
     this.resName    = tempResName;
     this.backMsgId  = tempBackid;
     this.nextValue  = tmpNode;
     this.callBack   = tmpBack;
 }
示例#10
0
 private void GetResources(string sceneName, string bundleName, string resName, bool isSingle, ushort backid)
 {
     //没有加载
     if (!ILoaderManager.Instance.IsLoadedAssetBundle(sceneName, bundleName))
     {
         Debug.Log("开始加载");
         ILoaderManager.Instance.LoadAsset(sceneName, bundleName, LoaderProgress);
         string bundleFullName = ILoaderManager.Instance.GetBundleRelativeName(sceneName, bundleName);
         if (bundleFullName != null)
         {
             NativeResCallBackNode node = new NativeResCallBackNode(isSingle, sceneName, bundleName, resName, backid, SendToBackMsg, null);
             CallBackManager.AddBundle(bundleFullName, node);
             Debug.Log("Get Resource==" + bundleFullName);
         }
         else
         {
             Debug.LogWarning("Bundle名为空:" + bundleName);
         }
     }
     //表示已经加载完成
     else if (ILoaderManager.Instance.IsLoadingBundleFinish(sceneName, bundleName))
     {
         if (isSingle)
         {
             Debug.Log("加载完成");
             UnityEngine.Object obj = ILoaderManager.Instance.GetSingleResource(sceneName, bundleName, resName);
             ResBackMsg.Changer(backid, obj);
             SendMsg(ResBackMsg);
         }
         else
         {
             UnityEngine.Object[] objs = ILoaderManager.Instance.GetResources(sceneName, bundleName, resName);
             ResBackMsg.Changer(backid, objs);
             SendMsg(ResBackMsg);
         }
     }
     //已经加载但是没有加载完把命令存起来
     else
     {
         Debug.Log("加载中");
         string bundleFullName = ILoaderManager.Instance.GetBundleRelativeName(sceneName, bundleName);
         if (bundleFullName != null)
         {
             NativeResCallBackNode node = new NativeResCallBackNode(isSingle, sceneName, bundleFullName, resName, backid, SendToBackMsg, null);
             CallBackManager.AddBundle(bundleFullName, node);
         }
         else
         {
             Debug.LogWarning("Bundle名为空:" + bundleName);
         }
     }
 }
示例#11
0
    /// <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, ushort msgid)
    {
        //Debug.LogWarning("begin  load  bundle name ==="+bundleName);


        ///没有加载
        if (!ILoadManager.Instance.IsLoadingAssetBundle(scenceName, bundleName))
        {
            ILoadManager.Instance.LoadAsset(scenceName, bundleName, LoaderProgrocess);

            string bundlFullName = ILoadManager.Instance.GetBundleRelateName(scenceName, bundleName);

            if (bundlFullName != null)
            {
                NativeResCallBackNode tmpNode = new NativeResCallBackNode(scenceName, bundleName, res, msgid, single, SendToBackMsg, null);
                CallBack.AddBundle(bundlFullName, tmpNode);
            }
            else
            {
                Debuger.LogWarning("doest not  contain bundle" + bundleName);
            }
        } // 已经加载完成
        else if (ILoadManager.Instance.IsLoadingBundleFinish(scenceName, bundleName))
        {
            if (single)
            {
                Object tmpObj = ILoadManager.Instance.GetSingleResources(scenceName, bundleName, res);

                // topNode.scenceName, topNode.bundleName, topNode.resName, tmpObj
                this.ResesBackMsg.ChangeMsg(msgid, tmpObj);
                SendMsg(ResesBackMsg);
            }
            else
            {
                Object[] tmpObj = ILoadManager.Instance.GetMutiResources(scenceName, bundleName, res);

                // topNode.scenceName, topNode.bundleName, topNode.resName, tmpObj
                this.ResesBackMsg.ChangeMsg(msgid, tmpObj);
                SendMsg(ResesBackMsg);
            }
        }
        //  已经加载  并且  没有完成
        else
        {
            string bundlFullName = ILoadManager.Instance.GetBundleRelateName(scenceName, bundleName);


            NativeResCallBackNode tmpNode = new NativeResCallBackNode(scenceName, bundleName, res, msgid, single, SendToBackMsg, null);
            CallBack.AddBundle(bundlFullName, tmpNode);
            ILoadManager.Instance.AddLoadFinishBackDelegate(scenceName, bundleName, LoaderProgrocess);
        }
    }
 public void CallBackRes(string bundle)
 {
     if (mNodeManager.ContainsKey(bundle))
     {
         Debug.Log("调用了回调+bundleName: " + bundle);
         NativeResCallBackNode headNode = mNodeManager[bundle];
         do
         {
             headNode.CallBack.Invoke(headNode);
             headNode = headNode.NextNode;
         } while (headNode != null);
     }
 }
示例#13
0
    //Load
    public void GetResources(string scencename, string bundleName, string resName, bool single, ushort backId)
    {
        //没有加载
        if (!ILoaderManager.Instance.IsLoadingAssetBundle(scencename, bundleName))
        {
            ILoaderManager.Instance.LoadAsset(scencename, bundleName, LoadingProgress);
            string bundleFullName = ILoaderManager.Instance.GetBundleretateName(scencename, bundleName);
            if (bundleFullName != null)
            {
                NativeResCallBackNode tmpNode = new   NativeResCallBackNode(single, scencename, bundleName, resName, backId, SendToBackMsg, null);


                callBack.AddBundle(bundleFullName, tmpNode);
            }
            else
            {
                Debug.Log("Do not cotain bundle:" + bundleFullName);
            }
        }
        if (ILoaderManager.Instance.IsLoadingBundleFinish(scencename, bundleName)) //加载完成
        {
            if (single)
            {
                Object tmpobj = ILoaderManager.Instance.GetSingleResource(scencename, bundleName, resName);
                this.ReleaseBack.Changer(backId, tmpobj);
                SendMsg(ReleaseBack);
            }
            else
            {
                Object[] tmpobj = ILoaderManager.Instance.GetMutiResources(scencename, bundleName, resName);
                this.ReleaseBack.Changer(backId, tmpobj);
                SendMsg(ReleaseBack);
            }
        }
        else//  已经加载但是没有加载完成
        {
            string bundleFullname = ILoaderManager.Instance.GetBundleretateName(scencename, bundleName);

            if (bundleFullname != null)
            {
                NativeResCallBackNode tmpNode = new NativeResCallBackNode(single, scencename, bundleName, resName, backId, SendToBackMsg, null);


                callBack.AddBundle(bundleName, tmpNode);
            }
            else
            {
                Debug.Log("Do not cotain bundle:" + bundleName);
            }
        }
    }
示例#14
0
 //加载完成后,消息向上层传递完成了,就把命令
 public void Dispose(string bundle)
 {
     if (manager.ContainsKey(bundle))
     {
         NativeResCallBackNode tmpNode = manager[bundle];
         while (tmpNode.nextNode != null)
         {
             NativeResCallBackNode curNode = tmpNode;
             tmpNode = tmpNode.nextNode;
             curNode.Dispose();
             manager.Remove(bundle);
         }
     }
 }
    public void CallBackRes(string bundleName)
    {
        if (callBackNodes.ContainsKey(bundleName))
        {
            NativeResCallBackNode curNode = callBackNodes[bundleName];

            do
            {
                curNode.callBack(curNode);

                curNode = curNode.nextNode;
            } while (curNode != null);
        }
    }
示例#16
0
    public NativeResCallBackNode(string scence, string bundle, string res, ushort msgid, bool single, NativeResCallBack tmpBack, NativeResCallBackNode tmpNode)
    {
        this.callBack = tmpBack;

        this.bundleName = bundle;
        this.resName    = res;

        this.nextValue = tmpNode;

        this.msgId = msgid;

        this.isSingle   = single;
        this.scenceName = scence;
    }
 /// <summary>
 /// 加载完成后且向上传递消息,传递完后调用
 /// </summary>
 /// <param name="bundle"></param>
 public void Dispose(string bundle)
 {
     if (mNodeManager.ContainsKey(bundle))
     {
         NativeResCallBackNode headNode = mNodeManager[bundle];
         while (headNode.NextNode != null)
         {
             NativeResCallBackNode curNode = headNode;
             headNode = headNode.NextNode;
             curNode.Dispose();
         }
         headNode.Dispose();
         mNodeManager.Remove(bundle);
     }
 }
示例#18
0
 /// <summary>
 /// Node回调,在加载Bundel包后调用
 /// </summary>
 /// <param name="node"></param>
 public void SendToBackMsg(NativeResCallBackNode node)
 {
     if (node.IsSingle)
     {
         UnityEngine.Object obj = ILoaderManager.Instance.GetSingleResource(node.SceneName, node.BundleName, node.ResName);
         this.ResBackMsg.Changer(node.BackMsgId, obj);
         SendMsg(ResBackMsg);
     }
     else
     {
         UnityEngine.Object[] objs = ILoaderManager.Instance.GetResources(node.SceneName, node.BundleName, node.ResName);
         this.ResBackMsg.Changer(node.BackMsgId, objs);
         SendMsg(ResBackMsg);
     }
 }
示例#19
0
 public void GetResource(string sceneName, string bundleName, string res, bool single, ushort backId)
 {
     if (!ILoaderManager.Instance.IsLoadBundleFinish(sceneName, bundleName))
     {
         ILoaderManager.Instance.LoadAsset(sceneName, bundleName, LoaderProgrecess);
         string bundleFullName = ILoaderManager.Instance.GetBundleRetateName(sceneName, bundleName);
         if (bundleFullName != null)
         {
             NativeResCallBackNode tmpNode = new NativeResCallBackNode(single, sceneName, bundleName, res, backId, SendToBackMsg, null);
             CallBack.AddBundle(bundleFullName, tmpNode);
             Debug.Log("GetRescources ==" + bundleFullName);
         }
         else
         {
             Debug.LogWarning("Do not contain bundle ==" + bundleName);
         }
     }
     //表示已经加载完成
     else if (ILoaderManager.Instance.IsLoadBundleFinish(sceneName, bundleName))
     {
         if (single)
         {
             UnityEngine.Object tmpObj = ILoaderManager.Instance.GetSingleResources(sceneName, bundleName, res);
             this.ReleaseBack.Changer(backId, tmpObj);
             SendMsg(ReleaseBack);
         }
         else
         {
             UnityEngine.Object[] tmpObj = ILoaderManager.Instance.GetMultiResources(sceneName, bundleName, res);
             this.ReleaseBack.Changer(backId, tmpObj);
             SendMsg(ReleaseBack);
         }
     }
     else
     {
         //已经加载但是没有完成
         string bundleFullName = ILoaderManager.Instance.GetBundleRetateName(sceneName, bundleName);
         if (bundleFullName != null)
         {
             NativeResCallBackNode tmpNode = new NativeResCallBackNode(single, sceneName, bundleName, res, backId, SendToBackMsg, null);
             CallBack.AddBundle(bundleName, tmpNode);
         }
         else
         {
             Debug.LogWarning("Do not contain bundle ==" + bundleName);
         }
     }
 }
 /// <summary>
 /// 添加节点
 /// </summary>
 /// <param name="bundle"></param>
 /// <param name="callBackNode"></param>
 public void AddBundle(string bundle, NativeResCallBackNode callBackNode)
 {
     if (mNodeManager.ContainsKey(bundle))
     {
         NativeResCallBackNode headNode = mNodeManager[bundle];
         while (headNode != null)
         {
             headNode = headNode.NextNode;
         }
         headNode.NextNode = callBackNode;
     }
     else
     {
         mNodeManager.Add(bundle, callBackNode);
     }
 }
示例#21
0
 //来了请求添加的过程
 public void AddBundle(string bundle, NativeResCallBackNode curNode)
 {
     if (manager.ContainsKey(bundle))
     {
         NativeResCallBackNode tmpNode = manager[bundle];
         while (tmpNode.nextValue != null)
         {
             tmpNode = tmpNode.nextValue;
         }
         tmpNode = curNode;
     }
     else
     {
         manager.Add(bundle, curNode);
     }
 }
示例#22
0
    //node回调
    public void SendToBackMsg(NativeResCallBackNode tmpNode)
    {
        if (tmpNode.isSingle)
        {
            Object tmpobj = ILoaderManager.Instance.GetSingleResource(tmpNode.scenceName, tmpNode.bundleName, tmpNode.resName);

            this.ReleaseBack.Changer(tmpNode.backMsgId, tmpobj);
            SendMsg(ReleaseBack);
        }
        else
        {
            Object[] tmpobj = ILoaderManager.Instance.GetMutiResources(tmpNode.scenceName, tmpNode.bundleName, tmpNode.resName);

            this.ReleaseBack.Changer(tmpNode.backMsgId, tmpobj);
            SendMsg(ReleaseBack);
        }
    }
    /// <summary>
    /// 来了请求添加过程
    /// </summary>
    /// <param name="bundleName"></param>
    /// <param name="node"></param>
    public void AddBundle(string bundleName, NativeResCallBackNode node)
    {
        if (callBackNodes.ContainsKey(bundleName))
        {
            NativeResCallBackNode tmpNode = callBackNodes[bundleName];

            // 存到链表最后
            while (tmpNode.nextNode != null)
            {
                tmpNode = tmpNode.nextNode;
            }
            tmpNode.nextNode = node;
        }
        else
        {
            callBackNodes.Add(bundleName, node);
        }
    }
示例#24
0
    //  void NativeResCallBack(NativeResCallBackNode tmpNode)

    public void SendToBackMsg(NativeResCallBackNode tmpNode)
    {
        if (tmpNode.isSingle)
        {
            Object tmpObj = ILoadManager.Instance.GetSingleResources(tmpNode.scenceName, tmpNode.bundleName, tmpNode.resName);

            // topNode.scenceName, topNode.bundleName, topNode.resName, tmpObj
            this.ResesBackMsg.ChangeMsg(tmpNode.msgId, tmpObj);
            SendMsg(ResesBackMsg);
        }
        else
        {
            Object[] tmpObj = ILoadManager.Instance.GetMutiResources(tmpNode.scenceName, tmpNode.bundleName, tmpNode.resName);

            // topNode.scenceName, topNode.bundleName, topNode.resName, tmpObj
            this.ResesBackMsg.ChangeMsg(tmpNode.msgId, tmpObj);
            SendMsg(ResesBackMsg);
        }
    }
    /// <summary>
    /// node 回调 回复上层消息
    /// </summary>
    /// <param name="node"></param>
    private void OnSendToBackMsg(NativeResCallBackNode node)
    {
        if (node.isSingle)
        {
            // 获取资源
            UnityEngine.Object tmpObj = ILoaderManager.Instance.GetSingleResources(node.sceneName, node.bundleName, node.resName);

            // 设置参数并发送
            ResBackMsg.Change(node.backMagID, tmpObj);
            SendMsg(ResBackMsg);
        }
        else
        {
            UnityEngine.Object[] tmpObj = ILoaderManager.Instance.GetMultiResources(node.sceneName, node.bundleName, node.resName);

            ResBackMsg.Change(node.backMagID, tmpObj);
            SendMsg(ResBackMsg);
        }
    }
    /// <summary>
    /// 加载完成后,消息向上层传递完成了,就把这些缓存的命令删除
    /// </summary>
    /// <param name="bundleName"></param>
    public void DisPose(string bundleName)
    {
        if (callBackNodes.ContainsKey(bundleName))
        {
            NativeResCallBackNode curNode  = callBackNodes[bundleName];
            NativeResCallBackNode nextNode = null;

            // 挨个释放node
            do
            {
                nextNode = curNode.nextNode;
                curNode.Dispose();

                curNode = nextNode;
            } while (curNode != null);

            callBackNodes.Remove(bundleName);
        }
    }
示例#27
0
    public void CallBackRes(string bundle)
    {
        if (manager.ContainsKey(bundle))
        {
            NativeResCallBackNode topNode = manager[bundle];


            do
            {
                topNode.callBack(topNode);


                topNode = topNode.nextValue;
            }while (topNode != null);
        }
        else
        {
            //  Debuger.Log("extern contain bundle ==" + bundle);
        }
    }
示例#28
0
    public void SendToBackMsg(NativeResCallBackNode tmpNode)
    {
        if (tmpNode.isSingle)
        {
            Debug.Log("tmpNode === finish");
            UnityEngine.Object tmpObj = ILoaderManager.Instance.GetSingleResources(tmpNode.sceneName, tmpNode.bundleName, tmpNode.resName);

            Debug.Log("tmpNode 1111 === finish ==" + tmpObj.name);
            //this.ReleaseBack.Changer(tmpNode.backMsgId, tmpObj);
            resBackMsg.Changer(tmpNode.backMsgId, tmpObj);

            Debug.Log("tmpNode 2222 === finish");
            SendMsg(resBackMsg);
        }
        else
        {
            UnityEngine.Object[] tmpObj = ILoaderManager.Instance.GetMultiResources(tmpNode.sceneName, tmpNode.bundleName, tmpNode.resName);
            this.resBackMsg.Changer(tmpNode.backMsgId, tmpObj);
            SendMsg(resBackMsg);
        }
    }
示例#29
0
    public void Dispose(string bundle)
    {
        if (manager.ContainsKey(bundle))
        {
            NativeResCallBackNode topNode = manager[bundle];

            // 挨个释放
            while (topNode.nextValue != null)
            {
                NativeResCallBackNode curNode = topNode;

                topNode = topNode.nextValue;


                curNode.Dispose();
            }
            // 最后一个结点的释放
            topNode.Dispose();


            manager.Remove(bundle);
        }
    }