Unity與Android相互調用

目錄

 

•Script簡介

•unityScript生命週期

•Script通訊

•Build apk / export project

•Android Unity Project

•AndroidóUnity


Script簡介

Unity中可以使用c#unityScript

Unity中能掛在在GameObject上的都是component

Script也可以作爲component

Script必須繼承MonoBehaviour才能掛載到GameObject(create時候自動繼承)

腳本掛載

選中一個gameObject,Inspector中點擊add Component 選中腳本即可.

unityScript生命週期

Awake—場景啓動時調用所有腳本的該方法

Start—awake調用完之後,調用所有腳本是start方法

Update—場景起來之後,每一幀調用一次

Lastupdate場景起來之後,每一幀調用一次

Fixupdate一幀調用幾次(一秒60,調用一次,一秒30,調用兩次,根據當前設備性能)

調用Destory銷燬Gameobject

Gameobject上掛載的腳本會調用onDestory

Script通訊

GameObject.Find找到其它GameObject

gameObject.GetComponent找到掛在在這個gameObject上的其它component

Build apk / export project

Build setting

File—build setting

Add open scene—選擇platform—switch platform—build/export

Build apk / export project

 

Playsetting

PackageName  小寫字母,必須和androidstudio中的工程包名一致

MinMum API Level  <=androidstudio中的版本

Target API Level  <=androidstudio中的版本

 

export project

Android Unity Project

Unity 導出工程就是一個androidstudio工程

可以直接導入androidstudio

也可以自己new一個android project,unity導出的工程作爲一個model加到android project

 

以下把unity導出的工程稱之爲A, 自己新建的model稱之爲B

1.B工程的包名必須和A包名一致

2.Alib/*.jar複製到B工程的lib目錄

3.A中的assets複製到B工程中

4.A中的java文件複製到B

5.A的混淆文件複製到B

6.A中的build.gradle放到B

 

在主工程中繼承B中的java,做一部分調整來顯示unity

Android-Unity

Android call unity:

UnityPlayer.UnitySendMessage("ButtonFor3dText","onCLickButton",string);

第一個參數爲gameobject的名字

第二個參數爲gameobject捆綁的腳本中的方法

第三個參數爲方法入參(沒參數可以瞎;參數需要正確傳,只能傳一個參數,多參數只能拼接)

Unity call Android(mainActivity中的方法)

AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");

AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");

jo.Call("showToast", "ssssssssssssssssssssssss");

 

UnityPlayerActivityonCreate中有初始化com.unity3d.player.UnityPlayer

並且UnityPlay中有currentActivity靜態成員

 

showToast 這個方法UnityPlayerActivity中或者UnityPlayerActivity的子類

 

Unity call Android(普通類的中的靜態方法)

AndroidJavaClass jc = new AndroidJavaClass(“com.second.project.TestClass”);//包類名

jc.CallStatic("showLog", "CallAndroidScript", "showAndroidLog");

第一個參數方法名,後面的是可變參數列表

相當於TestClass. showLog("CallAndroidScript","showAndroidLog");

 

Unity call Android(普通類的中的非靜態方法)

AndroidJavaObject jo= new AndroidJavaObject("com.second.project.TestClass");

相當於new TestClass();

jo.Call("showLogNoStatic", "CallAndroidScript", "showAndroidLogNoStatic");

相當於testClass. showLogNoStatic("CallAndroidScript", "showAndroidLogNoStatic");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章