Unity激励广告:如何统计观看次数并触发对应奖励?
激励广告计数解锁方案(结合现有关卡代码)
1. 广告次数统计核心逻辑
直接用你已在使用的PlayerPrefs存储广告观看次数,实现达标判断:
// 设定需要观看的广告次数阈值,示例为3次 private const int REQUIRED_AD_COUNT = 3; // 获取当前已观看的广告次数,默认0次 private int GetAdWatchCount() { return PlayerPrefs.GetInt("AdWatchCount", 0); } // 广告成功播放完成后调用此方法 public void OnAdWatchedComplete() { int currentCount = GetAdWatchCount(); currentCount++; PlayerPrefs.SetInt("AdWatchCount", currentCount); PlayerPrefs.Save(); // 强制写入本地,避免数据丢失 // 检查是否达到解锁条件 if (currentCount >= REQUIRED_AD_COUNT) { // 可二选一或同时执行两种奖励 UnlockAllLevels(); GiveCoinReward(150); // 奖励150金币,数值可自行调整 // 可选:重置计数,防止重复触发奖励 PlayerPrefs.SetInt("AdWatchCount", 0); PlayerPrefs.Save(); } }
2. 整合全关卡解锁逻辑
修改你现有的关卡锁定代码,加入全关卡解锁的判断逻辑:
public Button[] lvlButtons; void Start() { RefreshLevelButtons(); } private void RefreshLevelButtons() { int unlockedLevel = PlayerPrefs.GetInt("levelAt", 2); bool isAllUnlocked = PlayerPrefs.GetInt("AllLevelsUnlocked", 0) == 1; for (int i = 0; i < lvlButtons.Length; i++) { // 要么全关卡解锁,要么按原逻辑判断单关卡是否解锁 lvlButtons[i].interactable = isAllUnlocked || (i + 2 <= unlockedLevel); } } // 解锁所有关卡的方法 private void UnlockAllLevels() { PlayerPrefs.SetInt("AllLevelsUnlocked", 1); PlayerPrefs.Save(); RefreshLevelButtons(); // 立刻更新按钮交互状态 }
3. 金币奖励实现
同样用PlayerPrefs存储金币数值,实现奖励逻辑:
private void GiveCoinReward(int coinAmount) { int currentCoins = PlayerPrefs.GetInt("PlayerCoins", 0); currentCoins += coinAmount; PlayerPrefs.SetInt("PlayerCoins", currentCoins); PlayerPrefs.Save(); // 此处需添加UI更新代码,将新的金币数展示到游戏UI上 // UpdateCoinDisplay(currentCoins); }
关键注意事项
- 必须在广告成功播放完成并触发官方奖励回调时调用
OnAdWatchedComplete(),比如Unity Ads的OnUserEarnedReward、AdMob的OnRewardedAdUserEarnedReward,避免未看完广告就触发奖励。 - 测试阶段可通过
PlayerPrefs.DeleteAll()清空所有存储数据,快速重置测试流程。 - 若后续需要支持多存档或更复杂的数据管理,可替换
PlayerPrefs为JSON文件、本地数据库等方案,当前需求下PlayerPrefs足够简洁实用。
内容的提问来源于stack exchange,提问作者iSTAR
相关产品推荐
相关产品推荐

