Unity和Android通信系列文章2——扩展UnityPlayerActivity
1.Unity这边开发完成后,导出Android工程。
将unity切换到android环境,勾选Export Project,点击Export按钮,指定路径导出android工程。
文章图片
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】}
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- android第三方框架(五)ButterKnife
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 前任
- 2020-04-07vue中Axios的封装和API接口的管理