導航:首頁 > 操作系統 > unity3dandroidxml

unity3dandroidxml

發布時間:2022-08-24 17:10:08

1. 新手,初學Unity3d,想用Unity3d發布android的apk,但是老是報如下錯誤 :見問題補充

這種情況可能是因為sdk升級造成的,新版本的android sdk和舊版的更改不少,結構都變了了,特別是你如果用老版本的unity(3.x),就會和出現這種情況,你可以找找老版本的sdk試試,或者用最新的unity

2. unity3d是否能在android的sdcard目錄創建文件和文件夾

可以。在unity3d中的player設置裡面,在android那個選項卡下面,有個internal給改成SDCard就可以讀寫了。
自己一般在plugins的android下建立AndroidManifest.xml然後配置android的設置

3. Unity3d開發安卓游戲嵌入有米廣告的問題

安卓游戲的開發,你可以在應用寶裡面搜索一下開發製作的教程呢
有了開發製作的教程,相信你操作起來會更簡單的
應用寶裡面的資源很多,除了有大量的APP應用可以免費下載
還有很多游戲的教程和攻略呢,都是很不錯的,免費下載呢
在手機上打開應用寶軟體搜索你所需要的教程,找到下載就可以了。
也可以通過手機連接電腦端的應用寶軟體來下載的,打開PC端的應用寶軟體——手機應用。
可以通過搜索你所需要的游戲教程進行下載呢,都是很方便的。還望採納

4. 如何進行Unity3D與Android消息傳遞

Unity與Android的相互調用及消息傳遞主要採取中間件的方式。

幫你歸類一下,大致如下:

  1. 創建java項目

  2. 在Java項目中引入Unity提供的classes.jar包

  3. 編寫你自己的Java文件,同時引入com.unity3d.player.UnityPlayerActivity包

  4. 修改Manisest.xml文件

  5. 將項目導出Jar文件

  6. 在Unity中創建Plugins/Android目錄,將導出的Jar文件和Manisest.xml復制到Android目錄下

  7. 修改Unity中導出項目的包名

  8. 在項目中創建並實例化AndroidJavaClass對象,並實例化參數com.unity3d.player.UnityPlayer包

  9. 同時創建並實例化AndroidJavaObject對象,實例化參數為currentActivity

  10. 最後可以使用實例化的AndroidJavaObject.Call來調用Java中寫好的公有方法。

5. 如何在Unity3D實現Admob

Unity3d已經支持android,如何在程序里加入admob?
在https://github.com/ 中找到一些方法,並下載了一個unitypackage,把android項目的包名改成unitypackage里的包名。

用eclipse新建一個項目UnityAd,導入admob.jar包的GoogleAdMobAdsSdk-4.1.0.jar和Unity3d程序目錄下的
然後編寫一個Activity繼承UnityPlayerActivity。

Java代碼
<!-- base permission -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<!-- base permission for location-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!-- base permission required by chartboost and -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<!-- permission required by mmedia -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.microphone" android:required="false" />

AndroidManifest.xml寫成:
Xml代碼
android:value="8115000" />
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent"/>

<!-- Amazon Mobile Ads -->
<activity android:name="com.amazon.device.ads.AdActivity"
android:configChanges="keyboardHidden|orientation|screenSize"/>

<!-- InMobi -->
<activity android:name="com.inmobi.androidsdk.IMBrowserActivity"
android:configChanges="keyboardHidden|orientation|keyboard|smallestScreenSize|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:hardwareAccelerated="true" />

1.找到UnityAd項目目錄,把bin文件夾下的com文件夾打成jar包,jar包名為com.hsj.test.jar,將這個jar包拷貝到unity項目目錄下的Assets\Plugins\Android\bin中。

2.把UnityAd項目目錄下的res文件夾和AndroidManifest.xml文件拷貝到unity項目目錄下的Assets\Plugins\Android。

3.在unity項目目錄下的Assets\Plugins\Android中新建libs目錄,把GoogleAdMobAdsSdk-4.1.0.jar拷貝到libs目錄中。

4.在unity3d程序里可以看到。
5.用unity3d Build android 安裝包。
6.把安裝包放到虛擬機或真機上運行。
希望可以幫助到你,更多unity,就在納金論壇。

6. unity工程是怎麼在android上運行的

首先我們要創建一個android項目 因為項目需要使用Unity提供的介面,所以需要將介面classes.jar引入至當前工程但中。介麵包的所在地,打開Finder->應用程序->Unity->點擊Unity圖標,滑鼠右鍵選擇「顯示包內容」->Contents->PlaybackEngines->AndroidPlayer->bin->classes.jar 。介麵包引入工程後,開始編寫JAVA代碼。 UnityTestActivity是主Activity,Unity程序一起動就會調用這個Activity,它是在AndroidManifest.xml中配置的。它需要繼承UnityPlayerActivity,然而它就是剛剛我們引入的classes.jar包中提供的介面類。UnityTestActivity對外提供了兩個方法介面,StartActivity0(String name) 方法與StartActivity1(String name)方法,這兩個方法是在Unity中使用C#腳本調用的,意思是調用後程序將打開一個新的Activity,參數name也是由C#腳本傳遞過來的,接著將傳遞的String參數繼續傳遞給新打開的Activity。 接下來就是設置xml文件和布局文件了。對於會android編程的同學就很熟悉了。 把寫好的java代碼發布成jar包。接下來就創建unity工程,Unity工程中文件夾的結構如下,Plugins->Android的名稱不能修改,必需保持一致。接著把Eclipse中Android的工程文件拷貝至這里,除了Android工程中的src文件夾,將其它文件夾全部拷貝至Plugins->Android文件夾中。最後在Plugins->Android文件夾中創建bin文件夾,然後將剛剛生成的.jar文件拷貝進來,jar的名稱可以隨便修改,但是jar包裡面必須是com->xys->你的class文件,否則運行程序後提示找不到類文件。 接下來就是如何在C#中調用android的方法的代碼了。 加入如下代碼。 AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); jo.Call("StartActivity0","第一個Activity"); 先得到AndroidJavaClass,然後得到AndroidjavaObject就是當前Activity的對象,也就是我們在上面創建的主UnityTestActivity.JAVA。拿到它的對象後調用jo.Call()參數1表示調用UnityTestActivity.JAVA類中的方法名稱,參數2表示該方法傳遞過去的參數。如下圖所示:「第一個Activity」與「第二個Activit」就是我在C#中傳遞過去的字元串。 7 發布成android平台apk

