Unity3D遊戲開發之Unity與Android互動呼叫研究
各位朋友,大家好,我是秦元培,歡迎大家關注我的部落格,我的部落格地址是blog.csdn.net/qinyuanpei。在前一篇文章中,我們研究了Android平臺上Unity3D的手勢操作並在之前的基礎上實現了手勢旋轉、放縮等功能。今天呢,我們繼續來研究Unity在Android平臺上擴充套件的內容。眾所周知,Unity3D是一個強大的跨平臺遊戲引擎,和大多數喜歡Unity的朋友一樣,博主在體驗了Unity強大的跨平臺能力後,被深深地震撼了,試想以前我們如果要開發一款遊戲的話,我們需要對DX、OpenGL等圖形庫有足夠的瞭解,由於遊戲對效能的嚴格要求,諸如Unreal、CryEngine等頂級的商業遊戲引擎通常都是使用
記得"仙劍之父“姚壯憲作為評委參加Unity亞洲區的比賽時曾經感慨道:"我學生時也是痴迷於自己不斷鑽研遊戲開發,從各種小遊戲和小工具做起,並不斷的回頭優化改良以前的作品,積累經驗技巧。那時候沒有商業引擎可以用,需要自己給自己做底層引擎。現在的年輕人是幸福的,有Unity這樣向大眾公開的引擎可以學習和使用,可以把精力更多地專注在遊戲作品本身的創作,更應該把握這樣的環境"。所以相比遊戲界的前輩們用QBasic來寫《仙劍奇俠傳》這樣的遊戲作品,我們這代人無疑要幸福得多,可是我們這代人身上的擔子卻並不輕啊。如今的時代是一個多元化的時代,無論是在應用開發領域還是遊戲開發領域,目標使用者平臺多樣化成為我們不得不去面對的問題。以目前國內的移動手機平臺為例,主流的移動手機平臺就有IOS、
Unity和Android互動通常有兩種方式:
1、Unity呼叫為Android平臺編寫的外掛
2、將Unity專案匯出為Android專案,然後編寫Android程式
這兩種方式在實際的應用中各有優劣,我們今天先來講解第一種方法,第二種方法博主稍後再和大家分享。首先來說說第一種方法的原理,我們首先用Eclipse編寫一個Java的庫檔案(.Jar),在這個庫檔案中我們會封裝一系列的方法來為Unity提供介面,我們將這個庫檔案匯出後可以將其放置到一個特定的目錄下(Plugins/Android),然後我們就可以利用Unity提供的API來呼叫這些方法。好了,下面我們來看具體的過程吧,首先我們建立一個Android專案,並將其設為一個庫,這裡將其包名設為com.android.android2unity,這個包名很重要,我們在Unity中將用到這個包名。我們接下來在MainActivity.java這個類中編寫程式碼,它將作為我們封裝Android API的一個類。在編寫程式碼之前,讓我們來做這樣一件事情,將位於D:Program FilesUnityEditorDataPlaybackEnginesandroidplayer eleaseinclasses.jar(不同的計算機上,這個位置可能會有所不同,大家按照自己的路徑新增即可)這個庫加入到我們的專案中來,如圖:
這個庫是Unity為Android提供的一個庫,主要提供了支援該平臺的Player,具體的大家可以自己去檢視它的類空間。好了,我們下面編寫這樣一個指令碼:
01.
package
com.android.android2unity;
02.
03.
import
android.app.AlertDialog;
04.
import
android.content.Context;
05.
import
android.content.Intent;
06.
import
android.os.Bundle;
07.
import
android.os.Vibrator;
08.
import
android.widget.Toast;
09.
10.
11.
/*
引入Unity的包 */
12.
import
com.unity3d.player.UnityPlayerActivity;
13.
import
com.unity3d.player.UnityPlayer;
14.
15.
/*
如果需要Activity與Unity對接,可以通過繼承UnityPlayerActivity來實現 */
16.
/*
我們需要重寫Activity的相關方法,在此節程式碼中,我們只需要呼叫Android API */
17.
public
class
MainActivity
extends
UnityPlayerActivity
{
18.
19.
//當前上下文
20.
private
Context
mContext=
null
;
21.
22.
@Override
23.
protected
void
onCreate(Bundle
savedInstanceState) {
24.
super
.onCreate(savedInstanceState);
25.
//初始化上下文
26.
mContext=
this
;
27.
}
28.
29.
/*
定義一個呼叫Unity方法的方法 ,基於UnitySendMessage實現 。由於當前Activity沒有采用 */
30.
/*
Android的佈局檔案,所以我們無法使用Android的事件來完成這個方法的呼叫,我們 */
31.
/*
採用Unity呼叫的方法,雖然這樣顯得捨近求遠,可是我們知道了如何在Android中呼叫 */
32.
/*
Unity中定義的方法 */
33.
public
void
InvokeUnity(String
mStr)
34.
{
35.
UnityPlayer.UnitySendMessage(
"Vabille"
,
"SetCameraColor"
,
""
);
36.
}
37.
38.
/*
定義一個開啟Activity的方法,我們將在Unity中呼叫此方法 */
39.
public
void
StartWebView(String
mUrl)
40.
{
41.
相關推薦
Unity3D]Unity3D遊戲開發之Unity與Android互動呼叫研究
本文轉載自: http://blog.csdn.net/qinyuanpei/article/details/39348677
記得"仙劍之父“姚壯憲作為評委參加Unity亞洲區的比賽時曾經感慨道:"我學生時也是痴迷於自己不斷鑽研遊戲開發,從各種小遊戲和小工具做起,並
Unity3D遊戲開發之Unity與Android互動呼叫研究
各位朋友,大家好,我是秦元培,歡迎大家關注我的部落格,我的部落格地址是blog.csdn.net/qinyuanpei。在前一篇文章中,我們研究了Android平臺上Unity3D的手勢操作並在之前的基礎上實現了手勢旋轉、放縮等功能。今天呢,我們繼續來研究Unity在Android平臺上擴充套件的內容
[Unity3D]Unity3D遊戲開發之Unity與Android互動呼叫研究
各位朋友,大家好,我是秦元培,歡迎大家關注我的部落格,我的部落格地址是blog.csdn.net/qinyuanpei。在前一篇文章中,我們研究了Android平臺上Unity3D的手勢操作並在之前的基礎上實現了手勢旋轉、放縮等功能。今天呢,我們繼續來研究Unity
Unity3D遊戲開發之“重寫Unity Android Splash,實現啟動無黑屏”
轉自:http://www.manew.com/thread-98428-1-1.html
Splash設定相信搞unity的朋友都知道這個東西,就是遊戲啟動的時候的啟動畫面,在unity中如果不設定splash的話我們就能夠看到unity遊戲啟動的時候就會出現一張uni
Android Unity3D遊戲開發之躲避方塊
開發環境
Window 7
Unity3D 3.4
MB525 defy Android 2.1-update1
羽化的第四篇部落格,這次給大家送上自己初學Unity時寫的一個小遊戲Demo,我叫它“躲避方塊”,其實這個遊戲可以無限擴充套件,可以做成聯機
android+unity3D遊戲開發之音效播放
音效讓我們的遊戲更逼真,更有情調,呵呵,今天我們來播放一首賽車加速的音效吧。
首先先把我們的賽車音效加入到工程裡面(這個會吧,直接拖進去就行了);
然後就是新建一個javascript文字,指令碼程式碼如下:
var oldboy:Audio
【轉】【UNITY3D 遊戲開發之五】Google-protobuf與FlatBuffers資料的序列化和反序列化
★protobuf有啥缺陷?前幾天剛剛在“光環效應 ”的帖子裡強調了“要同時評估優點和缺點”。所以俺最後再來批判一下這玩意兒的缺點。◇應用 不夠廣由於protobuf剛公佈沒多久,相比XML而言,protobuf還屬於初出茅廬。因此,在知名度、應用廣度等方面都遠不如XML。由於這個原因,假如你設計的系統需要提
【UNITY3D 遊戲開發之五】Google-protobuf與FlatBuffers資料的序列化和反序列化
關於Protobuf 通過本文的轉載和分享的相關連結,足夠了解使用了,所以這裡不贅述了。但是這裡Himi順便提一下“FlatBuffers” ,它是 Protocol Buffers升級版,其主要區別在於FlatBuffers在訪問資料前不需要解析/拆包這一步。
Unity3D遊戲開發之資料持久化PlayerPrefs的使用
1、Unity3D中的資料持久化是以鍵值的形式儲存的,可以看作是一個字典。
2、Unity3D中值是通過鍵名來讀取的,當值不存在時,返回預設值。
目前,在Unity3D中只支援int、string、float三種資料型別的讀取,所以我們可以使用這三種資料型別來儲存簡單的資料。目前Unity3D中用於資料持
【Unity3D遊戲開發】material與sharedMaterial的區別 (三八)
如果你需要修改模型材質的顏色,或者是修改材質Shader的一些屬性, 通常情況是用獲取模型的Renderer元件,然後獲取它的material屬性。
舉個簡單的例子,修改顏色或者直接更換shader
material.color = Color.red;
material.shader = Resources
[Unity3D]Unity3D遊戲開發之刀光劍影特效的實現
我實在不明白有的人為什麼不喜歡武俠/仙俠類遊戲,或許是由於武俠/仙俠類遊戲身上被永遠烙上的國產標籤吧!博主最近在玩一部叫做《雨血》的遊戲,博主不禁感慨:在這樣一個流星蝴蝶不再閃爍、網遊成風、國產雙劍後續創新不足的後國產時代,居然還能夠有這樣一部再次讓博主熱血沸
Unity3D遊戲開發之如何減少安裝包大小
第一步要做的就是:看看哪些檔案是最佔空間的,那麼它們就是首選優化物件了。
你可以在剛剛完成一次build之後在“Editor Log”中找到這些資訊。
如何開啟Editor Log:
在Mac上看起來就是這樣的了:
可以看出這份log提供了一份資源總括:各種型別資源
Unity3D遊戲開發之當遊戲開發遇上Excel
各位朋友,大家好,我是秦元培,歡迎大家關注我的部落格,我的部落格地址是http://blog.csdn.net/qinyuanpei。
今天我們的話題是Excel,作為常用的辦公軟體的Excel相信大家都不陌生啦。可是如果我們認為Excel只是辦公軟體的話,那
[Unity3D]Unity3D遊戲開發之Xml解析實現NPC對話系統
各位朋友,大家好,我是秦元培,歡迎大家關注我的部落格,我的部落格地址是。今天我們來說說Unity3D中Xml的解析,為什麼要說Xml的解析呢?因為在專案中我們常常需要從外部讀取內容或者將內容以一定地形式儲存起來,而Xml就是我們最為常用的一種檔案形式。如圖所示
Unity3D遊戲開發之使用disunity提取Unity3D遊戲資源
各位朋友,大家好,我是秦元培。今天博主想和分享的是使用disunity提取Unity3D遊戲素材。這個工具呢,博主在Unity3D遊戲開發之反編譯AssetBundle提取遊戲資源這篇文章中其實已經提到過了,不過因為有些朋友對如何使用這個工具依然存在問題,所以博
Unity3D遊戲開發之C++外掛接入
各位朋友大家好,我是秦元培,歡迎大家關注我的部落格,我的部落格地址是http://qinyuanpei.com。雖然Unity3D引擎依靠強大的跨平臺能力睥睨高手林立的遊戲引擎世界,我們在使用Unity3D遊戲引擎的時候基本上不會去接觸底層的東西,可是有時候
【轉】【UNITY3D 遊戲開發之七】C# 中的委託、事件、匿名函式、Lambda 表示式
"委託是一個類,它定義了方法的型別,使得可以將方法當作另一個方法的引數來進行傳遞,這種將方法動態地賦給引數的做法,可以避免在程式中大量使用If-Else(Switch)語句,同時使得程式具有更好的可擴充套件性。"
from: http://www.himigame.com/
[Unity3D]Unity3D遊戲開發之滑鼠旋轉、縮放實現3D物品展示
各位朋友,大家好,我是秦元培,歡迎大家關注我的博主,我的部落格地址是blog.csdn.net/qinyuanpei。最近博主重點研究了攝像機旋轉、縮放等問題,那麼今天為大家分享的是一個在3D展示中比較常用的功能,即通過滑鼠右鍵實現旋轉、滑鼠滾輪實現縮放、滑鼠中鍵實現平移
Unity3D遊戲開發之SQLite讓資料庫開發更簡單
各位朋友大家好,歡迎大家關注我的部落格,我是秦元培,我是部落格地址是http://blog.csdn.net/qinyuanpei。在經歷了一段時間的忙碌後,博主終於有時間來研究新的東西啦,今天部落格向和大家一起交流的內容是在Unity3D遊戲開發中使用SQLi
Unity3D遊戲開發之虛擬現實專案開發流程
一、系統設計與資料的收集與整理
與專案投資單位溝通並進行系統設計;
收集整理規劃圖、效果圖、現場照片;
拍攝比干文化及景區介紹的專題片;
撰寫並錄製解說詞;
二、製作三維模型
主要使用三維建模軟體3dsmax的多邊形建模技術,實現三維場景模型的製作,主