資源描述:
《Android游戲開發(fā)教程》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、Android游戲開發(fā)Android游戲開發(fā)教程 如果你有興趣為Android平臺開發(fā)游戲,有很多你需要了解的東西。如果你有過游戲開發(fā)經(jīng)驗,那么轉(zhuǎn)移到移動平臺上來將不是特別困難。你主要只需學(xué)習(xí)其架構(gòu)以及API就行了。如果你是一名游戲開發(fā)新手,我總結(jié)了一張列表,上面有你必需知道的東西,供你起步用。這些知識適用于很多類型的游戲,包括動作類、策略類、模擬類和益智類。 Android是一個基于Java的環(huán)境。這對初學(xué)者來說是個好消息,因為相對于C++,Java被廣泛認(rèn)為是一門更容易上手的語言,它是移動開發(fā)的規(guī)范。Google也做
2、了一件出色的工作,它將API文檔化并提供示例代碼供使用。其中有個叫做APIDemos的示例幾乎展示了所有API的功能。如果你熟悉Java并且用過Eclipse,要讓你的第一個應(yīng)用跑起來那是相當(dāng)簡單。如果你以前從沒寫過代碼,在你前進(jìn)路上還要學(xué)習(xí)很多,但別氣餒。 獲取SDK 新手上路的第一步便是獲取AndroidSDK(軟件開發(fā)工具包)。SDK里有一個核心類庫,一個模擬器,一些工具和示例代碼。我強烈建議使用Eclipse和AndroidEclipse插件。如果你玩Android的話,Android游戲開發(fā)EclipseIDE
3、對Java開發(fā)者來說很好用。如果這是你第一次開發(fā)Java項目,你可能會需要下載全套JDK,它里面包括簽名和部署你的應(yīng)用程序的一些工具?! W(xué)習(xí)應(yīng)用程序架構(gòu) 別急著一頭扎進(jìn)開發(fā)的海洋里,理解Android應(yīng)用程序架構(gòu)是很重要的。如果你不學(xué)一下,你設(shè)計出來的游戲在線下將很難調(diào)試。你將需要理解Applications、Activities、Intents以及它們怎樣相互聯(lián)系。Google提供了很多有用的架構(gòu)信息。真正重要的是要理解為什么你的游戲需要多于一個的Activity,以及什么才是設(shè)計一個有良好用戶體驗的游戲。要理解這些,
4、首先要了解什么是Activity生命周期?! W(xué)習(xí)Activity生命周期 Activity生命周期由Android操作系統(tǒng)來管理。你的activity創(chuàng)建、恢復(fù)、暫停、銷毀都受操作系統(tǒng)的支配。正確處理這些事件是很重要的,這樣應(yīng)用程序才能表現(xiàn)良好,做用戶認(rèn)為正確的事。在你設(shè)計你的游戲之前了解所有這些是如何工作的是件好事,因為以后你可以為自己節(jié)省調(diào)試時間和昂貴的重新設(shè)計時間。對大多數(shù)應(yīng)用來說,默認(rèn)的設(shè)置將工作正常,但對于游戲,你可能需要考慮將SingleInstance標(biāo)志打開。當(dāng)設(shè)置為默認(rèn)時,Android在它認(rèn)為合適An
5、droid游戲開發(fā)時會創(chuàng)建activity的新實例。對于游戲來說,你可能只需要一個游戲activity的實例。這對于你要怎樣管理事務(wù)的狀態(tài)有些影響,但對于我來說,這解決了一些資源管理的問題,應(yīng)予以考慮。 主循環(huán) 根據(jù)你寫的游戲的類型,你可能需要也可能不需要一個主循環(huán)。如果你的游戲不依賴于時間或者它僅僅對用戶所做的加以回應(yīng),并且不做任何視覺上的改變,永遠(yuǎn)等待著用戶的輸入,那么你就不需要主循環(huán)。如果你寫的是動作類游戲或者帶有動畫、定時器或任何自動操作的游戲,你應(yīng)該認(rèn)真考慮下使用主循環(huán)?! ∮螒虻闹餮h(huán)以一個特定的順序通常盡可
6、能多的在每秒鐘內(nèi)“滴答”提醒子系統(tǒng)運行。你的主循環(huán)需要在它自己的線程里運行,原因是Android有一個主用戶界面線程,如果你不運行自己的線程,用戶界面線程將會被你的游戲所阻塞,這會導(dǎo)致Android操作系統(tǒng)無法正常的更新任務(wù)。執(zhí)行的順序通常如下:狀態(tài),輸入,人工智能,物理,動畫,聲音,錄像?! 「聽顟B(tài)意思是管理狀態(tài)轉(zhuǎn)換,例如游戲的結(jié)束、人物的選擇或下一個級別。很多時候你需要在某個狀態(tài)上等上幾秒鐘,而狀態(tài)管理應(yīng)該處理這種延遲,并且在時間過了之后設(shè)置成下一個狀態(tài)。Android游戲開發(fā) 輸入是指用戶按下的任何鍵、對于滾動條的
7、移動或者用戶的觸摸。在處理物理之前處理這些是很重要的,因為很多時候輸入會影響到物理層,因而首先處理輸入將會使游戲的反應(yīng)更加良好。在Android里,輸入事件從主用戶界面線程而來,因此你必須寫代碼將輸入放入緩沖區(qū),這樣你的主循環(huán)可以在需要的時刻就從緩沖區(qū)里取到它。這并非難事。首先為下一個用戶輸入定義一個域,然后將onKeyPressed或onTouchEvent函數(shù)設(shè)為接到一個用戶動作就放到那個域里,有這兩步就夠了。如果對于給定游戲的狀態(tài),這是一個合法的輸入操作,那么所有輸入需要在那一刻做的更新操作都已經(jīng)定下來了,剩下來就讓物
8、理去關(guān)心怎樣響應(yīng)輸入吧?! ∪斯ぶ悄芩龅念愃朴谟脩粼跊Q定下一個要“按”哪個按鈕。學(xué)習(xí)怎樣寫人工智能程序超出了這篇文章的范圍,但大體的意思是人工智能會按照用戶的意圖來按按鈕。這些也有待物理去處理和響應(yīng)吧?! ∥锢砜赡苁且部赡懿皇钦嬲奈锢?。對于動作類游戲來說,關(guān)鍵點是要考慮到上一次更新的時