赞
踩
开发环境Windows平台(Unity2017.1.0f3 Personal ,Android Studio 2.3.3)
- AAR 插件 和 Android Library
- JAR 插件
- 继承UnityPlayerActivity
- Native(C++) 插件
Unity Android runtime
Untiy Android runtime通过继承自FrameLayout的UnityPlayer实现,UnityPlayer实现了触控,键盘输入,相机,位置等特性。虽然这个UnityPlayer实现了大部分的native功能,但它不是应用程序的入口。
在通用的Android Unity应用程序中,程序的入口是UnityPlayerActivity。如果你看一下APK文件反编译后的AndroidManifest.xml文件,可以看到它是如何标记UnityPlayerActivity作为应用程序的Launcher的。
查看Unity安装目录发现,UnityPlayerActivity的源码可以在C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Source中查看。
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);
getWindow().setFormat(PixelFormat.RGBX_8888); // <--- This makes xperia play happy
mUnityPlayer = new UnityPlayer(this);
setContentView(mUnityPlayer);
mUnityPlayer.requestFocus();
}
.........
// 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);
}
.........
}
可以看到UnityPlayerActivity继承自Activity,并且UnityPlayerActivity持有一个UnityPlayer实例。UnityPlayerActivity通过UnityPlayer分派native 事件。
通用的Android插件开发,通过继承UnityPlayerActivity,并使子类成为整个应用程序的LAUNCHER Activity,接下来将介绍继承UnityPlayerActivity方式的Android Plugin 。
Android Plugin需要包含Android项目中build后得到的app-debug.aar和Manifest.xml以及资源文件等,提供给Unity项目使用。文件存放在Unity项目中的/Assets/Plugins/Android。Unity项目中的代码通过app-debug.aar与封装在其中的Android代码进行交互。For more details about .aar, see Android Developer Doc. And for more information about “How Unity produces the Android Manifest”, see Unity Developer Doc
那么,接下来新建Android项目,进而生成app-debug.aar文件和
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。