Ⅰ ios或者android调用Unity的时候,如何取得函数返回值,以及传多个参数
sendmessage("what",x) 是个void 方法 如果你非要取得返回值 你可以 建一个 static 变量x嘛 然后 this.x = x; 就可以取得当前的值也可以给别的脚本使用 或者 你在方法里运算完 再存 也都可以。
至于 多个参数 unity 的 sendmessage 貌似只支持一个参数 如果你非要多个参数 再如果你的参数都是int 或者 float 或者bool类型的话你可以传递一个进去进行拆分嘛比如 要传递x=1,y=2.0f,z=true 的话 你就可以传进去 一个 string = "12true" 然后在方法体里 string.substring()拆分吧
Ⅱ unity android 返回应用会重启
UnItyanDoctoroId返回应用会重启,可能是你所说的应用和你的手机系统之间存在的不见人的现象,还有可能是手机有木马病毒查杀一下吧。
Ⅲ unity 3D 安卓上退出确认的方法
问题一:
我认为可以设定一个int值比如escapeTimes初始值设为1;当检测到“Input.GetKey(KeyCode.Escape)”后escapeTimes++;然后
if(Input.GetKey(KeyCode.Escape) && escapeTimes > 1)
{
Application.Quit();
}
最后通过协同函数检测如果按两次返回键时间间隔过长,则重置。具体代码(C#)如下:
int escapeTimes = 1;
void Update()
{
if(Input.GetKey(KeyCode.Escape))
{
//这个地方可以写“再按一次退出”的提示
escapeTimes++;
StartCoroutine("resetTimes");
if(escapeTimes > 1)
{
Application.Quit();
}
}
}
IEnumerator resetTimes()
{
yield return new WaitForSeconds(1);
escapeTimes =1;
}
关于JavaScript怎么用Coroutine协同函数你可以网络一下,转换一下就行,很简单。
问题二:
这应该是关于UI分辨率适配的问题。你可以试一下NGUI插件,我认为是一款很好的UI插件,完全可以代替Unity自身的UI。NGUI可以使用锚点“Anchor”,可以将UI固定在任意需要的位置。
完全手写,木有功劳有苦劳哦~~
Ⅳ android手机上的返回键,unity怎么表示
在Unity开发中捕捉Android的常用事件其实很简单
比如:
// 返回键
if ( Application.platform == RuntimePlatform.Android &&(Input.GetKeyDown(KeyCode.Escape)))
{
//....
}
// Home键
if ( Application.platform == RuntimePlatform.Android &&(Input.GetKeyDown(KeyCode.Home) ))
{
//.....
}
Ⅳ android手机上的返回键,unity怎么表示
在Unity开发中捕捉Android的常用事件其实很简单
比如:
// 返回键
if ( Application.platform == RuntimePlatform.Android &&(Input.GetKeyDown(KeyCode.Escape)))
{
//....
}
// Home键
if ( Application.platform == RuntimePlatform.Android &&(Input.GetKeyDown(KeyCode.Home) ))
{
//.....
}
Ⅵ unity 3D安卓上退出确认的方法是什么
问题一:
我认为可以设定一个int值比如escapeTimes初始值设为1;
当检测到“Input.GetKey(KeyCode.Escape)”后escapeTimes++;
然后
if(Input.GetKey(KeyCode.Escape) && escapeTimes > 1)
{
Application.Quit();
}
最后通过协同函数检测如果按两次返回键时间间隔过长,则重置。
具体代码(C#)如下:
int escapeTimes = 1;
void Update()
{
if(Input.GetKey(KeyCode.Escape))
{
//这个地方可以写“再按一次退出”的提示
escapeTimes++;
StartCoroutine("resetTimes");
if(escapeTimes > 1)
{
Application.Quit();
}
}
}
IEnumerator resetTimes()
{
yield return new WaitForSeconds(1);
escapeTimes =1;
}
关于JavaScript怎么用Coroutine协同函数你可以网络一下,转换一下就行,很简单。
问题二:
这应该是关于UI分辨率适配的问题。你可以试一下NGUI插件,我认为是一款很好的UI插件,完全可以代替Unity自身的UI。NGUI可以使用锚点“Anchor”,可以将UI固定在任意需要的位置。
Ⅶ 求助各位大神帮我看下 Unity3d 与 Android 交互的问题
1将Unity3D安装目录下的Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin\classes.jar
拷贝到Android工程的libs文件夹里:
2
右键单击classes.jar选择Build Path里面的Add to Build Path:
3
在MainActivity中继承UnityPlayerActivity。删除多余的方法,仅保留onCreate方法中的super.onCreate语句,如下:
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
4
添加要在unity中调用的方法,这里添加一个带一个参数的方法StartActivity来调用Android的Activity从而运行Android的代码。还添加了一个有返回值的方法GetInt,用来测试在Unity中获取android中方法的返回值。(貌似只能有一个UnityPlayerActivity,而且这个Activity不能是调用第三方SDK方法的Activity。UnityPlayerActivity只能作为Unity和Android交互的一个接口,在这里面再去调用其他的Activity)
5
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;
}
}
6
然后Clean一下当前工程,避免一些不必要的问题。
然后在Build Project
右键单击工程,选择Export
选择JAR file
右边全部勾选,输入JAR的路径和名字,然后单击finish:
在Unity项目中创建一个Plugins,如下的目录结构
其中bin文件夹放我们刚刚导出的JAR包,libs文件夹放需要用的第三方库文件,res文件夹和AndroidManifest直接从Android工程中拷贝过来。
(除了res文件夹不能动,其他的最好都不要放在单独的文件夹里面,貌似除了jar能加载出来,其他格式的文件如果放在其他目录下会加载不出来)
然后在Unity里面创建一个脚本文件,绑定在MainCamera上(当然也可以绑定在其他的对象上),如下:
在脚本文件中写如下代码:
using UnityEngine;
using System.Collections;
public class Demo : MonoBehaviour {
void Start () {
}
void Update()
{
//当用户按下手机的返回键或home键退出游戏
if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.Home) )
{
Application.Quit();
}
}
void OnGUI()
{
if (GUI.Button(new Rect(Screen.width * 0.1f, Screen.height * 0.1f, Screen.width * 0.8f, Screen.height * 0.1f), "StartActivity"))
{
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("StartActivity", "第一个Activity");
}
if (GUI.Button(new Rect(Screen.width * 0.1f, Screen.height * 0.2f, Screen.width * 0.8f, Screen.height * 0.1f), "GetInt"))
{
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
Debug.Log(jo.Call<int>("GetInt"));
}
}
}
然后生成APK文件,记得先把包名改成与Android工程一样的包名。
要测试,只能在手机上测。
最终效果图:
17
单击StartActivity,启动Android的一个Activity,单击GetInt,Console显示1
Ⅷ unity,Android游戏发布,选择路径时,窗口总是反复弹出,怎样解决
使用unity开发手机游戏时最不方便的一点是,unity默认不会帮你处理返回按钮的功能。但这个功能确实必不可少,就算是单个场景也是需要通过返回按钮退出应用的。无奈只能自己写一个~~~~
首先写一个单例,挂在第一个加载的unity场景上
public class BackHandler
{
public static BackHandler _instance = new BackHandler ( ) ;
//已加载的场景
private Stack < string > sceneOrder = new Stack < string > ( ) ;
public void PopScene ( )
{
if ( Input . GetKeyUp ( KeyCode . Escape ) )
{
if ( sceneOrder . Count > 0 )
{
SceneManager . LoadScene ( sceneOrder . Pop ( ) ) ;
}
else
{
//当sceneOrder中没有场景时推出应用
Application . Quit ( ) ;
}
}
}
public void AddScene ( String sceneName )
{
sceneOrder . Push ( sceneName ) ;
}
}
接下来是写了监听返回按钮的功能,所有的场景都挂了这个脚本
public class BackListener : MonoBehaviour
{
void Update ( )
{
BackHandler . _instance . PopScene ( ) ;
}
}
最后在跳转场景的时候加上这段代码就解决了
BackHandler . _instance . AddScene ( SceneManager . GetActiveScene ( ) . name ) ;
SceneManager . LoadScene ( "test1" ) ;
通过上面简单的几行代码基本上就实现的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;
}
}
Ⅹ Unity3dC#代码在安卓手机上怎么实现按2次返回键退出 2次
安装任务管理软将结束进程最简单。如果不想安装,就在设置-应用程序里面找到想要关闭的程序选择强制关闭就可以了