2015-09-24 135 views
0

我有一個Unity Android應用程序,它僅使用設備中的本機相機並開始製作一些AR。我想在一個Android項目中實現這個應用程序,我擁有所有的用戶界面(抽屜菜單,閃屏,功能等)。將Unity應用程序整合到原生Android應用程序中

這是可能的,還是我不能混合Unity應用程序和Android本地應用程序?

+0

已經找到了這個問題的一些答案,但對於IOS。這裏是鏈接:http://www.makethegame.net/?s=Add+unity3d+to+native – Nashkar

回答

0

經過一番研究,這完全有可能。

您可以將Unity活動啓動爲android原生活動。你需要將你的Unity項目導出到一個庫中,你可以從你的android項目中使用它。

0

你可以用自己的超載統一玩家活動也可以在TOT他團結項目插件你自己的活動。

下面的代碼是從一個插件,可以讓你開闢畫廊作爲活動。 (但你應該能夠做同樣的事情)

// @desc UnityProxyActivity - This class is part of Native Galley and a subset of Camera Capture Kit for Unity. 
// @author Tastybits 
// @link www.tastybits.io | https://www.assetstore.unity3d.com/en/#!/content/56673 
public class UnityProxyActivity extends Activity { 
static final String ACTION_FINISH = "com.Tastybits.ACTION_FINISH"; 
private BroadcastReceiver broadcastReceiver; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.d("Unity", "ProxyActivity: OnCreate"); 

    // Start a Gallery..... 
    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_PICK); 
    startActivityForResult(intent, 100); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    if(AndroidGallery.OpenGallery_Callback!=null) 
     AndroidGallery.OpenGalleryFireCallback(/*ok*/false, /*cancelled*/true, ""); 
} 

private String getRealPathFromURI(Uri contentURI) { 
    Cursor cursor = getContentResolver().query(contentURI, null, null, null, null); 
    if (cursor == null) { // Source is Dropbox or other similar local file path 
     return contentURI.getPath(); 
    } else { 
     cursor.moveToFirst(); 
     int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
     return cursor.getString(idx); 
    } 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
     if(AndroidGallery.OpenGallery_Callback!=null) 
      AndroidGallery.OpenGalleryFireCallback(/*ok*/false, /*cancelled*/true, ""); 
     finish(); 
    } 
    return super.onKeyDown(keyCode, event); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Log.d("Unity", "UnityProxyActivity: onActivityResult(" + requestCode + ", " + resultCode + ", " + data); 

    this.finish(); 

    if(requestCode == 100) { 

     try { 

      Uri uri = data.getData(); 
      String spath = getRealPathFromURI(uri); //uri.getPath(); 
      if(AndroidGallery.OpenGallery_Callback!=null) 
       AndroidGallery.OpenGalleryFireCallback(/*ok*/true, /*cancelled*/false, "file://"+spath); 
     } catch(Exception e) { 
      Log.d("Unity","UnityProxyActivity - caught unknown exception"); 
      if(AndroidGallery.OpenGallery_Callback!=null) 
       AndroidGallery.OpenGalleryFireCallback(/*ok*/false, /*cancelled*/false, ""); 
     } 

    } else { 
     Log.d("Unity", "NativeGallery: Unknown requestCode " + requestCode); 
    } 


}} 

你將不得不通過一些啓動活動像

Intent i = new Intent(UnityPlayer.currentActivity,com.NativeGallery.UnityProxyActivity.class); 
    UnityPlayer.currentActivity.startActivity(i); 

以下是關於如何活動從統一啓動的例子應用程序。你應該能夠用你自己的代碼替換它,或者如果你想以相反的方式來做 - 從你的活動開始統一活動,你將不得不建立一個統一的android項目,並在此基礎上擴展。

乾杯!

相關問題