전체 예제
전체 예제: 게임 매니저
실제 게임에서 사용할 수 있는 전체 예제입니다.
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;
}