❶ 如何进行Unity3D与android消息传递
1.Unity工程导出为Android Studio工程
(我个人用的U3D版本是5.1.1,已经支持直接将Unity工程导出为AS工程了,以前的版本我不敢保证.)
首先你要写好Unity工程里面的脚本,包括你希望Android调用的方法和调用Android方法的方法,这个在下面会有详细叙述;接下来导出AS工程,方法是:
File里面的Build Settings -> 平台选择Android,在Player Setting里面设置API版本和包名(包名很重要) -> 点击Build Setting中的Google Android Project复选框 -> Export
2. AS打开导出的工程
首先随便打开一个AS工程,然后FIle -> New -> Import Project -> 选刚才导出来的工程 -> 等待Gradle -> 以此工程为基础继续开发Android代码
❷ Unity连接Android设备时的授权
授权是在设备已经开机且与电脑连接的状态下,设备屏幕上显示一个授权对话框,并且可以勾选一直信任,这样以后设备再连接该电脑时就不需要再次授权了。
但授权对话框出现可能发生在两个时机,具体何时本人不确定,需要自己排查。
刚刚把设备连接到电脑的时候。
连好设备后,在unity的Build Settings中,选中Platform中的Android,然后点Run Device一行中的Refresh,此时,设备端可能会显示授权对话框。授权成功后,就可以在列表中看到连接的设备了。
❸ Unity3d与Android互相通信
-classes.jar
-UnityPlayerActivity.java
【注意19版本的unity把UnityPlayerActivity分离了,不在classes.jar包里面了】
app-debug.aar为新文件名
C:UsersWinDesktopapp-debug 文件夹路径
末尾 / . 不要漏掉
此处操作完即为最终需要导入到unity中的包
要使用真机才能跑哦
❹ Unity与Android的通信问题:Unity中调用Android的jar包后,Unity生成的apk安装后找不到可运行的程序...
将Unity3D安装目录下的Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin\classes.jar
拷贝到Android工程的libs文件夹里:
Unity3D:[3]Unity3D与Android交互的问题
右键单击classes.jar选择Build Path里面的Add to Build Path:
Unity3D:[3]Unity3D与Android交互的问题
Unity3D:[3]Unity3D与Android交互的问题
在MainActivity中继承UnityPlayerActivity。删除多余的方法,仅保留onCreate方法中的super.onCreate语句,如下:
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
添加要在unity中调用的方法,这里添加一个带一个参数的方法StartActivity来调用Android的Activity从而运行Android的代码。还添加了一个有返回值的方法GetInt,用来测试在Unity中获取android中方法的返回值。(貌似只能有一个UnityPlayerActivity,而且这个Activity不能是调用第三方SDK方法的Activity。UnityPlayerActivity只能作为Unity和Android交互的一个接口,在这里面再去调用其他的Activity)
package com.example.unitydemo;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
private Context mContext = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
}
public void StartActivity(String name) {
Intent intent = new Intent(mContext, WelcomeActivity.class);
intent.putExtra("name", name);
this.startActivity(intent);
}
public int GetInt()
{
return 1;
}
}
❺ 如何进行Unity3D与Android消息传递
Unity与Android的相互调用及消息传递主要采取中间件的方式。
帮你归类一下,大致如下:
创建Java项目
在Java项目中引入Unity提供的classes.jar包
编写你自己的Java文件,同时引入com.unity3d.player.UnityPlayerActivity包
修改Manisest.xml文件
将项目导出Jar文件
在Unity中创建Plugins/Android目录,将导出的Jar文件和Manisest.xml复制到Android目录下
修改Unity中导出项目的包名
在项目中创建并实例化AndroidJavaClass对象,并实例化参数com.unity3d.player.UnityPlayer包
同时创建并实例化AndroidJavaObject对象,实例化参数为currentActivity
最后可以使用实例化的AndroidJavaObject.Call来调用Java中写好的公有方法。
❻ 如何进行Unity3D与Android消息传递
Unity工程导出为Android Studio工程
首先要写好Unity工程里面的脚本,包括希望Android调用的方法和调用Android方法的方法,这个在下面会有详细叙述;接下来导出AS工程,方法是:
File里面的Build Settings -> 平台选择Android,在Player Setting里面设置API版本和包名(包名很重要) -> 点击Build Setting中的Google Android Project复选框 -> Export
2. AS打开导出的工程
先随便打开一个AS工程,然后FIle -> New -> Import Project -> 选刚才导出来的工程 -> 等待Gradle -> 以此工程为基础继续开发Android代码
3. Android 调用 Unity 脚本中的方法
先对Unity脚本进行一点说明,以C#为例:
在OnStart()里面要写入
this.name = "A"
某个要调用的方法设置为public类型,名称为B,参数为C
在一个Extend UnityPlayerActivity的Activity里,直接使用
UnityPlayer.UnitySendMessage("A","B","C");
就可以调用脚本中的方法了.
4.Unity脚本调用Android方法
要知道的是,在Unity脚本里写调用安卓方法的时候,这个方法还不需要存在,也不需要把安卓的代码压成jar包放进Unity工程.但是,要调用的方法必须是静态方法
刚说过的导出工程时候的包名很重要,假设是com.hu.solare;再假设在工程被导入到AS后,你在这个包中编写了MainActivity.class,其中包含静态方法onCall(String str).则你可以在Unity脚本中提前写好:
AndroidJavaClass jc = new AndroidJavaCalss("com.hu.solare.MainActivity");
jc.callStatic("onCall","String")
即可调用onCall方法
❼ 如何进行Unity3D与Android消息传递
1.Unity工程导出为Android Studio工程
首先你要写好Unity工程里面的脚本,包括你希望Android调用的方法和调用Android方法的方法,这个在下面会有详细叙述;接下来导出AS工程,方法是:
File里面的Build Settings -> 平台选择Android,在Player Setting里面设置API版本和包名(包名很重要) -> 点击Build Setting中的Google Android Project复选框 -> Export
2. AS打开导出的工程
首先随便打开一个AS工程,然后FIle -> New -> Import Project -> 选刚才导出来的工程 -> 等待Gradle -> 以此工程为基础继续开发Android代码
3. Android 调用 Unity 脚本中的方法
这里首先对Unity脚本进行一点说明,以C#为例:
在OnStart()里面要写入
this.name = "A"
某个你要调用的方法设置为public类型,名称为B,参数为C
在一个Extend UnityPlayerActivity的Activity里,直接使用
UnityPlayer.UnitySendMessage("A","B","C");
就可以调用脚本中的方法了.
4.Unity脚本调用Android方法
首先你要知道的是,在Unity脚本里写调用安卓方法的时候,这个方法还不需要存在,你也不需要把安卓的代码压成jar包放进Unity工程.
刚说过的导出工程时候的包名很重要,假设是com.hu.solare;再假设在工程被导入到AS后,你在这个包中编写了MainActivity.class,其中包含方法onCall(String str).则你可以在Unity脚本中提前写好:
AndroidJavaClass jc = new AndroidJavaCalss("com.hu.solare.MainActivity");
AndroidJavaObject jo=jc.GetStatic<AndroidJavaObject>("currentActivity");
jc.Call("onCall","String")
即可调用onCall方法.
❽ unity3d与android交互的sdk怎么接
1、打开Android Studio——>configure——Android SDK。
注意事项:
SDK可能附带了使其不能在不兼容的许可证下开发软件的许可证。例如产品供应商提供一个专有的SDK可能与自由软件开发抵触。
❾ 如何进行Unity3D与Android消息传递
UnityTestActivity.java 主Activity ,提供一个接口方法StartActivity(),它是由Unity中调用
package com.xys;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
public class UnityTestActivity extends UnityPlayerActivity {
/** Called when the activity is first created. */
Context mContext = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
}
public void StartActivity0(String name)
{
Intent intent = new Intent(mContext,TestActivity0.class);
intent.putExtra("name", name);
this.startActivity(intent);
}
}
接着是TestActivity.java 打开这个界面后,程序将在这里向Unity发送消息。
package com.xys;
import com.unity3d.player.UnityPlayer;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class TestActivity0 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView text = (TextView)this.findViewById(R.id.textView1);
text.setText(this.getIntent().getStringExtra("name"));
final EditText edit = (EditText)this.findViewById(R.id.edit);
Button close = (Button)this.findViewById(R.id.button0);
close.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//注释1
UnityPlayer.UnitySendMessage("Main Camera","messgae",edit.getText().toString());
TestActivity0.this.finish();
}
});
}
}
❿ Unity与Android交互
2、Android 书写一个Activity类继承UnityPlayerActivity
3、AndroidManifest.xml 配置Activity的meta-data属性
4、项目类型配置成com.android.library 并编译出来aar包
5、解压aar包 提取如下文件一起导入到Unity项目Assets/Plugins目录下
6、场景中添加Button组件 并创建一个C#脚本绑定到Button的父布局Canvas上
7、用VS编辑AndroidControl脚本
8、改Button位置 并且绑定Onclick对应的方法:
9、调试:加断点、附加unity程序调试,unity运行
10、编译:插入手机
11、真机演示