導航:首頁 > 版本升級 > 如何用3dunity打開apk文件

如何用3dunity打開apk文件

發布時間:2023-12-17 02:20:03

① Unity3D怎麼導出android的apk

在完成整個Android工程,包括添加資源、運行測試等之後,需要導出apk包供用戶使用或提交應用,那麼如何操作呢?
1.如下圖所示,freshmanquery_ad為你建立的完整的Android工程,現在需要根據它導出apk包:

2.選擇工程目錄,右鍵單擊,在彈出的菜單中選擇Export選項,如下圖所示:

3.在彈出的窗口中選擇導出類型,選擇Export Android Application即可,如下圖所示,隨後點擊Next:

4.隨後出現導出工程檢查窗口,確認導出工程是否正確,一般不會錯!如下圖,我們要導出的工程正是:freshmanquery_ad,點擊Next:

5.隨後會出現安卓簽名設置界面(不了解請網路),由於一般沒有安卓簽名,所以選擇下面的標簽建立簽名,選擇目錄、設置密碼(請記住)等就好,點擊Next:

② unity 3d導入包後怎麼使用

工具/原料

Unity3D 4.3
Windows 7
方法/步驟

如果你是第一次使用Unity3D,則可以先打開「File」》「New Project..."新建一個項目。
在彈出的對話框中選擇新的目錄

在「Project」面板中,右鍵點擊「Assets」項,

依次打開「Import Package..." -> "Custom Package..."
選擇你要導入的.unitypackage文件

在導入unitypackage文件後,可以嘗試編譯運行它

如果你是第一次編譯,Unity3D會先彈出一個編譯設置界面

顯然第一次編譯不會那麼順利,可單擊Unity3D的左下角顯示編譯的錯誤列表,如果雙擊的話還可以打開MonoDeveloper。
本文只介紹如何導入.unitypackage文件,編譯的錯誤將略過

③ 在Eclipse中怎麼才能讓一個android工程訪問unity導出的apk文件

1.Android端代碼可以在Eclipse中開發(AndroidStudio沒有試,應該也可以)

2.Unity3D端代碼要在Unity中開發

3.Android和Unity3D端,兩邊都需要加入一些代碼從而可以使之關聯交互。

4.將Android端代碼編譯成jar文件以插件形式放入到Unity端中

5.在Unity中將整個項目Build成apk文件,然後安裝到手機或模擬器里運行

本文主要講解1,2,3。對於4,5建議大家去看雨松MOMO的Unity博客的第17篇和第18篇。

UnityPlay:

在編寫Android端和Unity3d端代碼前,有必要先了解一下可以使兩部分交互的類UnityPlay。

個人理解UnityPlay是個Unity提供給外部交互的一個介面類。

為什麼是「個人理解」?這我不得不爆粗口了,TMD官網根本就沒有相關的API和文檔(如果大家有誰找到一定給我來一份,就當我罵自己了)。

在關聯Android時,想拿到UnityPlay以及相關類的jar包可以從下面的地址找到:Unity安裝路徑\Editor\Data\PlaybackEngines\androidplayer\bin在bin文件夾下有一個classes.jar的jar文件,它就是我們想要的。

而在bin同目錄下有一個src文件,點擊到最後有3個類,分別是UnityPlayerActivity.java,UnityPlayerProxyActivity.java,UnityPlayerNativeActivity.java。前兩個打開個後只有一行代碼,說的是UnityPlayerActivity和UnityPlayerProxyActivity都繼承自UnityPlayerNativeActivity。而打開UnityPlayerNativeActivity中居然有代碼,而且我估計這應該是UnityPlayerNativeActivity的源碼。

由於關於UnityPlay的資料我只找到這么一個,所以我把UnityPlayerNativeActivity中的代碼都貼出來,如果我註解有不對的地方希望大家指正。

/**
* UnityPlayerActivity,UnityPlayerProxyActivity都繼承自UnityPlayerNativeActivity
* 而UnityPlayerNativeActivity繼承自NativeActivity
* 在該類里定義了一些和ANDROID生命周期相同的回調方法,留給自定義的Activity子類重寫。
*/
public class UnityPlayerNativeActivity extends NativeActivity
{
//UnityPlayer的引用,並且我們不能改變這個引用變數的名字,它被native code所引用
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);

// 創建一個UnityPlayer對象,並賦值給全局的引用變數
mUnityPlayer = new UnityPlayer(this);
//為UnityPlayer設置一些參數
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;
// UnityPlayer.init()方法需要在將view附加到layout之前調用。它將會調用native code
mUnityPlayer.init(glesMode, trueColor8888);

