Ⅰ 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次
安裝任務管理軟將結束進程最簡單。如果不想安裝,就在設置-應用程序裡面找到想要關閉的程序選擇強制關閉就可以了