Beispiel #1
0
 public void Dispose()
 {
     scenceName = null;
     bundleName = null;
     resName    = null;
     callBack   = null;
     next       = null;
 }
Beispiel #2
0
 //构造函数
 public NativeAssetCommandNode(string _scenceName, string _bundleName, string _resName,
                               bool _isSingle, ushort _backId, NativeAssetCallBack _callBack, NativeAssetCommandNode _next)
 {
     scenceName = _scenceName;
     bundleName = _bundleName;
     resName    = _resName;
     isSingle   = _isSingle;
     backId     = _backId;
     callBack   = _callBack;
     next       = _next;
 }
Beispiel #3
0
 public void LoadAsset(string scenceName, string bundleName, string resName, bool isSingle, ushort backId)
 {
     //当前未加载过 bundle
     if (!ABLoadManager.Instance.IsLoadedBundle(scenceName, bundleName))
     {
         ABLoadManager.Instance.LoadAssetBundle(scenceName, bundleName, LoadProgress);
         string fullName = ABLoadManager.Instance.GetRelateBundleName(scenceName, bundleName);
         // 判断当前是否有该 Bundle
         if (fullName != null)
         {
             NativeAssetCommandNode node = new NativeAssetCommandNode(scenceName, bundleName, resName, isSingle, backId, SendBackMsg, null);
             CommandManager.AddCommand(fullName, node);
         }
         else
         {
             Debug.Log("The Scence Bundle Txt Don't have bundle bundleName =" + bundleName);
         }
     }
     else
     {
         bool isLoadFinish = ABLoadManager.Instance.IsLoadingFinish(scenceName, bundleName);
         // 资源正在加载中
         if (!isLoadFinish)
         {
             string fullName = ABLoadManager.Instance.GetRelateBundleName(scenceName, bundleName);
             // 判断当前是否有该 Bundle
             if (fullName != null)
             {
                 NativeAssetCommandNode node = new NativeAssetCommandNode(scenceName, bundleName, resName, isSingle, backId, SendBackMsg, null);
                 CommandManager.AddCommand(fullName, node);
             }
             else
             {
                 Debug.Log("The Scence Bundle Txt Don't have bundle bundleName =" + bundleName);
             }
         }
         //资源已经加载过 处于缓存中
         else
         {
             if (isSingle)
             {
                 UnityEngine.Object obj = ABLoadManager.Instance.LoadSingleRes(scenceName, bundleName, resName);
                 CurrBackMsg.ChangeMsg(backId, obj);
             }
             else
             {
                 UnityEngine.Object[] objs = ABLoadManager.Instance.LoadMultRes(scenceName, bundleName, resName);
                 CurrBackMsg.ChangeMsg(backId, objs);
             }
             AnalysisMsg(CurrBackMsg);
         }
     }
 }
Beispiel #4
0
 public void CommandCallBack(string bundleName)
 {
     if (commandDir.ContainsKey(bundleName))
     {
         NativeAssetCommandNode tmpNode = commandDir[bundleName];
         do
         {
             tmpNode.callBack(tmpNode);
             tmpNode = tmpNode.next;
         } while (tmpNode != null);
     }
 }
Beispiel #5
0
 public void SendBackMsg(NativeAssetCommandNode node)
 {
     if (node.isSingle)
     {
         UnityEngine.Object obj = ABLoadManager.Instance.LoadSingleRes(node.scenceName, node.bundleName, node.resName);
         CurrBackMsg.ChangeMsg(node.backId, obj);
     }
     else
     {
         UnityEngine.Object[] objs = ABLoadManager.Instance.LoadMultRes(node.scenceName, node.bundleName, node.resName);
         CurrBackMsg.ChangeMsg(node.backId, objs);
     }
     AnalysisMsg(CurrBackMsg);
 }
Beispiel #6
0
 /// <summary>
 /// 加载完成,并向上层发送消息后,移除bundle对应缓存的所有命令
 /// </summary>
 /// <param name="bundleName"></param>
 public void RemoveBundleCommand(string bundleName)
 {
     if (commandDir.ContainsKey(bundleName))
     {
         NativeAssetCommandNode currNode = commandDir[bundleName];
         while (currNode.next != null)
         {
             NativeAssetCommandNode tmpNode = currNode.next;
             currNode = currNode.next;
             tmpNode.Dispose();
         }
         currNode.Dispose();
         commandDir.Remove(bundleName);
     }
 }
Beispiel #7
0
 public void AddCommand(string bundleName, NativeAssetCommandNode node)
 {
     if (commandDir.ContainsKey(bundleName))
     {
         NativeAssetCommandNode tmpNode = commandDir[bundleName];
         while (tmpNode.next != null)
         {
             tmpNode = tmpNode.next;
         }
         tmpNode.next = node;
     }
     else
     {
         commandDir.Add(bundleName, node);
     }
 }