// 從UnityPlayer中獲取到Unity的View視圖
View playerView = mUnityPlayer.getView();
// 將Unity視圖載入到根視圖上
setContentView(playerView);
// 使Unity視圖獲取焦點
playerView.requestFocus();
}
protected void onDestroy ()
{
// 當Activity結束的時候調用UnityPlayer.quit()方法,它會卸載之前調用的native code
mUnityPlayer.quit();
super.onDestroy();
}

// 下面幾個方法都是ANDROID相關回調方法,確保在ANDROID執行相應方法時UnityPlayer也需調用相應方法
protected void onPause()
{
super.onPause();
mUnityPlayer.pause();
}
protected void onResume()
{
super.onResume();
mUnityPlayer.resume();
}

public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
mUnityPlayer.configurationChanged(newConfig);
}
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
mUnityPlayer.windowFocusChanged(hasFocus);
}
public boolean dispatchKeyEvent(KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_MULTIPLE)
return mUnityPlayer.onKeyMultiple(event.getKeyCode(), event.getRepeatCount(), event);
return super.dispatchKeyEvent(event);
}
}
看完這個類後就知道了為什麼在自定義的Activity中繼承了UnityPlayerActivity等類以後,只要重寫了onCreate並調用super.onCreate()方法後不需要任何其他的代碼就會自動的顯示出Unity3D的視圖。因為初始化Unity視圖的代碼都在UnityPlayerNativeActivity父類中實現了。

ANDROID端代碼:

在寫ANDROID代碼的時候,一定要導入Unity3D提供給我們的jar包,jar包的位置我在上面說了。引入jar包加入到buildpath中這些最基本的我就不多說了。

要想和Unity交互,我們就不能繼承ANDROID提供給我們的Activity,我們需要繼承剛才jar包中引入的Unity提供的Activity類,一共有這么3個:

UnityPlayerActivity,UnityPlayerProxyActivity,UnityPlayerNativeActivity。具體區別不知道,因為沒有文檔,沒有API,沒有源碼(這里再次鄙視一下)。剛才我們看過UnityPlayerNativeActivity的代碼(雖然很短,但我覺得這個就是源碼),知道UnityPlayerActivity,UnityPlayerProxyActivity都是它的子類,而且最終父類為NativeActivity。所以我們繼承Unity提供的最外層的子類是最好的選擇,我這里選擇的是UnityPlayerActivity,因為名字最簡單,覺得該封裝的都應該封裝好了。

public class MainActivity extends UnityPlayerActivity {

private Button topButton;
private Button bottomButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 設置test為我們的根布局
setContentView(R.layout.test);

// 通過剛才的源碼分析,知道mUnityPlayer為一個全局的引用變數,而且已經在父類中設置好了,所以直接拿來用就可以了
View playerView = mUnityPlayer.getView();
// 將Unity的視圖添加到我們為其准備的父容器中
LinearLayout ll = (LinearLayout) findViewById(R.id.unityViewLyaout);
ll.addView(playerView);

// 上面的button設置監聽器
topButton = (Button) findViewById(R.id.topButton);
topButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
//發送消息給Unity端,該函數第一個參數為接受消息的類對象,第二個該類對象用接受消息的方法,第三個參數為傳遞的消息
//所以下面的意思就為:調用Main Camera下面的Previous方法,傳送的消息為空
UnityPlayer.UnitySendMessage("Main Camera","Previous","");
}
});

// 為下面的button設置監聽器
bottomButton = (Button) findViewById(R.id.bottomBtn);
bottomButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
//調用Main Camera下面的Next方法,傳送的消息為空
UnityPlayer.UnitySendMessage("Main Camera","Next","");
}
});
}
}
最後看一下Android端的布局文件,布局很簡單,上下各有一個button按鈕,兩個按鈕中間是Unity的視圖。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://www.naile-cn.com"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button
android:id="@+id/topButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text="PREVIOUS" />

<LinearLayout
android:id="@+id/unityViewLyaout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottomBtn"
android:layout_below="@+id/topButton"
android:orientation="horizontal" >
</LinearLayout>

<Button
android:id="@+id/bottomBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="NEXT" />

</RelativeLayout>
Android端的代碼就介紹完了,很簡單。唯一的難點就是UnityPlayerActivity和UnityPlayer的使用。

