Unity Android Callback AndroidJavaProxy

Unity Android Callback 

在 Unity 建立一個 Callback 讓 Android plugin 做完某事之後呼叫. 


一、Eclipse 
1. 建立一個 interface 

例:

  1. public interface CAdLocusListenerCallBack {  
  2.  void onReceiveAd();  
  3.  void onFailedToReceiveAd(int errorcode);  
  4. }  

 

2. 把它加入至某 class 裡
例:
  1. public class CAdLocus  
  2. {  
  3.     //callback.  
  4.     CAdLocusListenerCallBack listenerCB = null;  
  5.   
  6.     public void SetListenerCB(CAdLocusListenerCallBack cb)  
  7.     {  
  8.      listenerCB = cb;  
  9.     }  
  10. }  
3.做完事後呼叫 Callback
例:
  1. public void onReceiveAd(Ad adView )  
  2. {  
  3.  //AdLocusLayout llayout = (AdLocusLayout)adView;  
  4.  if (listenerCB != null)  
  5.  {  
  6.   listenerCB.onReceiveAd();  
  7.  }  
  8. }  
  9.   
  10.   
  11. public void onFailedToReceiveAd(Ad adView , com.adlocus.AdLocusLayout$ErrorCode errorCode)  
  12. {  
  13.   if (listenerCB != null)  
  14.   {  
  15.    listenerCB.onFailedToReceiveAd(1);  
  16.   }  
  17. }  
二、Unity
1.建立 Callback 腳本
例:
  1. public class AdLocusListenerCallBack : AndroidJavaProxy  
  2. {  
  3.  public AdLocusListenerCallBack():base("com.ad.adlocus.CAdLocusListenerCallBack")  
  4.  {  
  5.  }  
  6.  void onReceiveAd()  
  7.  {  
  8.  }  
  9.  void onFailedToReceiveAd(int errorcode)  
  10.  {  
  11.  }  
  12. }  
2.對 Plugin 註冊 Callback
例:
  1. AndroidJavaClass player = new AndroidJavaClass( "com.unity3d.player.UnityPlayer" );  
  2. AndroidJavaObject activity = player.GetStatic<AndroidJavaObject>("currentActivity");  
  3. AdLocusJo = new AndroidJavaObject("com.ad.adlocus.CAdLocus", activity);  
  4. AdLocusListenerCallBack AdListenerCB = new AdLocusListenerCallBack();  
  5. AdLocusJo.Call("SetListenerCB", AdListenerCB);  
四、最後 
也有人是直 sendmessage 的方式接調用 Unity 物件的函式, 
例: 
 
  1. //unity  
  2. void gameobjectFunction(string parm)  
  3. {  
  4. }  
  5. //Java  
  6. UnityPlayer.UnitySendMessage("gameobjectName", "gameobjectFunction", "parms");  
posted @ 2018-01-23 09:56  何人之名  阅读(1069)  评论(0)    收藏  举报