赞
踩
在Unity编辑器下无法测试,必须打包到真机上测试
——新建一个安卓工程并配置基本信息
——新建Module和Class并编写代码
- package com.example.test;
-
- public class Test {
- public static int Sum(int a,int b)
- {
- return a+b;
- }
- }
——点击Build—Make Project,生成成功后找到jar包并复制到Unity工程中
——编写Unity调用Android代码
- using UnityEngine;
- using UnityEngine.UI;
-
- public class Test : MonoBehaviour
- {
- AndroidJavaClass jc;
- AndroidJavaObject jo;
-
- public Text txt;
-
- private void Awake()
- {
- jc = new AndroidJavaClass("com.example.test.Test");
- txt.text = jc.CallStatic<string>("Sum", 1, 2);
-
- //jo = new AndroidJavaObject("com.example.test.Test");
- //txt.text = jo.CallStatic<string>("Sum", 1, 2);
- }
- }
——调用Android中的静态方法:CallStatic
——调用Android中的非静态方法:Call
——获取Android中的静态字段:GetStatic
——设置Android中的静态字段:SetStatic
——获取Android中的非静态字段:Get
——设置Android中的非静态字段:Set
AndroidJavaClass和AndroidJavaObject区别
AndroidJavaObject可以访问静态和非静态,可以理解为new一个对象
AndroidJavaClass只能访问静态
——新建一个安卓工程并配置基本信息
——导入Unity库:
将Unity中的库文件Classes.jar导入到安卓工程目录下的libs文件夹中
Classes.jar位置:xxx\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes
——将Unity库文件添加到模块中
——编写Android调用Unity代码
- package com.example.test;
-
- import com.unity3d.player.UnityPlayer;
-
- public class Test {
- public int SumAndShowLog(int a,int b)
- {
- UnityPlayer.UnitySendMessage("Canvas","ShowLog","hi log");
-
- return a+b;
- }
- }
第一个参数是方法所在脚本挂载的游戏物体名,第二个参数是方法名,第三个参数是传入的参数(只能传一个字符串参数)
——点击Build—Make Project,生成成功后找到jar包并复制到Unity工程中
——Unity中的脚本
- using UnityEngine;
- using UnityEngine.UI;
-
- public class Test : MonoBehaviour
- {
- AndroidJavaObject jo;
-
- public Text txt;
- public Text txt_show;
-
- private void Awake()
- {
- jo= new AndroidJavaObject ("com.example.test.Test");
- txt.text = jo.Call<string>("Sum", 1, 2);
- }
-
- void ShowLog(string str)
- {
- txt_show.text = str;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。