2014-01-20 71 views
1
我使用Unity

和出口統一項目作爲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

回答

相關問題