Unity Android Callback

来源:互联网 发布:js面向对象的继承性 编辑:程序博客网 时间:2024/06/06 14:21
Unity Android Callback

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


一、Eclipse
1. 建立一個 interface

例:

[java] view plaincopyprint?
  1. public interface CAdLocusListenerCallBack {  
  2.  void onReceiveAd();  
  3.  void onFailedToReceiveAd(int errorcode);  
  4. }  

2. 把它加入至某 class 裡
例:
[java] view plaincopyprint?
  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
例:
[java] view plaincopyprint?
  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 腳本
例:
[csharp] view plaincopyprint?
  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
例:
[csharp] view plaincopyprint?
  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 物件的函式,
例:

[java] view plaincopyprint?
  1. //unity  
  2. void gameobjectFunction(string parm)  
  3. {  
  4. }  
  5. //Java  
  6. UnityPlayer.UnitySendMessage("gameobjectName""gameobjectFunction""parms");  
0 0
原创粉丝点击