75 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System.Runtime.CompilerServices;
 | |
| using UnityEngine;
 | |
| using System;
 | |
| using System.Runtime.InteropServices;
 | |
| using AOT;
 | |
| 
 | |
| public static class NativeTool
 | |
| {
 | |
|     private static Action<bool> mShareResultDel;
 | |
| 
 | |
|     public static void Shake(int pType, float pIntensity)//0 light,1 medium,2 heavy
 | |
|     {
 | |
| #if UNITY_EDITOR
 | |
|         //Debug.Log($"Shake {pType} with intensity {pIntensity}");
 | |
| #elif UNITY_IOS
 | |
|         mShake(pType, pIntensity);
 | |
| #elif UNITY_ANDROID
 | |
|         TKGSDKManager.Instance.Shake(pType, pIntensity);
 | |
|         //mShake(pType * pType * 20 + (int)(pIntensity * (pType + 1) * 10));
 | |
| #endif
 | |
|     }
 | |
| 
 | |
|     public static void Share(string pTitle, string pUrl, Action<bool> pResultDel)
 | |
|     {
 | |
|         mShareResultDel = pResultDel;
 | |
| 
 | |
| #if UNITY_EDITOR
 | |
|         mShareResultDel?.Invoke(true);
 | |
| #elif UNITY_IOS
 | |
|         mShare(pTitle, pUrl, onShareCallback);
 | |
| #elif UNITY_ANDROID
 | |
|         //mShare(pTitle, pUrl);
 | |
| #endif
 | |
|     }
 | |
| 
 | |
| #if UNITY_IOS
 | |
| 
 | |
|     [DllImport("__Internal")]
 | |
|     private static extern void mShake(int pType, float pIntensity);
 | |
|     [DllImport("__Internal")]
 | |
|     private static extern void mShare(string pTitle, string pUrl, BoolResultDelegate pResultCallback);
 | |
| 
 | |
|     internal delegate void BoolResultDelegate(bool pResult);
 | |
| 
 | |
|     [MonoPInvokeCallback(typeof(BoolResultDelegate))]
 | |
|     private static void onShareCallback(bool pResult)
 | |
|     {
 | |
|         mShareResultDel?.Invoke(pResult);
 | |
|     }
 | |
| 
 | |
| #endif
 | |
| 
 | |
| #if UNITY_ANDROID
 | |
| 
 | |
|     //private static AndroidJavaClass javaObj = new AndroidJavaClass("com.toukagames.NativeTool");
 | |
|     //private static AndroidJavaObject mInstance = null;
 | |
| 
 | |
|     //private static void mShake(long mMilliSeconds)
 | |
|     //{
 | |
|     //    if (mInstance == null)
 | |
|     //        mInstance = javaObj.CallStatic<AndroidJavaObject>("GetInstance");
 | |
| 
 | |
|     //    mInstance.Call("Shake", mMilliSeconds);
 | |
|     //}
 | |
| 
 | |
|     //private static void mShare(string pTitle, string pUrl)
 | |
|     //{
 | |
|     //    if (mInstance == null)
 | |
|     //        mInstance = javaObj.CallStatic<AndroidJavaObject>("GetInstance");
 | |
| 
 | |
|     //    mInstance.Call("Share", pUrl);
 | |
|     //    mShareResultDel?.Invoke(true);
 | |
|     //}
 | |
| #endif
 | |
| } |