public NativeResCallBackNode(bool tmpSingle, string tmpSceneName, string tmpBundleName, string tmpResName, ushort tmpBackId, NativeResCallBack tmpCallBack, NativeResCallBackNode tmpNode)
        {
            this.isSingle   = tmpSingle;
            this.sceneName  = tmpSceneName;
            this.bundleName = tmpBundleName;
            this.resName    = tmpResName;
            this.backMsgId  = tmpBackId;

            this.nextValue = tmpNode;
            this.callBack  = tmpCallBack;
        }
 public void CallBackRes(string bundleName)
 {
     if (manager.ContainsKey(bundleName))
     {
         NativeResCallBackNode curNode = manager[bundleName];
         do
         {
             curNode.callBack(curNode);
             curNode = curNode.nextValue;
         } while (curNode != null);
     }
 }
        public void GetResources(string sceneName, string bundleName, string resName, bool isSingle, ushort backId)
        {
            if (!ILoadManager.Instance.IsLoadingBundle(sceneName, bundleName))
            {//没有加载
                ILoadManager.Instance.LoadAsset(sceneName, bundleName, LoadProgress);

                string bundleFullName = ILoadManager.Instance.GetBundleReateName(sceneName, bundleName);

                if (bundleFullName != null)
                {
                    NativeResCallBackNode tmpNode = new NativeResCallBackNode(isSingle, sceneName, bundleName, resName, backId, SendToBackMsg, null);

                    CallBack.AddBundle(bundleFullName, tmpNode);
                }
                else
                {
                    Debug.Log("Dont contain bundle ==" + bundleName);
                }
            }
            else if (ILoadManager.Instance.IsLoadingBundleFinish(sceneName, bundleName))
            {//已经加载
                if (isSingle)
                {
                    UnityEngine.Object obj = ILoadManager.Instance.GetSingleResources(sceneName, bundleName, resName);
                    this.ReleaseBackMsg.Changer(backId, obj);
                    SendMsg(ReleaseBackMsg);
                }
                else
                {
                    UnityEngine.Object[] objs = ILoadManager.Instance.GetMutResources(sceneName, bundleName, resName);
                    this.ReleaseBackMsg.Changer(backId, objs);
                    SendMsg(ReleaseBackMsg);
                }
            }
            else
            { //已经加载 但是没有完成
                string bundleFullName = ILoadManager.Instance.GetBundleReateName(sceneName, bundleName);
                if (bundleFullName != null)
                {
                    NativeResCallBackNode tmpNode = new NativeResCallBackNode(isSingle, sceneName, bundleName, resName, backId, SendToBackMsg, null);

                    CallBack.AddBundle(bundleFullName, tmpNode);
                }
                else
                {
                    Debug.Log("Dont contain bundle ==" + bundleName);
                }
            }
        }
        /// <summary>
        /// 加载完成后 消息向上层传递释放bundle
        /// </summary>
        /// <param name="bundleName"></param>
        public void Dispose(string bundleName)
        {
            if (manager.ContainsKey(bundleName))
            {
                NativeResCallBackNode curNode = manager[bundleName];
                while (curNode.nextValue != null)
                {
                    NativeResCallBackNode tmpNode = curNode;
                    curNode = curNode.nextValue;
                    tmpNode.Dispose();
                }

                curNode.Dispose();

                manager.Remove(bundleName);
            }
        }
        public void SendToBackMsg(NativeResCallBackNode node)
        {
            if (node.isSingle)
            {
                UnityEngine.Object obj = ILoadManager.Instance.GetSingleResources(node.sceneName, node.bundleName, node.resName);
                this.ReleaseBackMsg.Changer(node.backMsgId, obj);

                SendMsg(ReleaseBackMsg);
            }
            else
            {
                UnityEngine.Object[] objs = ILoadManager.Instance.GetMutResources(node.sceneName, node.bundleName, node.resName);
                this.ReleaseBackMsg.Changer(node.backMsgId, objs);

                SendMsg(ReleaseBackMsg);
            }
        }
        public void AddBundle(string bundleName, NativeResCallBackNode tmpNode)
        {
            if (manager.ContainsKey(bundleName))
            {
                NativeResCallBackNode node = manager[bundleName];

                while (node.nextValue != null)
                {
                    node = node.nextValue;
                }

                node.nextValue = tmpNode;
            }
            else
            {
                manager.Add(bundleName, tmpNode);
            }
        }
 public void Dispose()
 {
     callBack  = null;
     nextValue = null;
 }