跳到主要内容

完整示例

完整示例:游戏管理器

以下是可在实际游戏中使用的完整示例。

using UnityEngine;
using Tudada;

public class GameManager : MonoBehaviour
{
private TudadaRewardedVideoAd _rewardedAd;
private bool _isLoggedIn = false;

void Start()
{
// 注册生命周期事件
TudadaSDK.OnShow += OnAppShow;
TudadaSDK.OnHide += OnAppHide;

// 开始登录
DoLogin();
}

// ===== 认证 =====

void DoLogin()
{
TudadaSDK.Instance.Login(
onSuccess: (result) => {
Debug.Log("登录成功!码: " + result.code);
Debug.Log("用户ID: " + result.userId);
_isLoggedIn = true;

// 登录后加载初始数据
LoadCloudData();
PrepareAd();
},
onFail: (err) => Debug.LogError("登录失败: " + err)
);
}

// ===== 云端数据 =====

void LoadCloudData()
{
TudadaSDK.Instance.TudadaStoreGet("saveData",
onSuccess: (result) => {
if (!string.IsNullOrEmpty(result.value))
{
var saveData = JsonUtility.FromJson<SaveData>(result.value);
Debug.Log("云端数据加载完成 - 等级: " + saveData.level);
ApplySaveData(saveData);
}
else
{
Debug.Log("无已保存数据,开始新游戏");
}
},
onFail: (err) => Debug.LogError("云端加载失败: " + err)
);
}

void SaveCloudData()
{
var saveData = new SaveData { level = 5, score = 10000, coins = 500 };
string json = JsonUtility.ToJson(saveData);

TudadaSDK.Instance.TudadaStoreSave("saveData", json,
onSuccess: (_) => Debug.Log("云端保存完成"),
onFail: (err) => Debug.LogError("云端保存失败: " + err)
);
}

// ===== 本地设置 =====

void SaveSettings()
{
TudadaSDK.Instance.SetStorageSync("bgmVolume", "0.8");
TudadaSDK.Instance.SetStorageSync("sfxVolume", "1.0");
TudadaSDK.Instance.SetStorageSync("language", "ko");
}

void LoadSettings()
{
string bgmVolume = TudadaSDK.Instance.GetStorageSync("bgmVolume");
string sfxVolume = TudadaSDK.Instance.GetStorageSync("sfxVolume");
Debug.Log("BGM: " + bgmVolume + ", SFX: " + sfxVolume);
}

// ===== 广告 =====

void PrepareAd()
{
_rewardedAd = TudadaSDK.Instance.CreateRewardedVideoAd("your-ad-unit-id");

_rewardedAd.OnLoad += () => Debug.Log("广告准备完成");

_rewardedAd.OnError += (err) =>
Debug.LogError("广告错误: " + err.errMsg);

_rewardedAd.OnClose += (result) => {
if (result.isEnded)
{
GiveReward();
}
// 预加载下一个广告
_rewardedAd.Load();
};

// 加载第一个广告
_rewardedAd.Load();
}

// 从观看广告按钮调用
public void OnWatchAdButtonClick()
{
if (_rewardedAd != null && _rewardedAd.IsLoaded)
{
_rewardedAd.Show();
}
else
{
Debug.Log("广告尚未加载完成");
}
}

void GiveReward()
{
Debug.Log("发放奖励: 金币 +100");
// 奖励发放逻辑
}

// ===== 生命周期 =====

void OnAppShow(OnShowResult result)
{
Debug.Log("应用恢复前台");
Time.timeScale = 1;
// 播放BGM等
}

void OnAppHide(OnHideResult result)
{
Debug.Log("应用进入后台");
Time.timeScale = 0;
SaveCloudData(); // 切换到后台时自动保存
}

// ===== 振动 =====

public void OnButtonClick()
{
TudadaSDK.Instance.VibrateShort(type: VibrateType.light);
}

public void OnImpact()
{
TudadaSDK.Instance.VibrateShort(type: VibrateType.heavy);
}

// ===== 清理 =====

void OnDestroy()
{
TudadaSDK.OnShow -= OnAppShow;
TudadaSDK.OnHide -= OnAppHide;
_rewardedAd?.Destroy();
}

// ===== 辅助方法 =====

void ApplySaveData(SaveData data)
{
// 游戏状态恢复逻辑
}
}

[System.Serializable]
public class SaveData
{
public int level;
public int score;
public int coins;
}