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
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
|     }
 | ||
| }
 |