Unity3d调用android中的方法
来源:互联网 发布:电脑计算器软件下载 编辑:程序博客网 时间:2024/06/05 09:15
之前看了http://www.xuanyusong.com/archives/667网站的方法,讲的是eclipse。感觉有点小麻烦,而且是基于eclipse,再者我感觉作者是应该是做unity3d的,所以说的有点麻烦。
其实调用android的方法很简单。
首先在unity3d的脚本文件(c#)中调用android中的方法主要代码如下:
//获取android中com.unity3d.player.UnityPlayer,这个类在unity3d导出工程的unity-class.jar中AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");//获取当前正在运行的activity AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");//调用activity中的方法jo.Call("StartActivity1", "第二个Activit");
知道了,这个就好说了。
建立一个unity3d项目,随便给个对象创建个脚本文件。
我在这创建了Terrain,然后创建了个cube,然后创建了TestAndroid脚本,添加到了cube上。如下图:
脚本内容如下:
using System.Collections;using System.Collections.Generic;using UnityEngine;public class TestAndroid : MonoBehaviour { // Update is called once per frame void Update() { Debug.Log("Update**************************************"); //当用户按下手机的返回键或home键退出游戏 if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.Home)) { Application.Quit(); } } void OnGUI() { if (GUILayout.Button("OPEN Activity01", GUILayout.Height(100))) { Debug.Log("Button*******************"); //注释1 AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); jo.Call("StartActivity0", "第一个Activity"); } if (GUILayout.Button("OPEN Activity02", GUILayout.Height(100))) { Debug.Log("Button2"); AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); jo.Call("StartActivity1", "第二个Activit"); } }}
2.导出Android工程:
剩下就开始android端的处理
把导出的代码,作为module导入到android studio中。
导入后类似下图:我这个工程中有好几个module,control是unity3d导出的,其他的不用管。
然后修改android中主activity,代码如下:
public class UnityPlayerActivity extends Activity{ protected UnityPlayer mUnityPlayer; // don't change the name of this variable; referenced from native code FrameLayout layout; // Setup activity layout @Override protected void onCreate (Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); getWindow().setFormat(PixelFormat.RGBX_8888); // <--- This makes xperia play happy setContentView(R.layout.main); mUnityPlayer = new UnityPlayer(this); layout = (FrameLayout) findViewById(R.id.container); layout.addView(mUnityPlayer); mUnityPlayer.requestFocus(); } public void StartActivity0(String name) { Intent intent = new Intent(this,TestActivity0.class); intent.putExtra("name", name); this.startActivity(intent); } public void StartActivity1(String name) { Intent intent = new Intent(this,TestActivity1.class); intent.putExtra("name", name); this.startActivity(intent); }
其中StartActivity0和StartActivity1可以让unity3d中的脚本,调用如下代码,最终就会调用到android中的代码了。
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); jo.Call("StartActivity0", "第一个Activity");
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); jo.Call("StartActivity1", "第二个Activit");
阅读全文
0 0
- Unity3d调用android中的方法
- Unity3D中的系统调用方法
- Unity3D 调用Android原生方法
- Unity3D 调用Android原生方法
- Unity3D 调用Android原生方法
- Unity3D 调用Android原生方法
- Unity3d GameObject 调用其它GameObject中的方法
- Unity3D 调用Android原生方法2
- unity3d调用jar类中的方法和属性
- unity3d调用jar类中的方法和属性
- unity3d中的几个系统自调用的方法
- android 调用js中的方法
- android 调用js中的方法
- Unity3D调用android方法(非插件方式)
- Unity3d调用Anroid(Android Studio环境)方法
- 如何在Unity3d中调用android的方法
- [Unity3D]调用Android接口
- [Unity3D]调用Android接口
- 华为勇敢星实习生招聘面试经历和华为优招面试经历
- liblbfgs简介
- centos7 Qt5.9.1 使用opencv
- bootstrap fileinput + springMVC 简单示例
- 测试开发基本上的学历路线
- Unity3d调用android中的方法
- Eclipse集成反编译工具
- #java web#文件下载时需向后台传递大量参数
- C/C++编译的程序占用的内存
- Linux 使用su
- sourceInsight彻底重装
- Marvell交换机开发资料收集
- 自定义属性引入layout获取不到resourceId的问题
- Queue CodeForces