컴퓨터 지식 네트워크 - 컴퓨터 설치 - Unity3d와 Android 간의 상호작용에 도움을 주세요.

Unity3d와 Android 간의 상호작용에 도움을 주세요.

1 Unity3D 설치 디렉터리의 Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin\classes.jar

를 Android 프로젝트의 libs 폴더에 복사합니다.

p> p>

2

classes.jar을 마우스 오른쪽 버튼으로 클릭하고 빌드 경로에서 빌드 경로에 추가를 선택합니다.

3

MainActivity에서 UnityPlayerActivity 상속 . 다음과 같이 중복된 메서드를 삭제하고 onCreate 메서드에서 super.onCreate 문만 유지합니다.

public class MainActivity extends UnityPlayerActivity {

@Override

protected void onCreate(번들SavedInstanceState) {

super.onCreate(savedInstanceState);

}

}

4

유니티로 호출할 메소드를 추가합니다. 여기서는 Android 코드를 실행하기 위해 Android의 Activity를 호출하는 StartActivity 메소드를 추가합니다. Unity의 Android에서 메서드의 반환 값을 가져오는 것을 테스트하기 위해 반환 값이 있는 GetInt 메서드도 추가되었습니다. (UnityPlayerActivity는 하나만 있을 수 있는 것으로 보이며 이 Activity는 타사 SDK 메서드를 호출하는 Activity가 될 수 없습니다.

UnityPlayerActivity는 Unity와 Android가 상호 작용하는 인터페이스로만 사용할 수 있으며, 다른 활동은 여기에서 호출할 수 있습니다.)

5

package com.example.unitydemo;

import android.content.Context;

import android.content.Intent;

import android.os.Bundle;

import com.unity3d.player . UnityPlayerActivity;

공개 클래스 MainActivity는 UnityPlayerActivity를 확장합니다. {

private Context mContext = null;

@Override

protected void onCreate(Bundle saveInstanceState ) {

super.onCreate(savedInstanceState);

mContext = this;

}

public void StartActivity(문자열 이름) {

인텐트 인텐트 = new Intent(mContext, WelcomeActivity.class)

intent.putExtra("name", name)

this.startActivity( 의도 );

}

public int GetInt()

{

return 1;

}< / p>

}

6

그런 다음 불필요한 문제를 피하기 위해 현재 프로젝트를 정리합니다.

그런 다음 Build Project에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고

내보내기를 선택합니다.

JAR 파일 선택

오른쪽의 모든 항목을 확인하고 다음을 입력합니다. JAR 경로와 이름을 입력하고 완료를 클릭하세요.

다음 디렉터리 구조를 사용하여 Unity 프로젝트에서 플러그인을 생성합니다.

bin 폴더에는 방금 내보낸 JAR 패키지가 포함되어 있습니다. libs 폴더 필요한 타사 라이브러리 파일을 배치하고 Android 프로젝트에서 res 폴더와 AndroidManifest를 직접 복사하세요.

(이동할 수 없는 res 폴더를 제외하고 나머지는 별도의 폴더에 넣지 않는 것이 가장 좋습니다. 로드할 수 있는 jar 외에는 다른 형식의 파일은 안되는 것 같습니다. )

그런 다음 Unity에서 스크립트 파일을 생성하고 다음과 같이 MainCamera에 바인딩합니다(물론 다른 개체에도 바인딩할 수 있습니다).

스크립트 파일 코드에 다음을 작성합니다:

using UnityEngine;

using System.Collections

public class Demo: MonoBehaviour {

void Start () {

}

void Update()

{

//사용자가 Return 키를 누를 때 게임을 종료하려면 휴대폰의 키 또는 홈 키

p>

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.GetStaticlt; currentActivity");

jo.Call("StartActivity" , "첫 번째 활동");

}

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.GetStaticlt; ("currentActivity"); Calllt; intgt; ("GetInt"))

}

}

}

그런 다음 APK 파일을 생성하세요. 패키지 이름을 Android 프로젝트와 동일한 패키지 이름으로 변경합니다.

테스트는 휴대폰에서만 테스트가 가능합니다.

최종 렌더링:

17

StartActivity를 클릭하여 Android 활동을 시작하고 GetInt를 클릭하면 콘솔에 1이 표시됩니다.

上篇: 말레이시아어로 번역해 달라고 하나님께 기도하세요 下篇: 트래픽을 여러 지방에서 사용할 수 있습니까?
관련 내용