Android Sudio V3.5
Unity V5.6.7
1,用AS创建空工程UnityAndroidTest,
2,File-->New---> Module AndroidLib
3,添加空 Activity
4,删除不必要的信息
5,导入Unity 的classes.jar到libs文件下,鼠标右键,Add As Lib
6,编写Android端的代码,供Unity调用
用上图内容,替换下图内容
-
import com.unity3d.player.UnityPlayer; import com.unity3d.player.UnityPlayerActivity; public class MainActivity extends UnityPlayerActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } //Unity调用Android的方法 public String Show(){ return "Hello World Android()"; } //Android调用Unity的方法 public void CallUnityMethod(String str){ //Canvas是画布,挂载unity脚本的对象,UnityMethod是Unity中的方法 UnityPlayer.UnitySendMessage("Canvas","UnityMethod",str); } }
7,打包jar,导入到unity中,Build--->Make Module "mylibrary"
8,编写Unity端代码,调用Android方法,场景中,一个Text(显示Unity调用Android内容),一个Button(Android调用Unity方法)
- private AndroidJavaObject activity=null;
- Text text;
- AndroidJavaClass jc;
- Button AButton;
- void Start () {
- text = transform.Find("Text").GetComponent<Text>();
- text.text = "1";
- AButton = transform.Find("AButton").GetComponent<Button>();
- AButton.onClick.AddListener(OnAButtonClick);
- jc= new AndroidJavaClass("com.unity3d.player.UnityPlayer");
- activity = jc.GetStatic<AndroidJavaObject>("currentActivity");
- text.text = activity.Call<String>("Show");//调用Android的Show()方法
- }
- public void OnAButtonClick()
- {
- activity.Call("CallUnityMethod", "CallUnity");//调用 Android调用Unity的方法
- }
- public void UnityMethod (string str) {//Android调用Unity的方法
- text.text = str;
- Debug.Log("android called UnityMethod : "+str);
- }
9,打包,package Name和package内容一致
10,真机运行,成功调用Android的Show方法
点击button,运行Android调用Unity方法