420 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			420 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C#
		
	
	
	
|  |  | |||
|  | //  Created by ZhuCong on 1/1/14. | |||
|  | //  Copyright 2014 Umeng.com . All rights reserved. | |||
|  | 
 | |||
|  | #undef UNITY_EDITOR | |||
|  | 
 | |||
|  | using System; | |||
|  | using UnityEngine; | |||
|  | using System.Runtime.InteropServices; | |||
|  | 
 | |||
|  | 
 | |||
|  | namespace Umeng | |||
|  | { | |||
|  |      | |||
|  |     /// <summary> | |||
|  |     /// 友盟游戏统计 | |||
|  |     /// </summary> | |||
|  | 	public class GA :Analytics | |||
|  |     { | |||
|  | 
 | |||
|  | 
 | |||
|  |         public enum Gender | |||
|  |         { | |||
|  |             Unknown = 0, | |||
|  |             Male = 1, | |||
|  |             Female = 2 | |||
|  |         } | |||
|  | 
 | |||
|  | 		/// <summary> | |||
|  | 		/// 设置玩家等级 | |||
|  | 		/// </summary> | |||
|  | 		/// <param name="level">玩家等级</param> | |||
|  | 		public static void SetUserLevel(int level) | |||
|  | 		{ | |||
|  | 
 | |||
|  | 			#if UNITY_EDITOR | |||
|  | 			//Debug.Log("SetUserLevel"); | |||
|  | 			#elif UNITY_IPHONE | |||
|  | 			_SetUserLevel(level); | |||
|  | 			#elif UNITY_ANDROID | |||
|  | 			Agent.CallStatic("setPlayerLevel", level); | |||
|  | 			#endif | |||
|  | 			 | |||
|  | 		} | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 设置玩家属性 | |||
|  |         /// </summary> | |||
|  |         /// <param name="userId">玩家Id</param> | |||
|  |         /// <param name="gender">性别</param> | |||
|  |         /// <param name="age">年龄</param> | |||
|  |         /// <param name="platform">来源</param> | |||
|  | 		[System.Obsolete("SetUserInfo已弃用, 请使用ProfileSignIn")] | |||
|  |         public static void SetUserInfo(string userId, Gender gender, int age, string platform) | |||
|  |         { | |||
|  | #if UNITY_EDITOR | |||
|  |             //Debug.Log("SetUserInfo"); | |||
|  | #elif UNITY_IPHONE | |||
|  |             _SetUserInfo(userId, (int)gender, age, platform); | |||
|  | #elif UNITY_ANDROID | |||
|  |             Agent.CallStatic("setPlayerInfo",userId, age,  (int)gender, platform); | |||
|  | #endif | |||
|  | 
 | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |          | |||
|  |         /// <summary> | |||
|  |         /// 玩家进入关卡 | |||
|  |         /// </summary> | |||
|  |         /// <param name="level">关卡</param> | |||
|  |         public static void StartLevel(string level) | |||
|  |         { | |||
|  | 
 | |||
|  | #if UNITY_EDITOR | |||
|  |             //Debug.Log("StartLevel"); | |||
|  | #elif UNITY_IPHONE | |||
|  |             _StartLevel(level); | |||
|  | #elif UNITY_ANDROID | |||
|  |             Agent.CallStatic("startLevel",level); | |||
|  | #endif | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 玩家通过关卡 | |||
|  |         /// </summary> | |||
|  |         /// <param name="level">如果level设置为null 则为当前关卡</param> | |||
|  | 
 | |||
|  |         public static void FinishLevel(string level) | |||
|  |         { | |||
|  | 
 | |||
|  | #if UNITY_EDITOR | |||
|  |             //Debug.Log("FinishLevel"); | |||
|  | #elif UNITY_IPHONE | |||
|  |             _FinishLevel(level); | |||
|  | #elif UNITY_ANDROID | |||
|  |             Agent.CallStatic("finishLevel",level); | |||
|  | #endif | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 玩家未通过关卡 | |||
|  |         /// </summary> | |||
|  |         /// <param name="level">如果level设置为null 则为当前关卡</param> | |||
|  |         public static void FailLevel(string level) | |||
|  |         { | |||
|  | 
 | |||
|  | #if UNITY_EDITOR | |||
|  |             //Debug.Log("FailLevel"); | |||
|  | #elif UNITY_IPHONE | |||
|  |             _FailLevel(level); | |||
|  | #elif UNITY_ANDROID | |||
|  |             Agent.CallStatic("failLevel",level); | |||
|  | #endif | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// Source9 到Source 20 请在友盟后台网站设置 对应的定义 | |||
|  |         /// </summary> | |||
|  |         public enum PaySource | |||
|  |         { | |||
|  |             AppStore = 1, | |||
|  |             支付宝 = 2, | |||
|  |             网银 = 3, | |||
|  |             财付通 = 4, | |||
|  |             移动 = 5, | |||
|  |             联通 = 6, | |||
|  |             电信 = 7, | |||
|  |             Paypal = 8, | |||
|  |             Source9, | |||
|  |             Source10, | |||
|  |             Source11, | |||
|  |             Source12, | |||
|  |             Source13, | |||
|  |             Source14, | |||
|  |             Source15, | |||
|  |             Source16, | |||
|  |             Source17, | |||
|  |             Source18, | |||
|  |             Source19, | |||
|  |             Source20, | |||
|  | 			Source21, | |||
|  | 			Source22, | |||
|  | 			Source23, | |||
|  | 			Source24, | |||
|  | 			Source25, | |||
|  | 			Source26, | |||
|  | 			Source27, | |||
|  | 			Source28, | |||
|  | 			Source29, | |||
|  | 			Source30 | |||
|  | 
 | |||
|  | 
 | |||
|  |         } | |||
|  |         /// <summary> | |||
|  |         /// 游戏中真实消费(充值)的时候调用此方法 | |||
|  |         /// </summary> | |||
|  |         /// <param name="cash">本次消费金额</param> | |||
|  | 		/// <param name="source">来源</param> | |||
|  |         /// <param name="coin">本次消费等值的虚拟币</param> | |||
|  |         public static void Pay(double cash, PaySource source, double coin) | |||
|  |         { | |||
|  | 
 | |||
|  | #if UNITY_EDITOR | |||
|  |             //Debug.Log("Pay"); | |||
|  | #elif UNITY_IPHONE | |||
|  |             _PayCashForCoin(cash,(int)source,coin); | |||
|  | #elif UNITY_ANDROID | |||
|  |             Agent.CallStatic("pay",cash , coin, (int)source); | |||
|  | #endif | |||
|  |         } | |||
|  | 
 | |||
|  | 		/// <summary> | |||
|  | 		/// 游戏中真实消费(充值)的时候调用此方法 | |||
|  | 		/// </summary> | |||
|  | 		/// <param name="cash">本次消费金额</param> | |||
|  | 		/// <param name="source">来源:AppStore = 1,支付宝 = 2,网银 = 3,财付通 = 4,移动 = 5,联通 = 6,电信 = 7,Paypal = 8, | |||
|  | 		/// 9~100对应渠道请到友盟后台设置本次消费的途径,网银,支付宝 等</param> | |||
|  | 		/// <param name="coin">本次消费等值的虚拟币</param> | |||
|  | 		public static void Pay(double cash, int source, double coin) | |||
|  | 		{ | |||
|  | 				if (source < 1 || source > 100) { | |||
|  | 						throw new System.ArgumentException (); | |||
|  | 				} | |||
|  | 				#if UNITY_EDITOR | |||
|  | 				//Debug.Log("Pay"); | |||
|  | 				#elif UNITY_IPHONE | |||
|  | 				_PayCashForCoin(cash,source,coin); | |||
|  | 				#elif UNITY_ANDROID | |||
|  | 				Agent.CallStatic("pay",cash , coin, source); | |||
|  | 				#endif | |||
|  | 		} | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 玩家支付货币购买道具 | |||
|  |         /// </summary> | |||
|  |         /// <param name="cash">真实货币数量</param> | |||
|  |         /// <param name="source">支付渠道</param> | |||
|  |         /// <param name="item">道具名称</param> | |||
|  |         /// <param name="amount">道具数量</param> | |||
|  |         /// <param name="price">道具单价</param> | |||
|  |         public static void Pay(double cash, PaySource source, string item, int amount, double price) | |||
|  |         { | |||
|  | 
 | |||
|  | #if UNITY_EDITOR | |||
|  |             //Debug.Log("Pay"); | |||
|  | #elif UNITY_IPHONE | |||
|  |             _PayCashForItem(cash,(int)source,item,amount,price); | |||
|  | #elif UNITY_ANDROID | |||
|  |             Agent.CallStatic("pay",cash, item, amount, price, (int)source); | |||
|  | #endif | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 玩家使用虚拟币购买道具 | |||
|  |         /// </summary> | |||
|  |         /// <param name="item">道具名称</param> | |||
|  |         /// <param name="amount">道具数量</param> | |||
|  |         /// <param name="price">道具单价</param> | |||
|  | 
 | |||
|  |         public static void Buy(string item, int amount, double price) | |||
|  |         { | |||
|  | 
 | |||
|  | #if UNITY_EDITOR | |||
|  |             //Debug.Log("Buy"); | |||
|  | #elif UNITY_IPHONE | |||
|  |             _Buy(item,amount,price); | |||
|  | #elif UNITY_ANDROID | |||
|  |             Agent.CallStatic("buy", item, amount, price); | |||
|  | #endif | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 玩家使用虚拟币购买道具 | |||
|  |         /// </summary> | |||
|  |         /// <param name="item">道具名称</param> | |||
|  |         /// <param name="amount">道具数量</param> | |||
|  |         /// <param name="price">道具单价</param> | |||
|  |         public static void Use(string item, int amount, double price) | |||
|  |         { | |||
|  | 
 | |||
|  | #if UNITY_EDITOR | |||
|  |             //Debug.Log("Use"); | |||
|  | #elif UNITY_IPHONE | |||
|  |             _Use(item, amount, price); | |||
|  | #elif UNITY_ANDROID | |||
|  |             Agent.CallStatic("use", item, amount, price); | |||
|  | #endif | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// Source4 到Source 10 请在友盟后台网站设置 对应的定义 | |||
|  |         /// </summary> | |||
|  |         public enum BonusSource | |||
|  |         { | |||
|  |              | |||
|  |             玩家赠送 = 1, | |||
|  | 			Source2 =2, | |||
|  | 			Source3 =3, | |||
|  | 			Source4, | |||
|  |             Source5, | |||
|  |             Source6, | |||
|  |             Source7, | |||
|  |             Source8, | |||
|  |             Source9, | |||
|  |             Source10, | |||
|  | 
 | |||
|  |         } | |||
|  |         /// <summary> | |||
|  |         /// 玩家获虚拟币奖励 | |||
|  |         /// </summary> | |||
|  |         /// <param name="coin">虚拟币数量</param> | |||
|  |         /// <param name="source">奖励方式</param> | |||
|  |         public static void Bonus(double coin, BonusSource source) | |||
|  |         { | |||
|  | 
 | |||
|  | #if UNITY_EDITOR | |||
|  |             //Debug.Log("Bonus"); | |||
|  | #elif UNITY_IPHONE | |||
|  |             _BonusCoin(coin, (int)source); | |||
|  | #elif UNITY_ANDROID | |||
|  |             Agent.CallStatic("bonus", coin, (int)source); | |||
|  | #endif | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 玩家获道具奖励 | |||
|  |         /// </summary> | |||
|  |         /// <param name="item">道具名称</param> | |||
|  |         /// <param name="amount">道具数量</param> | |||
|  |         /// <param name="price">道具单价</param> | |||
|  |         /// <param name="source">奖励方式</param> | |||
|  |         ///          | |||
|  | 
 | |||
|  |         public static void Bonus(string item, int amount, double price, BonusSource source) | |||
|  |         { | |||
|  | 
 | |||
|  | #if UNITY_EDITOR | |||
|  |             //Debug.Log("Bonus"); | |||
|  | #elif UNITY_IPHONE | |||
|  | 			_BonusItem(item, amount, price, (int)source); | |||
|  | #elif UNITY_ANDROID | |||
|  |             Agent.CallStatic("bonus", item, amount, price, (int)source); | |||
|  | #endif | |||
|  |         } | |||
|  | 
 | |||
|  | 		//使用sign-In函数后,如果结束该userId的统计,需要调用ProfileSignOff函数 | |||
|  | 		public static  void ProfileSignIn(string userId) | |||
|  | 		{ | |||
|  | 			#if UNITY_EDITOR | |||
|  | 			//Debug.Log("ProfileSignIn"); | |||
|  | 			#elif UNITY_IPHONE | |||
|  | 			_ProfileSignInWithPUID(userId); | |||
|  | 			#elif UNITY_ANDROID | |||
|  | 			Agent.CallStatic("onProfileSignIn", userId); | |||
|  | 			#endif | |||
|  | 
 | |||
|  | 
 | |||
|  | 		} | |||
|  | 
 | |||
|  | 		//使用sign-In函数后,如果结束该userId的统计,需要调用ProfileSignOfff函数 | |||
|  |  		//provider : 不能以下划线"_"开头,使用大写字母和数字标识; 如果是上市公司,建议使用股票代码。 | |||
|  | 
 | |||
|  | 		public static  void ProfileSignIn(string userId,string provider) | |||
|  | 		{ | |||
|  | 			#if UNITY_EDITOR | |||
|  | 			//Debug.Log("ProfileSignIn"); | |||
|  | 			#elif UNITY_IPHONE | |||
|  | 			_ProfileSignInWithPUIDAndProvider(userId,provider); | |||
|  | 			#elif UNITY_ANDROID | |||
|  | 			Agent.CallStatic("onProfileSignIn", provider,userId); | |||
|  | 			#endif | |||
|  | 
 | |||
|  | 
 | |||
|  | 		} | |||
|  | 		 | |||
|  | 		//该结束该userId的统计 | |||
|  | 		public static  void ProfileSignOff() | |||
|  | 		{ | |||
|  | 			#if UNITY_EDITOR | |||
|  | 			//Debug.Log("ProfileSignOff"); | |||
|  | 			#elif UNITY_IPHONE | |||
|  | 			_ProfileSignOff(); | |||
|  | 			#elif UNITY_ANDROID | |||
|  | 			Agent.CallStatic("onProfileSignOff"); | |||
|  | 			#endif | |||
|  | 
 | |||
|  | 
 | |||
|  | 		 | |||
|  | 		} | |||
|  | 
 | |||
|  | 
 | |||
|  | #if	UNITY_IPHONE | |||
|  | 
 | |||
|  |         [DllImport("__Internal")] | |||
|  |         private static extern void _SetUserLevel(int level); | |||
|  | 
 | |||
|  |         [DllImport("__Internal")] | |||
|  |         private static extern void _SetUserInfo(string userId, int gender, int age, string platform); | |||
|  | 
 | |||
|  |         [DllImport("__Internal")] | |||
|  |         private static extern void _StartLevel(string level); | |||
|  | 
 | |||
|  |         [DllImport("__Internal")] | |||
|  |         private static extern void _FinishLevel(string level); | |||
|  | 
 | |||
|  |         [DllImport("__Internal")] | |||
|  |         private static extern void _FailLevel(string level); | |||
|  | 
 | |||
|  |         [DllImport("__Internal")] | |||
|  |         private static extern void _PayCashForCoin(double cash, int source, double coin); | |||
|  | 
 | |||
|  |         [DllImport("__Internal")] | |||
|  |         private static extern void _PayCashForItem(double cash, int source, string item, int amount, double price); | |||
|  | 
 | |||
|  |         [DllImport("__Internal")] | |||
|  |         private static extern void _Buy(string item, int amount, double price); | |||
|  | 
 | |||
|  |         [DllImport("__Internal")] | |||
|  |         private static extern void _Use(string item, int amount, double price); | |||
|  | 
 | |||
|  |         [DllImport("__Internal")] | |||
|  |         private static extern void _BonusCoin(double coin, int source); | |||
|  | 
 | |||
|  | 		[DllImport("__Internal")] | |||
|  |         private static extern void _BonusItem(string item, int amount, double price, int source); | |||
|  | 
 | |||
|  | 		[DllImport("__Internal")] | |||
|  | 		private static extern void _ProfileSignInWithPUID (string puid); | |||
|  | 
 | |||
|  | 		[DllImport("__Internal")] | |||
|  | 		private static extern void _ProfileSignInWithPUIDAndProvider(string puid,string provider); | |||
|  | 
 | |||
|  | 		[DllImport("__Internal")] | |||
|  | 		private static extern void _ProfileSignOff(); | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | #endif | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |     } | |||
|  | } |