chunk 1: core gameplay scripts scenes runtime assets
This commit is contained in:
240
Assets/Scripts/AdsManager.cs
Normal file
240
Assets/Scripts/AdsManager.cs
Normal file
@@ -0,0 +1,240 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine.Advertisements;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
|
||||
public class AdsManager : MonoBehaviour, IUnityAdsInitializationListener, IUnityAdsLoadListener, IUnityAdsShowListener
|
||||
{
|
||||
// public string GAME_ID = "5486175"; //replace with your gameID from dashboard. note: will be different for each platform.
|
||||
|
||||
// private const string BANNER_PLACEMENT = "banner";
|
||||
// private const string VIDEO_PLACEMENT = "video";
|
||||
// private const string REWARDED_VIDEO_PLACEMENT = "rewardedVideo";
|
||||
|
||||
[SerializeField] private BannerPosition bannerPosition = BannerPosition.BOTTOM_CENTER;
|
||||
|
||||
|
||||
// private bool testMode = true;
|
||||
private bool showBanner = false;
|
||||
|
||||
//utility wrappers for debuglog
|
||||
public delegate void DebugEvent(string msg);
|
||||
public static event DebugEvent OnDebugLog;
|
||||
|
||||
// public GameObject missions_gameobject;
|
||||
|
||||
|
||||
//Game ID based on platform
|
||||
[SerializeField] string _androidGameId = "5486175";
|
||||
[SerializeField] string _iOSGameId = "5486174";
|
||||
|
||||
// [SerializeField] string _androidGameId = "5491357";
|
||||
// [SerializeField] string _iOSGameId = "5491356";
|
||||
[SerializeField] bool _testMode = false; //Currently testing
|
||||
private string _gameId;
|
||||
|
||||
[SerializeField] string _rewardedVideo_androidAdUnitId = "rewardedVideo";
|
||||
[SerializeField] string _rewardedVideo_iOsAdUnitId = "rewardedVideo";
|
||||
|
||||
// [SerializeField] string _rewardedVideo_androidAdUnitId = "Rewarded_Android";
|
||||
// [SerializeField] string _rewardedVideo_iOsAdUnitId = "Rewarded_Android";
|
||||
string _adUnitId;
|
||||
|
||||
// public TextMeshPro isSubscribedText;
|
||||
// public TextMeshProUGUI details;
|
||||
// public TextMeshProUGUI debug_msg;
|
||||
|
||||
|
||||
IEnumerator LoadAdCoroutine(){
|
||||
while (true){
|
||||
Advertisement.Load(_adUnitId, this);
|
||||
yield return new WaitForSeconds(2f); // Adjust wait time based on your needs
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
MissionHandler mission_handler;
|
||||
MissionsManager missions_manager;
|
||||
public GameObject missionsManager_GO;
|
||||
public static string AdShowbutton;
|
||||
|
||||
void OnEnable(){
|
||||
mission_handler = GetComponent<MissionHandler>();
|
||||
missions_manager = missionsManager_GO.GetComponent<MissionsManager>();
|
||||
}
|
||||
|
||||
|
||||
void Awake(){
|
||||
Initialize();
|
||||
StartCoroutine(LoadAdCoroutine()); //This code starts a coroutine that continuously calls LoadRewardedAd every 5 seconds (adjust as needed).
|
||||
}
|
||||
|
||||
|
||||
void Update(){
|
||||
|
||||
}
|
||||
|
||||
|
||||
//Initialize method is responsible for initializing Unity Ads with a given GAME_ID
|
||||
public void Initialize()
|
||||
{
|
||||
//Check if Unity Ads is supported on the current platform
|
||||
// if (Advertisement.isSupported)
|
||||
// {
|
||||
// DebugLog(Application.platform + " supported by Advertisement");
|
||||
// }
|
||||
|
||||
//Set Game ID based on the platform, Android or iPhone
|
||||
#if UNITY_IOS
|
||||
_gameId = _iOSGameId;
|
||||
|
||||
#elif UNITY_ANDROID
|
||||
_gameId = _androidGameId;
|
||||
|
||||
#elif UNITY_EDITOR
|
||||
_gameId = _androidGameId; //Only for testing the functionality in the Editor
|
||||
|
||||
#endif
|
||||
if (!Advertisement.isInitialized && Advertisement.isSupported)
|
||||
{
|
||||
Advertisement.Initialize(_gameId, _testMode, this);
|
||||
}
|
||||
|
||||
// Get the Ad Unit ID for the current platform:
|
||||
_adUnitId = (Application.platform == RuntimePlatform.IPhonePlayer)
|
||||
? _rewardedVideo_iOsAdUnitId
|
||||
: _rewardedVideo_androidAdUnitId;
|
||||
|
||||
try{
|
||||
Advertisement.Initialize(_gameId, _testMode, this);
|
||||
}catch(Exception e){
|
||||
// debug_msg.text = "Initialize_Error: " + e.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
//Toggles between showing and hiding the banner ad
|
||||
public void ToggleBanner()
|
||||
{
|
||||
// showBanner = !showBanner;
|
||||
|
||||
// if (showBanner)
|
||||
// {
|
||||
// //Sets the banner position
|
||||
// Advertisement.Banner.SetPosition(bannerPosition);
|
||||
// Advertisement.Banner.Show(BANNER_PLACEMENT);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Advertisement.Banner.Hide(false);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
//Loads rewarded video ads
|
||||
public void LoadRewardedAd()
|
||||
{
|
||||
Advertisement.Load(_adUnitId, this);
|
||||
}
|
||||
|
||||
//Show rewarded video ads
|
||||
public void ShowRewardedAd(){
|
||||
string buttonName = gameObject.name;
|
||||
AdShowbutton = buttonName;
|
||||
Debug.LogWarning("Clicked button name: " + buttonName);
|
||||
|
||||
try{
|
||||
Advertisement.Show(_adUnitId, this);
|
||||
}catch(Exception e){
|
||||
// ads_not_ready_popup_text.text = "Show_Error: " + e.ToString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//Loads Interstitial (Non-Rewarded) Video Ads
|
||||
public void LoadNonRewardedAd()
|
||||
{
|
||||
Advertisement.Load(_adUnitId, this);
|
||||
}
|
||||
|
||||
#region Interface Implementations
|
||||
public void OnInitializationComplete()
|
||||
{
|
||||
DebugLog("Init Success");
|
||||
}
|
||||
|
||||
public void OnInitializationFailed(UnityAdsInitializationError error, string message)
|
||||
{
|
||||
// ads_not_ready_popup_text.text = "InitializationFailed: " + message;
|
||||
DebugLog($"Init Failed: [{error}]: {message}");
|
||||
}
|
||||
|
||||
public void OnUnityAdsAdLoaded(string placementId)
|
||||
{
|
||||
// ShowRewardedAd();
|
||||
DebugLog($"Load Success: {placementId}");
|
||||
}
|
||||
|
||||
public void OnUnityAdsFailedToLoad(string placementId, UnityAdsLoadError error, string message)
|
||||
{
|
||||
// ads_not_ready_popup_text.text = "LoadFailed: " + message;
|
||||
DebugLog($"Load Failed: [{error}:{placementId}] {message}");
|
||||
}
|
||||
|
||||
public void OnUnityAdsShowFailure(string placementId, UnityAdsShowError error, string message)
|
||||
{
|
||||
// ads_not_ready_popup_text.text = "ShowFailed: " + message;
|
||||
DebugLog($"OnUnityAdsShowFailure: [{error}]: {message}");
|
||||
}
|
||||
|
||||
public void OnUnityAdsShowStart(string placementId)
|
||||
{
|
||||
DebugLog($"OnUnityAdsShowStart: {placementId}");
|
||||
}
|
||||
|
||||
public void OnUnityAdsShowClick(string placementId)
|
||||
{
|
||||
DebugLog($"OnUnityAdsShowClick: {placementId}");
|
||||
}
|
||||
|
||||
//Called when the rewarded video ad has been shown to completion
|
||||
public void OnUnityAdsShowComplete(string placementId, UnityAdsShowCompletionState showCompletionState)
|
||||
{
|
||||
//Check if the Ad selected was a Rewarded video
|
||||
if (((placementId == _rewardedVideo_androidAdUnitId) || (placementId == _rewardedVideo_iOsAdUnitId)) && showCompletionState == UnityAdsShowCompletionState.COMPLETED)
|
||||
{
|
||||
//// Reward the user here
|
||||
// RewardUser();
|
||||
mission_handler.AdsWatched();
|
||||
Debug.LogWarning("Reward Given!");
|
||||
|
||||
// missions_gameobject.SetActive(false);
|
||||
// missions_gameobject.SetActive(true);
|
||||
missions_manager.UpdateAdMissionUI(AdShowbutton);
|
||||
|
||||
}
|
||||
|
||||
DebugLog($"OnUnityAdsShowComplete: [{showCompletionState}]: {placementId}");
|
||||
}
|
||||
#endregion
|
||||
|
||||
public void OnGameIDFieldChanged(string newInput)
|
||||
{
|
||||
_gameId = newInput;
|
||||
}
|
||||
|
||||
public void ToggleTestMode(bool isOn)
|
||||
{
|
||||
_testMode = isOn;
|
||||
}
|
||||
|
||||
//wrapper around debug.log to allow broadcasting log strings to the UI
|
||||
void DebugLog(string msg)
|
||||
{
|
||||
OnDebugLog?.Invoke(msg);
|
||||
Debug.Log(msg);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user