Android向unity发送消息

有些时候需要Android向unity发送消息,有两种方法实现,一、通过unity再带的消息机制,二、通过注册回调的方式。

 

一、通过UnityPlayer.UnitySendMessage();方法

详细的可以参考http://www.xuanyusong.com/archives/676

二、注册回调

用到的是 AndroidJavaProxy 这个类

下面是代码

Android部分

接口

1 public interface ExActivityListener {
2     public void onRestart();
3     public void onStart();
4     public void onResume();
5     public void onPause();
6     public void onStop();
7     public void onActivityResult(int requestCode, int resultCode, Intent data);
8     public void onTest();
9 }
 1 public class MainActivity extends UnityPlayerActivity {
 2 
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6 
 7     }
 8     private ExActivityListener listener;
 9     public void setListener(ExActivityListener listener)
10     {
11         Log.v("Unity", "setListener(1)!------------");
12         this.listener = listener;
13     }
14 
15     @Override
16     public void onRestart()
17     {
18         Log.v("Unity", "onRestart!------------");
19         super.onRestart();
20         if(listener != null) listener.onRestart();
21     }
22 
23     @Override
24     public void onStart()
25     {
26         super.onStart();
27         if(listener != null) listener.onStart();
28     }
29 
30     @Override
31     public void onResume()
32     {
33         super.onResume();
34         if(listener != null) listener.onResume();
35     }
36 
37     @Override
38     public void onPause()
39     {
40         super.onPause();
41         if(listener != null) listener.onPause();
42     }
43 
44     @Override
45     public void onStop()
46     {
47         if(listener != null) listener.onStop();
48         super.onStop();
49     }
50 
51     public void onTest()
52     {
53         if(listener != null) listener.onTest();
54         super.onStop();
55     }
56     @Override
57     public void onActivityResult(int requestCode, int resultCode, Intent data)
58     {
59         if(listener != null) listener.onActivityResult(requestCode, resultCode, data);
60     }
61     public String test()
62     {
63         Log.v("测试","成功");
64         onTest();
65         return "测试成功";
66     }
67 }

unity代码

 1     public class ActivityListener : AndroidJavaProxy  
 2     {  
 3         public ActivityListener() : base("com.test.mytest.ExActivityListener")  
 4         {  
 5         }  
 6 
 7         public void onRestart()  
 8         {  
 9             UnityEngine.Debug.LogError("Back to Unity onRestart");  
10         }  
11 
12         public void onStart()  
13         {  
14             UnityEngine.Debug.LogError("Back to Unity onStart");  
15         }  
16 
17         public void onResume()  
18         {  
19             UnityEngine.Debug.LogError("Back to Unity onResume");  
20         }  
21 
22         public void onPause()  
23         {  
24             UnityEngine.Debug.LogError("Back to Unity onPause");  
25         }  
26 
27         public void onStop()  
28         {  
29             UnityEngine.Debug.LogError("Back to Unity onStop");  
30         }  
31 
32         public void onActivityResult(int requestCode, int resultCode, AndroidJavaObject data)  
33         {  
34             UnityEngine.Debug.LogError("onActivityResult");  
35         }  
36         public void onTest()  
37         {  
38             UnityEngine.Debug.LogError("Back to Unity OnTest");  
39         }  
40     }  
41 
42     void Awake()  
43     {  
44         AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");  
45         activity.Call("setListener", new ActivityListener());  
46         UnityEngine.Debug.LogError("Awake");  
47     }  
48 
49     void Start()
50     {
51         AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");  
52         string value2 = activity.Call<string>("test");  
53         Debug.Log (value2);
54 
55     }
56 }

 

如果报找不到类的错误,把AndroidManifest.Xml导进unity试试

 

posted on 2017-11-07 10:38  Jason_c  阅读(1198)  评论(0编辑  收藏  举报