7. 如何給unity3d工程加入依賴的android工程

有些sdk的接入是提供jar包,這樣的可以簡單地將jar包製作成android plugin,加入到unity工程中,打包成apk輸出。
而還有一些sdk,則是提供了一個lib工程。在sdk提供的文檔里說明,要在android工程中,通過添加依賴的方式來添加。但是對於unity工程,這個就有點不一樣。
經過多次試驗,需要步驟:
1. 將sdk工程整個工程目錄【注1】,加到plugins/android/%sdk name%目錄下
2. 同時導出jar包,將jar包放置到plugins/android/libs目錄中。
3. 然後可以選擇製作android plugin的方式,或者直接在unity3d中進行調用。
【注1:具體包含的內容為:res/目錄 libs/目錄 assets/目錄 AndroidManifest.xml .classpath project.properties .project proguard-project.txt 以及其他,依具體情況而定】
說一下在試驗過程中遇到的一個奇怪的現象。在上面的步驟中,如果跳過步驟2,使用unity3d直接生成apk(情況a),與導出eclipse工程,再使用ecliipse生成apk(情況b),會出現兩種不一樣的情況。在情況a中,若調用sdk的介面,會收到classnotfound的異常,而情況b則可以正常通過。通過查看unity工程/Temp/StagingArea/目錄,猜測,unity只是對plugins/android/%sdk name%目錄下的資源文件進行處理,而src目錄下的java文件並不處理。

8. Unity與Android的通信問題:Unity中調用Android的jar包後,Unity生成的apk安裝後找不到可運行的程序...

將Unity3D安裝目錄下的Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin\classes.jar
拷貝到Android工程的libs文件夾里:
Unity3D:[3]Unity3D與Android交互的問題
右鍵單擊classes.jar選擇Build Path裡面的Add to Build Path:
Unity3D:[3]Unity3D與Android交互的問題
Unity3D:[3]Unity3D與Android交互的問題
在MainActivity中繼承UnityPlayerActivity。刪除多餘的方法,僅保留onCreate方法中的super.onCreate語句,如下:
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
添加要在unity中調用的方法,這里添加一個帶一個參數的方法StartActivity來調用Android的Activity從而運行Android的代碼。還添加了一個有返回值的方法GetInt,用來測試在Unity中獲取android中方法的返回值。(貌似只能有一個UnityPlayerActivity,而且這個Activity不能是調用第三方SDK方法的Activity。UnityPlayerActivity只能作為Unity和Android交互的一個介面,在這裡面再去調用其他的Activity)
package com.example.unitydemo;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

import com.unity3d.player.UnityPlayerActivity;

public class MainActivity extends UnityPlayerActivity {
private Context mContext = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
}

public void StartActivity(String name) {
Intent intent = new Intent(mContext, WelcomeActivity.class);
intent.putExtra("name", name);
this.startActivity(intent);
}

public int GetInt()
{
return 1;
}
}

9. 新手,用Unity3d發布android的apk老是報錯!!求大神幫忙!!急

Android的SDK用以前的android-sdk-windows目錄試試
如果不能解決的話,就是AndroidManifest.xml的配置問題,不知道你的配置文件內容,沒法具體回答

10. 如何將unity模型導入android程序中

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://schemas.android.com/apk/res/android"
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的使用。

閱讀全文

與unity3dandroidxml相關的資料

熱點內容
法國電影一個偷畫 瀏覽:879
店長的h命令必須服從 瀏覽:94
cad填充命令是什麼 瀏覽:870
java引用類型值類型 瀏覽:240
徐錦江葉子楣方唐鏡 瀏覽:59
可以在線看片的網站 瀏覽:133
小米加密兔手機壁紙 瀏覽:613
2019程序員筆記本 瀏覽:477
武大小孩子厲害的電影有哪些 瀏覽:35
找一個可以看的網址 瀏覽:79
四個字的國外電影,小孩兒 瀏覽:411
推薦看片網站 瀏覽:652
主角叫林飛的小說是什麼 瀏覽:683
閑置伺服器能幹什麼工作 瀏覽:949
asdr q-2299123 瀏覽:987
中國最大尺度古裝電影 瀏覽:695
電影和電視播放器 瀏覽:113
櫻桃小說by小花喵 瀏覽:514
英國看片網站叫什麼名字 瀏覽:676
法蘭克plc編程軟體 瀏覽:359