Unity和Android通信系列文章2——扩展UnityPlayerActivity

1.Unity这边开发完成后,导出Android工程。 将unity切换到android环境,勾选Export Project,点击Export按钮,指定路径导出android工程。
Unity和Android通信系列文章2——扩展UnityPlayerActivity
文章图片
image.png 2.Android Studio中打开Unity导出的工程 打开Unity导出的android工程,看一下UnityPlayerActivity.class这个类。
说明:Unity导出的android工程,只有一个Acitivity,就是UnityPlayerActivity;当需要修改某些工程时,需要扩展这个类。
2.1 扩展UnityPlayerActivity.class类
需求:给unity开发的游戏添加一个默认的启动背景。
原UnityPlayerActivity.class类代码:
package com.fable.test;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.Window;
import com.unity3d.player.UnityPlayer;
public class UnityPlayerActivity extends Activity
{
protected UnityPlayer mUnityPlayer; // don't change the name of this variable; referenced from native code

// Setup activity layout @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); mUnityPlayer = new UnityPlayer(this); setContentView(mUnityPlayer); mUnityPlayer.requestFocus(); }@Override protected void onNewIntent(Intent intent) { // To support deep linking, we need to make sure that the client can get access to // the last sent intent. The clients access this through a JNI api that allows them // to get the intent set on launch. To update that after launch we have to manually // replace the intent with the one caught here. setIntent(intent); }// Quit Unity @Override protected void onDestroy () { mUnityPlayer.quit(); super.onDestroy(); }// Pause Unity @Override protected void onPause() { super.onPause(); mUnityPlayer.pause(); }// Resume Unity @Override protected void onResume() { super.onResume(); mUnityPlayer.resume(); }@Override protected void onStart() { super.onStart(); mUnityPlayer.start(); }@Override protected void onStop() { super.onStop(); mUnityPlayer.stop(); }// Low Memory Unity @Override public void onLowMemory() { super.onLowMemory(); mUnityPlayer.lowMemory(); }// Trim Memory Unity @Override public void onTrimMemory(int level) { super.onTrimMemory(level); if (level == TRIM_MEMORY_RUNNING_CRITICAL) { mUnityPlayer.lowMemory(); } }// This ensures the layout will be correct. @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mUnityPlayer.configurationChanged(newConfig); }// Notify Unity of the focus change. @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); mUnityPlayer.windowFocusChanged(hasFocus); }// For some reason the multiple keyevent type is not supported by the ndk. // Force event injection by overriding dispatchKeyEvent(). @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_MULTIPLE) return mUnityPlayer.injectEvent(event); return super.dispatchKeyEvent(event); }// Pass any events not handled by (unfocused) views straight to UnityPlayer @Override public boolean onKeyUp(int keyCode, KeyEvent event){ return mUnityPlayer.injectEvent(event); } @Override public boolean onKeyDown(int keyCode, KeyEvent event){ return mUnityPlayer.injectEvent(event); } @Override public boolean onTouchEvent(MotionEvent event){ return mUnityPlayer.injectEvent(event); } /*API12*/ public boolean onGenericMotionEvent(MotionEvent event){ return mUnityPlayer.injectEvent(event); }

【Unity和Android通信系列文章2——扩展UnityPlayerActivity】}

    推荐阅读