和出口統一項目作爲Eclipse項目原生Android的活動,並在Java touchevents使用Unity3D
這導致一個簡單的NativeApplication
public class UnityPlayerNativeActivity extends NativeActivity
{
protected UnityPlayer mUnityPlayer;
protected void onCreate (Bundle savedInstanceState)
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
getWindow().takeSurface(null);
setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
getWindow().setFormat(PixelFormat.RGB_565);
mUnityPlayer = new UnityPlayer(this);
if (mUnityPlayer.getSettings().getBoolean ("hide_status_bar", true))
getWindow().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1);
boolean trueColor8888 = false;
mUnityPlayer.init(glesMode, trueColor8888);
Button b = new Button(this);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Hello From Java",).show(); } });
RelativeLayout layout = (RelativeLayout) View.inflate(this, R.layout.layout, null);
layout.setLayoutParams(new LayoutParams(300,30));
layout.addView(b);
mUnityPlayer.addView(layout);
View playerView = mUnityPlayer.getView();
setContentView(playerView);
正如你可以看到我有需要在unity佈局的頂部添加了一個我正在膨脹的relativeLayout。
但是,由於統一居住在本機代碼和類是NativeActivity的 我的按鈕將不會在Java中工作的觸摸事件 - 通過 由於統一編譯成一個DLL我沒有訪問本地代碼發送( JNI)觸摸事件返回到Java
是否有另一種方法來做到這一點? 我怎樣才能讓觸發事件在Java中被觸發?或者我該如何編寫可以捕獲NDK中的觸摸事件的本地活動的擴展,以便我可以將它們傳遞給java?
我覺得有趣的是,如果我不使用統一視圖,只是setcontentview我自己的佈局 - 觸摸事件做java端 工作,但第二我使用統一視圖我不再可以使用觸摸事件在Java