コード例 #1
0
 /// <summary>
 /// Creates a new <see cref="ServerAdaptor" /> instance.
 /// </summary>
 /// <param name="assetBundleName">
 /// The asset bundle name.
 /// </param>
 /// <param name="options">
 /// The options the adaptor will use to connect to the server.
 /// </param>
 public ServerAdaptor(string assetBundleName, ServerAdaptorOptions options)
 {
     if (AssetBundleLoader.Instance)
     {
         m_Coroutine = ServerAdaptorImpl(assetBundleName, options);
         AssetBundleLoader.Instance.StartCoroutine(m_Coroutine);
     }
 }
コード例 #2
0
        /// <summary>
        /// Loads the asset bundle.
        /// </summary>
        private IEnumerator ServerAdaptorImpl(string assetBundleName, ServerAdaptorOptions options)
        {
            if (string.IsNullOrEmpty(assetBundleName))
            {
                throw new System.ArgumentNullException("assetBundleName");
            }

            if (string.IsNullOrEmpty(options.Token))
            {
                throw new System.ArgumentNullException("options.Token");
            }

            if (string.IsNullOrEmpty(options.Url))
            {
                throw new System.ArgumentNullException("options.Url");
            }

            m_AssetBundle     = null;
            m_AssetBundleName = assetBundleName;
            m_Error           = null;
            m_KeepWaiting     = true;
            m_WWW             = WWW.LoadFromCacheOrDownload(options.GetAssetBundleUrl(assetBundleName), 0);

            while (!m_WWW.isDone)
            {
                m_Progress = m_WWW.progress;
                yield return(null);
            }

            if (!string.IsNullOrEmpty(m_WWW.error))
            {
                m_AssetBundle = null;
                m_Error       = m_WWW.error;
                m_KeepWaiting = false;
                m_Progress    = -1;
                m_WWW.Dispose();
                m_WWW = null;
                yield break;
            }

            m_AssetBundle = m_WWW.assetBundle;
            m_Error       = null;
            m_KeepWaiting = false;
            m_Progress    = 1;
            m_WWW.Dispose();
            m_WWW = null;
            yield break;
        }