Ejemplo n.º 1
0
 /// <summary>
 /// 完成指定AB包调用
 /// </summary>
 void CompleteLoadAB(string abName)
 {
     if (_currentABName == abName)
     {
         LoadAllABPackageCompleteCallback?.Invoke(abName);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 加载AB包
        /// </summary>
        /// <returns></returns>
        public IEnumerator LoadAB()
        {
            //https://developer.51cto.com/art/200908/147158.htm
            //using:用于处理 非托管资源,不受GC的控制的资源,在using结束后会隐性调用Dispose方法,因此需要实现Dispose方法
            //UnityWebRequest :https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequest.html
            //Unity已经将 'WWW' 给弃用,现在应该逐步过渡到使用UnityWebRequest
            using (UnityWebRequest req = UnityWebRequestAssetBundle.GetAssetBundle(_abDownLoadPath))
            {
                yield return(req.SendWebRequest());

                if (req.downloadProgress >= 1)
                {
                    //返回在www上下载的资源包,如果有,否则null
                    AssetBundle ab = DownloadHandlerAssetBundle.GetContent(req);
                    if (ab != null)
                    {
                        _abAssets = new AssetsLoader(ab);
                        _loadComplete?.Invoke(_abName);
                    }
                }
                else
                {
                    Debug.LogError($"SingleAssetLoader/LoadAB Error : the {_abDownLoadPath} is null !");
                }
            }
        }