Unity 안 드 로 이 드 의 Activity 호출
Unity 와 Android 의 결합 에 따 른 문제 및 해결 방법 을 적 었 습 니 다.
요약 하면 Unity 는 간단 한 장면 을 만 들 고 AndroidStudio 는 간단 한 프로젝트 를 만 들 었 는데 그 중에서 MainActivity 는 계승 해 야 한다.
Unity PlayerActivity 의 경우 Unity 프로그램 이 Android 엔 드 MainActivity 방법 을 호출 할 수 있 습 니 다.
안 드 로 이 드 프로젝트 에 뉴 액 티 비 티 가 하나 더 있다 면 유 니 티 를 통 해 열 어 보 겠 습 니 다. 어떻게 하 죠?
아래 의 예 도 인터넷 에서 찾 았 지만 운행 에 문제 가 있어 서 제 가 또 수정 을 해 야 사용 할 수 있 습 니 다.
우선, AndroidMenifest. xml 에 이 Activity 를 넣 어야 합 니 다.
xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.reach.test">
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
>
android:name=".MainActivity"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
android:name="android.intent.action.MAIN" />
android:name="android.intent.category.LAUNCHER" />
android:name="unityplayer.UnityActivity" android:value="true" />
android:name=".OpenActivity1">
위 와 같은 노 란 글자 부분.
이 OpenActivity 1 이 있 는 이상 자바 Class, OpenActivity 1 이 있 고 Activity 를 계승 할 수 있 습 니 다.
MainActivity 와 같은 경로 에서
그리고 layot 폴 더 아래 에 도 xml 부 국 파일 이 있 습 니 다. 저 는 activity 라 고 부 릅 니 다.new.xml
OpenActivity 1 의 코드 는:
package com.reach.test;
/**
* Created by Administrator on 2017/6/5.
*/
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class OpenActivity1 extends Activity{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new);
TextView text=(TextView)this.findViewById(R.id.textView1);
text.setText(this.getIntent().getStringExtra("name"));
Button close=(Button)this.findViewById(R.id.button0);
close.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
OpenActivity1.this.finish();
}
});
}
}
그 중에서 TextView 는 그 위 에 추 가 된 구성 요소 입 니 다. 먼저 신경 쓰 지 마 세 요. 가장 쉬 운 것 은 onCreate 방법 앞의 두 줄 문장 입 니 다.
유 니 티 와 의 대화 에 사용 되 는 MainActivity 코드 는 다음 과 같 습 니 다.
package com.reach.test;
import android.app.Activity;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
import android.content.Context;
import android.content.Intent;
public class MainActivity extends UnityPlayerActivity {
Activity mActivity=null;
Context mContext=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivity=this;
mContext=this;
StartActivity1(" Activity");
}
public void StartActivity1(String name)
{
Intent intent=new Intent(mContext, OpenActivity1.class);
intent.putExtra("name", name);
mActivity.startActivity(intent);
}
}
그 중에서 StartActivity 1 방법 은 OpenActivity 1 을 여 는 데 사 용 됩 니 다. 먼저 app 이 실 행 될 때 onCreate 에서 마지막 줄 이 호출 되 었 기 때문에 처음에 OpenActivity 1 을 먼저 볼 수 있 습 니 다.
한 마디 로 이 방법 은 OpenActivity 1 을 열 고 Unity 에서 호출 하 는 것 입 니 다.
그럼 뒤 돌아 보면 Unity.
우 리 는 Test. cs 라 는 스 크 립 트 를 만 들 고 장면 의 한 GameObject 에 마음대로 걸 면 됩 니 다.
코드 는 다음 과 같 습 니 다:
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.Home) || Input.GetKeyDown(KeyCode.Menu))
{
Application.Quit();
}
}
private void OnGUI()
{
if(GUILayout.Button("Open Activity", GUILayout.Height(80)))
{
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic("currentActivity");
jo.Call("StartActivity1", "Unity android ");
}
}
}
OnGui 방법 을 주로 봅 니 다.
안에 버튼 이 하나 그 려 져 있 는데, 위 에 Open Activity 가 표시 되 어 있 습 니 다.
다음 세 줄 코드 는 단 추 를 누 르 면 실행 되 는 동작 을 규정 하고 있 습 니 다. 이 단 추 를 누 르 면 Android 의 StartActivity 1 방법 을 호출 합 니 다.
OpenActivity 1 호출
앞의 두 줄 은 기본적으로 고정 용법 이다.
세 번 째 줄 은 Android 프로젝트 에서 MainActivity 의 StartActivity 1 을 호출 하 는 방법 입 니 다. 즉, OpenActivity 1 을 여 는 것 입 니 다.
여기 서 주의해 야 할 것 은 바로 두 번 째 줄 이다.
AndroidJavaObject jo = jc.GetStatic("currentActivity");
여기 서 사용 하 는 것 은 jc. GetStatic 방법 입 니 다. 문제 없습니다.
원래 의 예 는 jc. Get 방법 (뒤의 매개 변 수 는 모두 같다) 을 사 용 했 는데 실제 유 니 티 장면 에서 단 추 를 누 르 면 반응 이 없다.
또 하 나 는 원래 의 사례 에서 OpenActivity 1 이 열 린 것 도 MainActivity 의 layot 입 니 다. 즉,
setContentView(R.layout.activity_main);
이렇게 하면 앱 을 실행 하면 비켜라.
그래서 나 는 activity 를 증가 시 켰 다.new, 그리고 OpenActivity 1 을 이 layout 에 대응 하도록 합 니 다.
그래서 바 꿨 어 요.
setContentView(R.layout.activity_new);
오케이 하 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.