282 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			282 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			C#
		
	
	
| 
 | |
| namespace Guru
 | |
| {
 | |
|     using System.Collections.Generic;
 | |
|     using UnityEngine;
 | |
|     
 | |
|     /// <summary>
 | |
|     /// 打点管理
 | |
|     /// </summary>
 | |
|     public partial class GuruSDK
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// 主线关卡类型
 | |
|         /// 只有传入此类型时才会进行 Blevel 的累加
 | |
|         /// </summary>
 | |
|         public const string LevelCategoryMain = "main";
 | |
|         
 | |
|         //----------------- 关卡开始类型 ---------------------
 | |
|         public const string EventLevelStartModePlay = "play";
 | |
|         public const string EventLevelStartModeReplay = "replay";
 | |
|         public const string EventLevelStartModeContinue= "continue";
 | |
|         
 | |
|         //----------------- 关卡结束类型 ---------------------
 | |
|         public const string EventLevelEndSuccess = "success";
 | |
|         public const string EventLevelEndFail = "fail";
 | |
|         public const string EventLevelEndExit = "exit";
 | |
|         public const string EventLevelEndTimeout = "timeout";
 | |
| 
 | |
|         #region 通用接口
 | |
|         /// <summary>
 | |
|         /// 自定义事件打点
 | |
|         /// </summary>
 | |
|         /// <param name="eventName"></param>
 | |
|         /// <param name="data"></param>
 | |
|         public static void LogEvent(string eventName, Dictionary<string, dynamic> data = null)
 | |
|         {
 | |
|             if (!IsInitialSuccess)
 | |
|             {
 | |
|                 Debug.LogError($"{Tag} Please call <GuruSDK.Init()> first, before you call <LogEvent>.");
 | |
|                 return;
 | |
|             }
 | |
|             Analytics.Track(eventName, data);
 | |
|         }
 | |
| 
 | |
|         public static void SetScreen(string screen, string extra = "")
 | |
|         {
 | |
|             if (!IsInitialSuccess)
 | |
|             {
 | |
|                 Debug.LogError($"{Tag} Please call <GuruSDK.Init()> first, before you call <SetScreen>.");
 | |
|                 return;
 | |
|             }
 | |
|             Analytics.SetCurrentScreen(screen, extra);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
|         
 | |
|         #region 游戏打点
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 游戏启动打点
 | |
|         /// </summary>
 | |
|         /// <param name="level"></param>
 | |
|         /// <param name="levelName"></param>
 | |
|         /// <param name="levelCategory"></param>
 | |
|         /// <param name="levelID"></param>
 | |
|         /// <param name="startType"></param>
 | |
|         /// <param name="isReplay"></param>
 | |
|         public static void LogLevelStart(int level, string startType = EventLevelStartModePlay, 
 | |
|             string levelCategory = LevelCategoryMain, string levelName = "", string levelID = "",
 | |
|             bool isReplay = false)
 | |
|         {
 | |
|             if (!IsInitialSuccess)
 | |
|             {
 | |
|                 Debug.LogError($"{Tag} Please call <GuruSDK.Init()> first, before you call <LogLevelStart>.");
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             Analytics.LogLevelStart(level, levelName, levelCategory, levelID, startType, isReplay);
 | |
|         }
 | |
|         
 | |
|         /// <summary>
 | |
|         /// 游戏点击 Continue 重开始游戏
 | |
|         /// </summary>
 | |
|         /// <param name="level"></param>
 | |
|         /// <param name="levelCategory"></param>
 | |
|         /// <param name="levelName"></param>
 | |
|         /// <param name="levelID"></param>
 | |
|         public static void LogLevelContinue(int level, string levelCategory = LevelCategoryMain,
 | |
|             string levelName = "", string levelID = "")
 | |
|         {
 | |
|             LogLevelStart(level, EventLevelStartModeContinue, levelCategory, levelName, levelID,  true);
 | |
|         }
 | |
|         
 | |
|         /// <summary>
 | |
|         /// 游戏点击 Continue 重开始游戏
 | |
|         /// </summary>
 | |
|         /// <param name="level"></param>
 | |
|         /// <param name="levelCategory"></param>
 | |
|         /// <param name="levelName"></param>
 | |
|         /// <param name="levelID"></param>
 | |
|         public static void LogLevelReplay(int level, string levelCategory = LevelCategoryMain,
 | |
|             string levelName = "", string levelID = "")
 | |
|         {
 | |
|             LogLevelStart(level, EventLevelStartModeReplay,levelCategory, levelName, levelID,  true);
 | |
|         }
 | |
|         
 | |
|         /// <summary>
 | |
|         /// 游戏胜利打点
 | |
|         /// </summary>
 | |
|         public static void LogLevelEnd(int level,  string result = EventLevelEndSuccess,
 | |
|             string levelCategory = LevelCategoryMain, string levelName = "", string levelID = "",
 | |
|             int? duration = null, int? step = null, int? score = null )
 | |
|         {
 | |
|             if (!IsInitialSuccess)
 | |
|             {
 | |
|                 Debug.LogError($"{Tag} Please call <GuruSDK.Init()> first, before you call <LogLevelEnd>.");
 | |
|                 return;
 | |
|             }
 | |
|             
 | |
|             
 | |
|             if (InitConfig.AutoRecordFinishedLevels)
 | |
|             {
 | |
|                 if(result == EventLevelEndSuccess){
 | |
|                     if(levelCategory == LevelCategoryMain) Model.SuccessLevelCount++; // 自动记录关卡完成次数
 | |
|                     Model.TotalPlayedCount++; // 自动记录关卡总次数
 | |
|                 }
 | |
|                 
 | |
| 
 | |
|                 Analytics.BLevel = Model.SuccessLevelCount; // 记录 BLevel
 | |
|                 Analytics.BPlay = Model.TotalPlayedCount; // 记录 BPlay
 | |
|             }
 | |
|             
 | |
|             Analytics.LogLevelEnd(level, result, 
 | |
|                 levelName, levelCategory, levelCategory,
 | |
|                 duration, step, score);
 | |
|         }
 | |
|         
 | |
|         
 | |
|         /// <summary>
 | |
|         /// 游戏失败打点
 | |
|         /// 需要为游戏记录详细的失败原因
 | |
|         /// </summary>
 | |
|         public static void LogLevelFail(int level,
 | |
|             string levelCategory = LevelCategoryMain, string levelName = "", string levelID = "",
 | |
|             int? duration = null, int? step = null, int? score = null )
 | |
|         {
 | |
|             LogLevelEnd(level, EventLevelEndFail, levelCategory, levelName, levelID, duration, step, score);
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 因退出关卡导致游戏失败
 | |
|         /// </summary>
 | |
|         public static void LogLevelFailExit(int level,
 | |
|             string levelCategory = LevelCategoryMain, string levelName = "", string levelID = "",
 | |
|             int? duration = null, int? step = null, int? score = null)
 | |
|         {
 | |
|             LogLevelEnd(level, EventLevelEndExit, levelCategory, levelName, levelID, duration, step, score);
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 因关卡超时导致游戏失败
 | |
|         /// </summary>
 | |
|         public static void LogLevelFailTimeout(int level,
 | |
|             string levelCategory = LevelCategoryMain, string levelName = "", string levelID = "",
 | |
|             int? duration = null, int? step = null, int? score = null)
 | |
|         {
 | |
|             LogLevelEnd(level, EventLevelEndTimeout, levelCategory, levelName, levelID, duration, step, score);
 | |
|         }
 | |
| 
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 玩家(角色)升级事件
 | |
|         /// </summary>
 | |
|         /// <param name="playerLevel"></param>
 | |
|         /// <param name="playerName"></param>
 | |
|         public static void LogLevelUp(int playerLevel, string playerName)
 | |
|         {
 | |
|             if (!IsInitialSuccess)
 | |
|             {
 | |
|                 Debug.LogError($"{Tag} Please call <GuruSDK.Init()> first, before you call <LogLevelUp>.");
 | |
|                 return;
 | |
|             }
 | |
|             Analytics.LevelUp(playerLevel, playerName);
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 玩家解锁成就
 | |
|         /// </summary>
 | |
|         /// <param name="achievementName"></param>
 | |
|         public static void LogAchievement(string achievementName)
 | |
|         {
 | |
|             if (!IsInitialSuccess)
 | |
|             {
 | |
|                 Debug.LogError($"{Tag} Please call <GuruSDK.Init()> first, before you call <LogAchievement>.");
 | |
|                 return;
 | |
|             }
 | |
|             Analytics.UnlockAchievement(achievementName);
 | |
|         }
 | |
|         
 | |
|         #endregion
 | |
| 
 | |
|         #region 用户属性
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 设置用户属性
 | |
|         /// </summary>
 | |
|         /// <param name="key"></param>
 | |
|         /// <param name="value"></param>
 | |
|         public static void SetUserProperty(string key, string value)
 | |
|         {
 | |
|             if (!IsInitialSuccess)
 | |
|             {
 | |
|                 Debug.LogError($"{Tag} Please call <GuruSDK.Init()> first, before you call <SetUserProperty>.");
 | |
|                 return;
 | |
|             }
 | |
|             Analytics.SetUserProperty(key, value);
 | |
|         }
 | |
| 
 | |
|         public static void SetUID(string uid)
 | |
|         {
 | |
|             SetUserProperty(Analytics.PropertyUserID, uid);
 | |
|         }
 | |
| 
 | |
|         public static void SetUserBLevel(int blevel)
 | |
|         {
 | |
|             SetUserProperty(Analytics.PropertyLevel, $"{blevel}");
 | |
|         }
 | |
|         
 | |
|         public static void SetUserBPlay(int bplay)
 | |
|         {
 | |
|             SetUserProperty(Analytics.PropertyPlay, $"{bplay}");
 | |
|         }
 | |
| 
 | |
|         public static void SetUserTotalCoins(int totalCoins)
 | |
|         {
 | |
|             SetUserProperty(Analytics.PropertyCoin, $"{totalCoins}");        
 | |
|         }
 | |
|         
 | |
|         public static void SetUserCoins(int coins)
 | |
|         {
 | |
|             SetUserProperty(Analytics.PropertyNonIAPCoin, $"{coins}");        
 | |
|         }
 | |
|         
 | |
|         public static void SetUserPaidCoins(int paidCoins)
 | |
|         {
 | |
|             SetUserProperty(Analytics.PropertyIAPCoin, $"{paidCoins}");        
 | |
|         }
 | |
|         
 | |
|         public static void SetUserExp(int exp)
 | |
|         {
 | |
|             SetUserProperty(Analytics.PropertyExp, $"{exp}");        
 | |
|         }
 | |
|         
 | |
|         public static void SetUserHp(int hp)
 | |
|         {
 | |
|             SetUserProperty(Analytics.PropertyHp, $"{hp}");        
 | |
|         }
 | |
| 
 | |
|         public static void SetUserGrade(int grade)
 | |
|         {
 | |
|             SetUserProperty(Analytics.PropertyGrade, $"{grade}");        
 | |
|         }
 | |
|         
 | |
|         
 | |
|         #endregion
 | |
| 
 | |
|         #region 经济打点
 | |
| 
 | |
|         public static void EarnVirtualCurrency()
 | |
|         {
 | |
|             
 | |
|         }
 | |
| 
 | |
|         public static void SpendVirtualCurrency()
 | |
|         {
 | |
|             
 | |
|         }
 | |
|         
 | |
|         
 | |
|         #endregion
 | |
|     }
 | |
| } |