public void Initialize(string gameId, bool testMode, bool enablePerPlacementLoad) { m_LoadEnabled = enablePerPlacementLoad; m_GameId = gameId; if (debugMode) { Debug.Log("UnityAdsEditor: Initialize(" + gameId + ", " + testMode + ", " + enablePerPlacementLoad + ");"); } var placeHolderGameObject = new GameObject("UnityAdsEditorPlaceHolderObject") { hideFlags = HideFlags.HideAndDontSave | HideFlags.HideInInspector }; m_Placeholder = placeHolderGameObject.AddComponent <Placeholder>(); m_Placeholder.OnFinish += (object sender, FinishEventArgs e) => { var handler = OnFinish; if (handler != null) { handler(sender, new FinishEventArgs(e.placementId, e.showResult)); } m_CallbackExecutor.Post(execute => { foreach (var listener in GetClonedHashSet(_listeners)) { listener.OnUnityAdsDidFinish(e.placementId, e.showResult); } }); }; string configurationUrl = string.Join("/", new string[] { s_BaseUrl, gameId, string.Join("&", new string[] { "configuration?platform=editor", "unityVersion=" + Uri.EscapeDataString(Application.unityVersion), "sdkVersionName=" + Uri.EscapeDataString(version) }) }); WebRequest request = WebRequest.Create(configurationUrl); request.BeginGetResponse(result => { WebResponse response = request.EndGetResponse(result); var reader = new StreamReader(response.GetResponseStream()); string responseBody = reader.ReadToEnd(); try { m_Configuration = new Configuration(responseBody); if (!m_Configuration.enabled) { Debug.LogWarning("gameId " + gameId + " is not enabled"); } m_CallbackExecutor.Post(execute => { foreach (var placement in m_Configuration.placements) { m_PlacementMap.Add(placement.Key, false); foreach (var listener in GetClonedHashSet(_listeners)) { if (!enablePerPlacementLoad) { listener.OnUnityAdsReady(placement.Key); } } } m_IsInitialized = true; foreach (var placement in m_QueuedLoads) { Load(placement); } }); } catch (Exception exception) { Debug.LogError("Failed to parse configuration for gameId: " + gameId); Debug.Log(responseBody); Debug.LogError(exception.Message); m_CallbackExecutor.Post(execute => { foreach (var listener in GetClonedHashSet(_listeners)) { listener.OnUnityAdsDidError("Failed to parse configuration for gameId: " + gameId); } }); } reader.Close(); response.Close(); }, null); }