1. 程式人生 > >Unity3d和Android的互相呼叫(一)

Unity3d和Android的互相呼叫(一)

摘要

遊戲開發中進行會用到和原生元件進行相互呼叫,比如說;遊戲中需要支付,那麼就會通過Unity3D調取Android介面的方法。那麼我們來看一下如何進行這個呼叫效果的。

原理

unity3d實現了這樣的結構,那麼這樣的結構是什麼呢,讓我們把他歸一歸類講解。

Unity呼叫Android的方法

  1. 沒有返回值得普通方法
    C#中呼叫方式call(String moduleName)
AndroidJavaObject jo = new AndroidJavaObject("android.content.res.Configuration");
jo.Call
("setToDefaults");

在java中的方法格式為

public void setToDefaults(){
   //你的方法邏輯
}
  1. 帶有返回值得普通方法
 AndroidJavaObject jo = new AndroidJavaObject("java.lang.String", "some string");
    int hash = jo.Call<int>("hashCode");

在java中的方法格式為

public int hashCode(){
   //你的方法邏輯
}
  1. 沒有返回值的靜態方法
AndroidJavaObject jo = new
AndroidJavaObject("android.os.Binder"); jo.CallStatic("flushPendingCommands");

在java中的方法格式為

public  static void flushPendingCommands(){
   //你的方法邏輯
}
  1. 帶有返回值的靜態方法
AndroidJavaObject jo = new AndroidJavaObject("java.lang.String");
string valueString = jo.CallStatic<string>("valueOf", 42.0);

在java中的方法格式為

public  static string valueOf(){
   //你的方法邏輯
}

Android呼叫unity3d的方法

只需要在你匯入了遊戲打包後的資料後,就可以通過如下程式碼段,來進行Android呼叫unity3d的方法了。

 UnityPlayer.UnitySendMessage("unitychan", "next", "");

UnitySendMessage中第一個引數為Unity3d中模型的名字,第二個引數為C#指令碼中的方法名,第三個為方法的引數。

注意:使用這個方法前,請確認你的Unity3d中該unitychan物件身上掛著的指令碼中有這個方法。

例如:

    void next()
    {
        anim.SetBool("Next", true);
    }

相關推薦

UnityAndroid互相呼叫方法

前言我們unity程式有很多依賴android的地方,以為很簡單,後來發現坑好多。unity只有在主執行緒才能調android的方法,在unity中調android的方法啟動執行緒都不能執行,在unity的子執行緒無法獲取AndroidJavaObject,這樣耗時方法呼叫就

Unity3dAndroid互相呼叫()

摘要 遊戲開發中進行會用到和原生元件進行相互呼叫,比如說;遊戲中需要支付,那麼就會通過Unity3D調取Android介面的方法。那麼我們來看一下如何進行這個呼叫效果的。 原

Android C++JAVA互相呼叫

 摘要:1 Java類生成c標頭檔案和庫檔案2 對於c/c++程式,啟動時先啟動jvm,然後獲得對應的java類的物件和方法。然後正常使用。最近正在做一個C/C++呼叫java的程式,這裡說的呼叫java不是使用方式 exec(/path/to/java,.....),而是呼叫一個class檔案中的一個特定的

iOS UIWebView中JSOC互相呼叫

最近做的專案中,是用html做的,我這邊直接用iOS原生的UIWebView進行載入顯示,在期間用到了js和OC的互相呼叫,這裡記錄下來      JS呼叫OC方法:         首先,什麼是JS呼叫O

jxbrowser 實現java js互相呼叫(破解版請聯絡作者)

今天我們使用jxbrowser  實現js直接呼叫java程式碼。 呼叫javaTest類的 alert方法。 主要就是給瀏覽器物件新增一個監聽,然後在頁面渲染完成之後,獲取到js的window物件,給window物件新增一個 屬性。 破解版聯絡QQ 92188819

Unity3D Android 互動時遇到的常見的兩個問題

CommandInvokationFailure: Failed to re-package resources. E:\android\android-sdk-windows\android-sdk-windows\build-tools\25.0.2\aapt.exe package

Pythonlua互相呼叫

本帖中用到的py模組是lupa,目前版本是1.7,通過pip可以直接安裝。說明一下,由於這個模組的文件非常少,只有幾個程式碼例子,所以以下所說都是根據已有的例子自己測出來的。如果有更好的辦法請回帖。 一、python呼叫lua,這個不用廢話了,照搬lupa在python社群的所有例子都可以,但要

介紹了webkit到webengine的webengine中jsC++互相呼叫的方法

pro檔案 檔案中需要加入”QT += core gui webenginewidgets”這句話,不然提示找不到檔案 QT += core gui QT += core gui webenginewidgets greaterThan(QT_MAJOR

javapython互相呼叫

        python作為一種指令碼語言,大量用於測試用例和測試程式碼的編寫,尤其適用於互動式業務場景。實際應用中,很多網管系統做的如交換機、防火牆等裝置升級,往往和裝置互動的命令以及裝置回顯的

andriod Unity 互相呼叫 以及 IOS與unity互相呼叫

if (Application.platform == RuntimePlatform.Android) { using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.Un

JniHelper javac++互相呼叫

假設兩邊檔案為:JniUtil.cpp 和 Jutil.javaJutil.java裡面 ---包名為com.abc.game方法:public static void test1() {     // ….}public void test2() {     // ….}

攔截器中,request中getReader()getInputStream()只能呼叫次,構建可重複讀取inputStream的request.

由於 request中getReader()和getInputStream()只能呼叫一次 在專案中,可能會出現需要針對介面引數進行校驗等問題。 因此,針對這問題,給出一下解決方案 step 1: 新增RepeatedlyReadRequestWrap

jsAndroid互相呼叫

首先是初始化webview 接著是 這樣就實現了呼叫。 js呼叫 Android 主要是addJavascriptInterface(object obj,String name)這個方法。obj 是傳入一個類。類種實現了js上宣告的方法。例如在js中這樣宣告 其中wi

Android JNI中CJAVA程式碼之間的互相呼叫

jobject (*CallObjectMethod)(JNIEnv*, jobject, jmethodID, ...); jobject (*CallObjectMethodV)(JNIEnv*, jobject, jmethodID, va_list); jobject

js 與 android 的互動(方法互呼叫android向 js傳遞值, js向android傳引數 事件攔截看上

mail_detail_v2.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewpor

Android與JS之間的互相呼叫互動(

Android裝置多解析度的問題Android瀏覽器預設預覽模式瀏覽 會縮小頁面 WebView中則會以原始大小顯示Android瀏覽器和WebView預設為mdpi。hdpi相當於mdpi的1.5倍 ldpi相當於0.75倍三種解決方式:1 viewport屬性 2 CS

Androidjs程式碼互相呼叫

在js中,有如下程式碼: <script> //js呼叫安卓 function sendDataToAndroid(){ //呼叫android程式中的方法,並傳遞引數。 var name = document.getE

JNI學習()(cjava層物件互相呼叫)

c層呼叫java物件 package com.example.bean; /** * * java物件 * @author telenewbie * */ public class JNI_cCalljava_test { publi

Android呼叫微信掃支付寶掃

微信在自己的應用中開啟微信掃一掃程式碼:private void toWeChatScan() { try { //利用Intent開啟微信 Uri uri =

Android原生方法Web JS互相呼叫

準備工作 新建一個Android專案準備一個html檔案,為了簡化,直接放到專案的assets目錄下呼叫JS呼叫Android原生方法 在Android專案中 配置WebView,WebView的配置中必須啟用JavaScript,新增JavaScript的入口介面,方法如