/// <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); } }
/// <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; }