④ apk文件要怎麼打開

APK是Android Package的縮寫,即Android安裝包(apk)。APK文件盒Symbian Sis或Sisx的文件格式差不多。通過將APK文件直接傳到Android模擬器或Android手機中,然後執行並安裝。apk文件和sis一樣,把android sdk編譯的工程打包成一個安裝程序文件,這個文件的格式為apk。APK文件其實是zip格式的一個壓縮包,但後綴名被修改為apk,通過UnZip解壓後,我們就可以看見Dex文件,Dex是Dalvik VMexecutes的全稱,即Android Dalvik執行程序,並非Java ME的位元組碼而是Dalvik位元組碼。在Android平台中dalvikvm的執行文件被打包為apk格式,最終運行時就會被載入器解壓然後獲取編譯後的android manifest.xml文件中的permission分支相關的安全訪問,但是仍然擁有很多限制,如果你將apk文件傳到/system/app文件夾下會發現執行是不受限制的。安裝的文件可能不是這個文件夾,而在android rom中系統的apk文件默認會放入這個文件夾,它們擁有著root許可權。
Android是現在非常流行的一個智能手機,應用也非常的多,安裝方法也有很多種。下面我們大家介紹一下apk文件怎麼打開和如何安裝apk文件。Android系統上的軟體擴展名格式都是「.apk」。如果你下載的軟體是rar或者zip的話,打開該壓縮包,然後我們查看一下它是不是一個apk文件結構,如果只有一個apk文件就把它解壓出來,否則將該壓縮文件的擴展名直接改為「.apk」。apk格式的應用我們可以去互聯網下載。apk文件安裝圖文教程

⑤ unity項目文件打不開

一個unity只能打開一個項目,但這個項目中可以有多個場景

當然也可以多開unity或者用不同的unity版本來打開不同的項目

  1. Android端代碼可以在Eclipse中開發(AndroidStudio沒有試,應該也可以)

2.Unity3D端代碼要在Unity中開發


3.Android和Unity3D端,兩邊都需要加入一些代碼從而可以使之關聯交互。


4.將Android端代碼編譯成jar文件以插件形式放入到Unity端中


5.在Unity中將整個項目Build成apk文件,然後安裝到手機或模擬器里運行

你是指的是將嵌入html頁面的.unity3d文件作為獨立軟體運行吧?這個是不能獨立運行的,如果要在單機上打開文件可以有下面幾種方法:

將文件嵌入頁面,如果你已經下載並安裝了unitywebplayer插件,是可以離線打開頁面的,如果你不想通過瀏覽器來看,那麼這個方法可能不適合你;

用Visual Studio編寫一個軟體(用C#、VB、VC++各種語言都可以),在窗體中放一個WebBrowser控制項,然後將WebBrowser控制項的url屬性設置為需要顯示的頁面文件(嵌入了.unity3d文件)的路徑,這樣看起來就是一個獨立的軟體了。

原理同上,安裝了unitywebplayer插件後,在窗體中放一個UnityWebPlayer Control控制項(要添加COM組件到工具箱),將控制項的src屬性設為你需要顯示的.unity3d文件路徑,這樣也可以成為一個獨立運行的軟體,還可以通過組件的SendMessage方法與場景交互。效果如下:


這個是最徹底的,如果你有工程源碼,重新發布成獨立運行的軟體就行了。

閱讀全文

與如何用3dunity打開apk文件相關的資料

熱點內容
剛復制的文件找不到怎麼辦 瀏覽:724
試運行適用於哪些體系文件 瀏覽:987
ghost文件復制很慢 瀏覽:967
傑德原車導航升級 瀏覽:240
編程dest是什麼意思 瀏覽:935
linux埠鏡像 瀏覽:820
iphone5屏幕清塵 瀏覽:157
機頂盒密碼怎麼改 瀏覽:672
w7系統下載32位教程 瀏覽:618
pcb文件包括哪些內容 瀏覽:598
g00文件 瀏覽:607
用bat程序刪除程序 瀏覽:516
dnf鬼泣90版本打安圖恩 瀏覽:668
245倒角編程怎麼計算 瀏覽:599
可以買生活用品的app有哪些 瀏覽:175
cad在c盤產生的文件夾 瀏覽:541
聯想手機解鎖工具 瀏覽:696
瑞銀3887win10 瀏覽:833
學網路編程哪個好 瀏覽:805
手機vmos導入的文件在哪裡 瀏覽:115

友情鏈接