『壹』 unity上做的東西怎麼打包成ipad上能看的
要打包成ipad上能看的,就必須使用unity for mac版本,而這個版本你只能運行在mac上,因此你也得有台mac電腦,這是硬體條件,
軟體條件嘛,如果是正式的開發者,你必須首先成為蘋果的開發者,99美金一年,加入以後獲得開發者許可權,獲得xcode下載以及開發者密匙,這樣就能打包成ipad識別的格式。
具體流程是:
unity for mac 生成xcode文件,xcode生成app包,app包可以由xcode直接燒錄到ipad上,也可由越獄渠道生成ipa包安裝到ipad上。總之過程比較麻煩,非正式渠道的話,也可以去下載xcode生成不帶簽名的app包然後走越獄渠道。
『貳』 可以用unity製作app嗎
Unity是由Unity Technologies開發的一個讓玩家輕松創建諸如三維視頻游戲、建築可視化、實時三維動畫等類型互動內容的多平台的綜合型游戲開發工具,是一個全面整合的專業游戲引擎。但是也可以做類似交互性的、虛擬現實的app,現在網上有很多製作app的開發網站,比如應用之星等等,unity的主要功能還是做游戲比較多。app目前也很少有3d的吧
『叄』 Unity腳本生成ipa或apk的方法
如果不關心概念只關心使用方法,可略過這里,直接去到「准備環境」、「腳本構建使用方法」。
能夠使用Unity進行腳本生成ipa或apk(以下統稱app)的核心前提是:
所以,使用Unity進行腳本生成app的核心步驟是:
Environment.bat
UnityToApk.bat
UnityToXCode.sh
XCodeToIPA.sh
CommandBuild.cs
『肆』 如何把unity 集成到現有的android app
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的視圖。
『伍』 Unity工程打包到iOS平台並上傳app Store流程
公司需要將Unity工程打包上架,在這里記錄一下流程供參考。
總體流程:
一.打開unity工程,點擊運行,查看游戲圖片顯示等功能是否正常.
二.導出該工程從xcode打開.
三.在xcode上進行相關文件的添加.
四.相關參數的編輯.
五.在手機上測試無誤後生成ipa文件.
六.將生成的ipa文件上傳到 itunes connect 提交審核.
詳細流程:
一.打開unity工程,點擊運行,查看游戲圖片顯示等功能是否正常.
二.導出xcode工程:
1.File→Build Settings
2.在Platform中選擇iOS,點擊Switch Platform表示確定更換到這個平台,再打開Player Settings
3.Default Orientation 為Auto Rotation ,在Resolution and Presentation中勾出 Landscape Right(向右橫版)和LandScape Left(向左橫版). (這樣做使得進入游戲後使界面鎖定為橫版).
4.在other Setting 中Scripting Backend 選擇 IL2CPP,再在Building Setting 中進行 Build and Run,即在xcode 中生成, (選擇IL2CPP可以減少游戲的載入時間).
5.將圖標放入文件中,再拖入到default icon(這樣是為了生成各種解析度的圖標):
三.在xcode上進行相關文件的添加:
如游戲啟動界面
2.將之前導入的文件添加進工程中. (在上述過程中,替換的文件不用管,新添加的文件必須在這里導入,需要拖進工程目錄).
四.相關參數的更改
1.確認包名(Bundle Identifier),對Version 和 Build 進行更改
3.在Build Settings 中的 Build Options 中修改 bitcode為NO. (這個選項跟包的優化有關,如果你的第三方類庫不支持bitcode,就應該關掉它,一般情況都關掉,否則會報錯).
4.在Other Linker Flags 中添加 -Objc. (加了這個參數後,鏈接器會把靜態類庫中的所有Objective-C類都載入到最後的可執行文件,防止函數的調用失敗).
五.build 無誤,並且在手機上運行無異常後,即可生成ipa文件
1.點擊Edit Scheme
2.確定Archive 中的Build Configuration 為 Release.(Archive 即導出ipa文件, Release 表示正式版,對應的debug為測試版,在這里的run中 Build Configuration應為 debug,否則無法再手機上測試).
3 .在菜單欄點擊 archive,等待後,
4.選中剛生成的文件,點擊Export導出
5.選擇第一項,即是可以用開發者賬號發布app,點Next確認. (第二項用於測試包打包,第三項用於企業賬號).
6.選擇簽名證書對應的開發者,點擊choose.
7.點擊Export然後選擇導出的地址就可以在對應文件夾中看到生成的ipa文件了
七.將生成的ipa文件上傳到 itunes connect 提交審核.
1.進入Application Loader
2.選擇"交付您的應用",點擊選取,選擇剛才生成的 ipa文件.
3.進入itunes connect 選擇對應的app(這里用升級ipa為例).點擊"版本和平台",選擇iOS平台.
4.輸入新的版本號(一般在原版本號上加0.1)
5.在構建版本中選出上傳的版本(剛上傳的ipa文件會有個處理時間,屆時此處會有」+"號供點擊),上傳完後是這樣.最後保存提交審核即可.
『陸』 有沒有人用Unity3D不是做游戲而是做App的
unity做app,我只能說你的想法很時尚,app的渲染方式與游戲完全不一樣
unity 按幀固定時間繪制的
app 都是按需繪制的,只繪制臟區(更新過的區域clip)就OK了
如果unity做出app,那也會非常耗電池的。
『柒』 unity只能用來做游戲嗎可不可以用unity做應用軟體
可以,但是這么做不僅沒有意義還耗時,比如你說的酷狗音樂,unity本身所支持的只有.aif,.wav,.mp3和.ogg格式,那麼你需要針對不同平台寫解碼器來支持其他格式,而這部分工作和使用源生開發沒有什麼不通,反而還增加了與unity工程通訊的工作量
『捌』 unity3d 可以直接生成 ipa文件 放在iphone 上用么
不能,unityu3d無法生成文件,需要xcode才可以。
1.unity3d導出的是xcode工程,xcode可以發布iphone應用。
2.裝到iphone上的就是xcode導出的ipa文件和unity3d就沒關系。
3.Unity是由Unity Technologies開發的一個讓玩家輕松創建諸如三維視頻游戲、建築可視化、實時三維動畫等類型互動內容的多平台的綜合型游戲開發工具,是一個全面整合的專業游戲引擎。4.Unity類似於Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的圖型化開發環境為首要方式的軟體其編輯器運行在Windows 和Mac OS X下,可發布游戲至Windows、Mac、Wii、iPhone、Windows phone 8和Android平台。也可以利用Unity web player插件發布網頁游戲,支持Mac和Windows的網頁瀏覽。它的網頁播放器也被Mac widgets所支持。
『玖』 用Unity3D做好了自己的游戲項目,怎麼導入到android手機上玩,是不是還需要調用android的SDK
unity3d製作好的工程在導出的時候找到android sdk就能導出了~ (player setting要按照標准填寫好才可以)觸摸可以再unity中寫的,GUI上面的事件直接把滑鼠左鍵轉化成觸摸的,游戲對象中自己寫的滑鼠事件要寫成touch事件,或者用觸摸插件什麼的,總之不用再在eclipse下面改代碼啦。
『拾』 unity3d製作手機應用
可以,unity3d 的2D能力不輸於其他專門的2D引擎。
具體的手機功能需要單獨寫插件,這個對別的也是一樣。
缺點是無法即時更新腳本,也就是再編譯能力不足,不過這個事情見仁見智。
