




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
摘要隨著時(shí)間的推移,人們的生活方式發(fā)生了重大的變化,在生活中也積累了各種各樣的壓力,學(xué)習(xí)上的壓力、生活上的壓力等等,且各方面的壓力越來(lái)越大,所以人們通過(guò)尋找各種方式來(lái)釋放自身的壓力,其中游戲成為一種不錯(cuò)的選擇,游戲也因此開(kāi)始發(fā)展。隨著時(shí)代還有科技發(fā)現(xiàn),游戲數(shù)量和種類越來(lái)越多,并且隨著硬件和軟件性能的不斷提高,游戲的質(zhì)量與娛樂(lè)性也越來(lái)越高。如繁星般多的游戲的誕生,漸漸融入人們的生活中,促使了游戲廣闊的發(fā)展前景。沙盒游戲是眾多類型游戲里面其中比較特別的一種。沙盒游戲起源于沙盤(pán)游戲,沙盤(pán)游戲原本就是由玩家利用各種素材搭建出自己獨(dú)特的場(chǎng)景的一種游戲,沙盒游戲也正好繼承了這一特點(diǎn)。眾多不同主題的沙盒游戲里面,都有一些共同的特點(diǎn),例如沒(méi)有清晰明確的主線,所有事件都要玩家自己觸發(fā);玩家最根本的目標(biāo)是在游戲中活下去,其次是探索地圖;地圖廣闊,由多種多樣的游戲環(huán)境組成;游戲元素多樣化,多種元素共存一體,還有最大的特點(diǎn)是玩家可以改變世界,甚至是創(chuàng)造世界。本論文探究基于Unity3D的仿Minecraft游戲的開(kāi)發(fā)。在沙盒式游戲中,Minecraft是極為出名的,它可以讓玩家可以肆無(wú)忌憚地發(fā)揮其創(chuàng)作才能。通過(guò)學(xué)習(xí)制作一個(gè)仿Minecraft的沙盒式游戲,不僅可以學(xué)習(xí)到如何制作一款沙盒游戲,學(xué)會(huì)使用Unity3D開(kāi)發(fā)游戲,還可以培養(yǎng)我們的分析與解決問(wèn)題的能力。本篇論文圍繞本游戲基本的需求功能,來(lái)設(shè)計(jì)出本沙盒游戲的大概的組成部分,然后再編寫(xiě)腳本代碼來(lái)實(shí)現(xiàn)游戲需求中的各個(gè)功能。關(guān)鍵詞:Unity3DMinecraft沙盒游戲
Abstract Withthepassageoftime,people'slifestyleshaveundergonemajorchanges,andvariouskindsofpressureshaveaccumulatedintheirlives.Thepressuresonlearning,thepressuresonlife,etc.,andthepressuresinallaspectsareincreasing.,Sopeoplefindwaystoreleasetheirpressure,andgameshavebecomeagoodchoice,andgameshavestartedtodevelop.Withtheeraofscienceandtechnologyalsofoundthatthenumberandtypeofgamemoreandmore,andwiththecontinuousimprovementofhardwareandsoftwareperformance,qualitygamesandentertainmenthavebecomemoresophisticated.Thebirthofgamesasmanyasstarshasgraduallyintegratedintopeople'slives,promptingthegame'sbroaddevelopmentprospects.Sandboxgamesareaspecialoneofmanytypesofgames.Thesandboxgameoriginatedfromthesandboxgame.Thesandboxgamewasoriginallyagamewhereplayersusedvariousmaterialstobuildtheirownuniquescenes.Thesandboxgamealsoinheritedthisfeature.Manysandboxgameswithdifferentthemeshavesomecommonfeatures.Forexample,thereisnoclearmainline,andalleventsmustbetriggeredbytheplayer;themostbasicgoaloftheplayeristosurviveinthegame,followedbyexploringthemap;themapisvastItconsistsofavarietyofgameenvironments;gameelementsarediversified,multipleelementscoexisttogether,andthebiggestfeatureisthatplayerscanchangetheworldorevencreatetheworld.Inthispaper,basedonUnity3DexplorethedevelopmentofimitationMinecraftgame.Insandboxgames,Minecraftisextremelyfamous,itallowsplayerstounleashtheircreativeabilitieswithimpunity.BylearningtomakeasandboxgamethatmimicsMinecraft,youcannotonlylearnhowtomakeasandboxgame,learntouseUnity3Dtodevelopgames,butalsocultivateourabilitytoanalyzeandsolveproblems.Thispaperfocusesonthebasicrequirementsofthisgametodesigntheapproximatecomponentsofthissandboxgame,andthenwritescriptcodetorealizethevariousfunctionsinthegamerequirements.Keywords:Unity3DMinecraftSandboxgame廣東東軟學(xué)院本科畢業(yè)設(shè)計(jì)(論文)目錄第一章緒論 第一章緒論1.1選題的目的和意義科技的不斷發(fā)展,讓人們的生活水平越來(lái)越高,游戲也變成人們生活中的一部分,對(duì)玩家而言更是如此。玩家的需求讓電子游戲的內(nèi)容與形式越來(lái)越多樣化,對(duì)游戲的各方面的要求也越來(lái)越高。其中因大多數(shù)玩家的需求,更真實(shí)的感官體驗(yàn)自然而然地變成了玩家們的追求,而玩家們的追求促使它逐漸演變成電子游戲的一種發(fā)展方向,這時(shí),3D游戲這一分類出現(xiàn)在玩家們的視線里,如期望般讓玩家?guī)?lái)真實(shí)的感官體驗(yàn)。與傳統(tǒng)的2D游戲相比,3D游戲能讓用戶在視覺(jué)上感覺(jué)更加真實(shí)和享受。因此,做一款3D游戲,不僅是為了符合玩家們的口味,也是為了迎合游戲市場(chǎng)的需求,在游戲市場(chǎng)站穩(wěn)腳跟。Unity3D是2004年由一家美國(guó)的視頻游戲開(kāi)發(fā)商開(kāi)發(fā)的一款游戲開(kāi)發(fā)引擎,因?yàn)閁nity3D操作簡(jiǎn)單,窗口功能明確,自身功能強(qiáng)大,使得一些想進(jìn)入游戲開(kāi)發(fā)行業(yè)的人員可以快速入門(mén),也吸引了不少游戲開(kāi)發(fā)人才學(xué)習(xí)使用Unity3D開(kāi)發(fā)游戲;使用Unity3D開(kāi)發(fā)游戲的成本較低,而且開(kāi)發(fā)周期相對(duì)較短,所以Unity3D的使用在游戲行業(yè)前景上十分廣闊。Unity3D的各種特點(diǎn)優(yōu)點(diǎn),加上目前游戲市場(chǎng)前景相對(duì)不錯(cuò),使得許多游戲公司想用Unity3D開(kāi)發(fā)的游戲在游戲市場(chǎng)分一杯羹,因此各個(gè)游戲公司都開(kāi)始高薪招聘使用Unity3D開(kāi)發(fā)游戲的游戲開(kāi)發(fā)人才。積極的游戲市場(chǎng)、誘人的工作薪資,還有許多樂(lè)觀的因素,使得Unity3D游戲開(kāi)發(fā)的前景越來(lái)越好。從各種游戲視頻中,其實(shí)可以發(fā)現(xiàn)在很多游戲和3D技術(shù)開(kāi)發(fā)使用中都或多或少有一些Unity3D的影子,例如在一些游戲里會(huì)有第三人稱視角和第一人稱視角之間的來(lái)回切換的功能,在Unity3D中通過(guò)對(duì)攝像機(jī)的來(lái)回切換就可以實(shí)現(xiàn)這樣的功能。豐富的功能,簡(jiǎn)單的操作,低廉的成本,廣闊的市場(chǎng),這就是Unity3D為什么如此火的原因。Minecraft,看著這個(gè)英文名可能有人知道是什么,但很多人應(yīng)該是對(duì)這個(gè)英文單詞一臉陌生,其實(shí)翻譯過(guò)來(lái)就是我的世界。在眾多的沙盒式游戲中,我的世界可以說(shuō)是最出名的,在世界各地都有這款游戲的玩家。在我的世界里,玩家可以對(duì)開(kāi)放式的無(wú)限地形做出任意的改變,隨地可得的游戲素材,有大概的主線劇情和豐富的支線成就系統(tǒng),讓人眼花繚亂的合成系統(tǒng),多種玩法模式選擇,模仿現(xiàn)實(shí)生活中數(shù)字電路的紅石電路,允許加入各種游戲mod豐富游戲模型和玩法,這些特性將這個(gè)游戲變得與現(xiàn)實(shí)世界更加貼合,讓各種游戲玩家都可以在這個(gè)游戲里面找到符合自身興趣的玩法,讓各種藝術(shù)創(chuàng)作者可以在我的世界里面創(chuàng)作出屬于自己獨(dú)一無(wú)二的作品。多種多樣的游戲特性再加上簡(jiǎn)單易懂的操作過(guò)程,使得游戲在上線沒(méi)多久就吸引了眾多玩家進(jìn)入這個(gè)創(chuàng)作無(wú)限的開(kāi)放性沙盒游戲,到現(xiàn)在我的世界已經(jīng)衍生出許多二次藝術(shù)創(chuàng)作。本次選擇模仿我的世界的無(wú)限隨機(jī)地形和基本玩法,制作一款簡(jiǎn)單的仿Minecraft(我的世界)的沙盒游戲。同時(shí)選擇制作這沙盒游戲?yàn)檎n題也是想通過(guò)熱門(mén)游戲的形式來(lái)熟悉和了解Unity的相關(guān)技術(shù)操作,從而在未來(lái)能在開(kāi)發(fā)3D游戲的主流趨勢(shì)下站住腳跟。1.2國(guó)內(nèi)外的研究與發(fā)展現(xiàn)狀1.2.1國(guó)外發(fā)展的現(xiàn)狀在1969年的歐美國(guó)家,第一款網(wǎng)絡(luò)游戲悄然誕生,有個(gè)人為“柏拉圖”(PLATO:ProgrammedLogicforAutomaticTeachingOperation)系統(tǒng)編寫(xiě)了一個(gè)軟件,這款軟件可以同時(shí)讓兩個(gè)用戶聯(lián)機(jī)打同一款游戲,這就是網(wǎng)絡(luò)游戲最初的雛形。之后在九十年代初,世界第一款3D第一人稱射擊游戲被美國(guó)的IDsoftware的創(chuàng)始人之一的約翰·卡馬克與他的團(tuán)隊(duì)開(kāi)發(fā)出來(lái),其公司研發(fā)的Doom游戲引擎也成為歷史上第一個(gè)3D游戲引擎。在20世紀(jì)末,世界各主要發(fā)達(dá)國(guó)家的游戲產(chǎn)業(yè)格局已基本形成并開(kāi)始大規(guī)模發(fā)展,其中日本因?yàn)樽匀毁Y源相對(duì)匱乏,看到游戲產(chǎn)業(yè)發(fā)展前景的日本政府便選擇游戲娛樂(lè)產(chǎn)業(yè)為國(guó)家提供經(jīng)濟(jì)收入的途徑之一,而游戲產(chǎn)業(yè)也不負(fù)眾望,成為國(guó)民經(jīng)濟(jì)的重要支柱。游戲產(chǎn)業(yè)初露鋒芒,世界多個(gè)經(jīng)濟(jì)強(qiáng)國(guó)都嗅到了金錢(qián)的味道,紛紛把游戲產(chǎn)業(yè)當(dāng)做國(guó)家的重要支柱產(chǎn)業(yè)來(lái)發(fā)展,其中韓國(guó)政府的做法更甚,讓電子游戲甚負(fù)擔(dān)起了振興國(guó)民經(jīng)濟(jì)的使命,將游戲定位為文化產(chǎn)業(yè)的核心,在今天看來(lái),韓國(guó)政府的選擇的確是挺明智的,其游戲產(chǎn)業(yè)也成為了韓國(guó)的經(jīng)濟(jì)命脈,給韓國(guó)帶來(lái)了充足的內(nèi)需和出口。1.2.2國(guó)內(nèi)發(fā)展的現(xiàn)狀中國(guó)在游戲行業(yè)相比其他國(guó)家起步較晚,1998年6月的《聯(lián)眾游戲世界》是中國(guó)網(wǎng)絡(luò)游戲正式出現(xiàn)的開(kāi)端,而國(guó)內(nèi)首款自主研發(fā)的3D游戲開(kāi)始于2003年。中國(guó)的游戲廠家主要集中于北京、上海、廣州、深圳、成都等城市。到目前為止,我國(guó)有許多游戲廠家推出了許多有強(qiáng)大市場(chǎng)影響力的游戲作品,例如《大話西游》、《傳奇》、《天龍八部》。而且,網(wǎng)絡(luò)游戲的興起也帶動(dòng)了其他相關(guān)產(chǎn)業(yè)的發(fā)展。雖然在國(guó)內(nèi),在3D游戲方面已經(jīng)有了明顯的進(jìn)展和較多的研究,但是因?yàn)?D游戲引擎的開(kāi)發(fā)需要很多的人力財(cái)力,一般的小型游戲公司都無(wú)力承擔(dān),所以國(guó)內(nèi)自主研發(fā)的3D游戲引擎還是十分稀少,小型游戲公司都是選擇其他價(jià)格相對(duì)便宜且技術(shù)成熟的游戲引擎和開(kāi)發(fā)工具,例如本文所講的Unity3D游戲引擎和與之相提并論的寒霜引擎和虛幻引擎。1.2.3未來(lái)發(fā)展的啟示綜上所述,通過(guò)對(duì)比國(guó)內(nèi)外的發(fā)展現(xiàn)狀,可以看出雖然我國(guó)的游戲開(kāi)發(fā)還未發(fā)展到國(guó)外的水平,但是國(guó)內(nèi)的發(fā)展前景還是很好的,而且現(xiàn)在國(guó)內(nèi)的游戲開(kāi)發(fā)人才也是越來(lái)越多,相信在未來(lái)我國(guó)的游戲行業(yè)會(huì)越來(lái)越好。1.3論文設(shè)計(jì)思路本論文從最初構(gòu)想到分析,結(jié)合了一些游戲開(kāi)發(fā)資料,設(shè)計(jì)出了一個(gè)沙盒式游戲的制作過(guò)程,其中具體介紹游戲的制作步驟,包括游戲的功能實(shí)現(xiàn)和一系列實(shí)現(xiàn)代碼。論文分為六個(gè)章節(jié),大概內(nèi)容如下: 第一部分:緒論,主要闡述該畢業(yè)設(shè)計(jì)的目標(biāo)和意義和國(guó)內(nèi)外相關(guān)內(nèi)容的研究和發(fā)展。 第二部分:大概介紹本游戲制作時(shí)所使用的的各類開(kāi)發(fā)工具。 第三部分:介紹本游戲的需求分析,包括目標(biāo)、任務(wù)和功能需求分析。 第四部分:介紹本游戲的總體設(shè)計(jì)。 第五部分:介紹本游戲各個(gè)組成部分的代碼的實(shí)現(xiàn)。 第六部分:測(cè)試游戲并進(jìn)行打包封裝。 第七部分:對(duì)本次的游戲制作的總結(jié)和反思。
第二章系統(tǒng)開(kāi)發(fā)工具與相關(guān)技術(shù)本章主要說(shuō)明本沙盒游戲開(kāi)發(fā)時(shí)所使用到的各類開(kāi)發(fā)工具和與之相關(guān)的技術(shù),并著重介紹本游戲開(kāi)發(fā)所使用的的Unity3D游戲引擎。2.1Unity3D游戲引擎2.1.1Unity3D軟件介紹丹麥UnityTechnologies公司開(kāi)發(fā)為了更快更好地開(kāi)發(fā)游戲,便開(kāi)發(fā)了的一款支持多平臺(tái)的綜合型游戲開(kāi)發(fā)工具,這個(gè)工具就是Unity3D,全球開(kāi)發(fā)者都因?yàn)槠涑墒斓拈_(kāi)發(fā)環(huán)境和簡(jiǎn)便的使用方式而贊不絕口。它提供了目前最好的跨平臺(tái)服務(wù),在正常情況下,平臺(tái)之間的各種差異性經(jīng)常會(huì)影響到游戲的開(kāi)發(fā)進(jìn)度,但是Unity3D作為一款支持多平臺(tái)的綜合型游戲開(kāi)發(fā)工具,可以把游戲在所有主流平臺(tái)之間完美移植。為了更好地幫助游戲開(kāi)發(fā)者開(kāi)發(fā)和維護(hù)游戲,Unity3D提供了許多使用方便個(gè)、功能強(qiáng)大的工程視圖,其中最基礎(chǔ)的工程視圖是project視圖,hierarchy視圖,inspector視圖,scene視圖和game視圖。project視圖用于查看存放游戲中的資源文件,比如模型、材質(zhì)、字體等素材,還包括該游戲的各個(gè)場(chǎng)景;hierarchy視圖用于查看已打開(kāi)的游戲場(chǎng)景中的各個(gè)組成部分;inspector視圖用于展示游戲物體的各種屬性,前提是當(dāng)前用鼠標(biāo)選中的,否則視圖不會(huì)有屬性顯示;scene視圖用于查看存放在游戲中模型資源,游戲內(nèi)所有的模型、材質(zhì)、燈光都可以在此視圖查看,也可以直接通過(guò)拖動(dòng)project視圖內(nèi)的素材到此視圖來(lái)創(chuàng)建需要用到的模型;game視圖用于觀察游戲的運(yùn)行,在此視圖無(wú)法編輯游戲物體,但可以清楚地看到游戲的運(yùn)行效果,以達(dá)到臨時(shí)測(cè)試運(yùn)行的作用。2.1.2API接口Unity3D豐富的API可以幫助游戲開(kāi)發(fā)者完成各種需求。API是一些已經(jīng)定義好的公共函數(shù),可以讓游戲開(kāi)發(fā)者在不需要了解內(nèi)部方法的實(shí)現(xiàn)過(guò)程就可以得到函數(shù)輸出的結(jié)果。Unity3D提供了豐富的組件和類庫(kù),讓開(kāi)發(fā)者可以隨意調(diào)用組件去實(shí)現(xiàn)自己的功能。通過(guò)這些API函數(shù),開(kāi)發(fā)人員可以很方便地實(shí)現(xiàn)項(xiàng)目的初始化,熟練掌握和使用這些API對(duì)于游戲開(kāi)發(fā)效率提高很重要。2.1.3物理引擎近年的游戲中,有很多游戲都開(kāi)始注重對(duì)物理引擎的利用,比如絕地求生中重力對(duì)子彈的影響,人類一敗涂地中角色對(duì)物體的作用等。這幾年來(lái),許多游戲都開(kāi)始重視物理引擎,因?yàn)楝F(xiàn)在的玩家除了關(guān)注游戲的關(guān)卡是否好玩,游戲類型是否符合玩家心中的類型,游戲的可玩度高不高,也開(kāi)始關(guān)注游戲帶給玩家的真實(shí)感和代入感,而一個(gè)游戲?qū)ο蟮脑O(shè)計(jì)都盡量符合其現(xiàn)實(shí)物體的特性,這樣游戲才會(huì)顯得真實(shí)可信,這樣玩家才能在游戲中獲得更大的真實(shí)感。在Unity3D游戲設(shè)計(jì)的物理引擎中,剛體、碰撞、材質(zhì)以及關(guān)節(jié)運(yùn)動(dòng)等一系列組件為引擎的組成部分。游戲物理引擎的主要作用就是模仿物體在現(xiàn)實(shí)生活中受到外力作用時(shí)的互相影響、互相做力的作用的表現(xiàn)的現(xiàn)象。通過(guò)該游戲平臺(tái)的物理引擎得到的這些逼真的游戲體驗(yàn)會(huì)讓你產(chǎn)生這就是一個(gè)在游戲里創(chuàng)造現(xiàn)實(shí)的錯(cuò)覺(jué)。2.1.4Unity常用生命周期的函數(shù)傳統(tǒng)的代碼程序一般都是從規(guī)定的函數(shù)入口開(kāi)始運(yùn)行,而Unity3D的代碼是模擬一個(gè)事物的生老病死一樣,用生命周期事件代替一般的流程性編譯,通過(guò)編譯這些生命周期內(nèi)的事件。這些生命周期函數(shù)在Unity內(nèi)部不斷地迭代,最終就會(huì)產(chǎn)生游戲運(yùn)行時(shí)在攝像機(jī)前表現(xiàn)出來(lái)的結(jié)果。下面按照生命周期介紹Unity3D中一些常用的事件函數(shù):Start():只有腳本掛載的游戲?qū)ο笤诒粏⒂玫臅r(shí)候才能夠被運(yùn)行。Update():如果腳本在開(kāi)始就啟用了MonoBehaviour,那么在游戲運(yùn)行的時(shí)候就會(huì)一幀調(diào)用一次。Update函數(shù)的作用就是更新每一幀后腳本掛載的對(duì)象的狀態(tài),一般來(lái)講游戲都是以幀為單位進(jìn)行狀態(tài)更新,因?yàn)榇蠖鄶?shù)游戲的邏輯都是按幀率進(jìn)行執(zhí)行的。FixedUpdate():如果腳本在開(kāi)始就啟用了MonoBehaviour,那么在游戲運(yùn)行的時(shí)候就會(huì)以開(kāi)發(fā)者設(shè)定的固定幀調(diào)用一次FixedUpdate函數(shù),如果設(shè)定的固定幀是一幀,那么FixedUpdate函數(shù)執(zhí)行的結(jié)果就與Update函數(shù)執(zhí)行的結(jié)果一樣,兩個(gè)方法不同的地方就是FixedUpdate函數(shù)可由開(kāi)發(fā)者去控制執(zhí)行的頻率但是Update函數(shù)不可以。有一點(diǎn)需要注意的是,在處理Rigidbody剛體的時(shí)候,應(yīng)使用FixedUpdate函數(shù)去處理而不是Update函數(shù),因?yàn)樵O(shè)備的性能或者是其他的原因,Update函數(shù)調(diào)用的頻率有可能是不一樣的,這會(huì)導(dǎo)致使用Update函數(shù)處理剛體的時(shí)候剛體的運(yùn)動(dòng)軌跡就可能會(huì)很異于現(xiàn)實(shí)生活,但FixedUpdate函數(shù)是以固定時(shí)間去調(diào)用,所以就不會(huì)發(fā)生這樣的情況,剛體的運(yùn)動(dòng)軌跡看起來(lái)就會(huì)比較平滑。2.1.5用戶圖形界面本文中沙盒游戲的用戶圖形界面主要使用UGUI進(jìn)行UI界面的開(kāi)發(fā)。圖形用戶界面的英文簡(jiǎn)寫(xiě)是GUI,OnGUI、NGUI、UGUI等都是Unity3D中的UI的分類。Unity的GUI系統(tǒng)被稱作UnityGUI,UnityGUI內(nèi)含有多種功能齊全的UI控件,通過(guò)在UI界面中的創(chuàng)建控件操作,就可以同時(shí)完成控件實(shí)例化,定位和功能定義,然后開(kāi)發(fā)者只需要寫(xiě)少量的腳本并將腳本掛載到相應(yīng)的控件上,讓控件可以控制運(yùn)行掛載的腳本,就可以實(shí)現(xiàn)多種多樣的功能。2.23DsMax軟件3Dsmax是一款基于計(jì)算機(jī)操作系統(tǒng)開(kāi)發(fā)的三維建模軟件,由discreet公司開(kāi)發(fā),因?yàn)楣δ軓?qiáng)大所以成為游戲開(kāi)發(fā)中常用的游戲建模工具之一。本軟件在開(kāi)發(fā)出來(lái)后原本的用途是使用本軟件制作出動(dòng)畫(huà),所以在此之后被一些影視制作者看重,然后被進(jìn)一步用于影視片中的特效制作。雖然3DsMax功能強(qiáng)大,在學(xué)校有學(xué)習(xí)過(guò)一些該軟件相應(yīng)的操作,但是對(duì)于我來(lái)說(shuō),讓我建造游戲的模型還是有些勉強(qiáng)的,所以在在這里只是簡(jiǎn)單介紹一下3DsMax的用途,本游戲內(nèi)使用的模型都是在網(wǎng)上找到的制作好的模型,但因?yàn)榻N募袷接锌赡懿皇荱nity3D能直接導(dǎo)入使用的格式或者建模文件有錯(cuò)誤,所以需要使用3DsMax檢查建模是否正常,然后再導(dǎo)出為.fbx格式的模型文件在導(dǎo)入到Unity3D中使用。2.3C#開(kāi)發(fā)語(yǔ)言C#是一款面向?qū)ο蟮木幊陶Z(yǔ)言,由微軟發(fā)布出來(lái)。C#有許多特性與Java的許多類似,因此跟Java一樣,C#也有許多程序員使用。雖然C#是可以跨平臺(tái)運(yùn)行,但是這個(gè)跨平臺(tái)的前提是需要有特定的虛擬機(jī),所以在沒(méi)有虛擬機(jī)的情況下在其他平臺(tái)是無(wú)法運(yùn)行C#代碼的,但因?yàn)閁nity3D支持平臺(tái)開(kāi)發(fā),而且支持使用C#進(jìn)行腳本編程,所以才使C#可以多平臺(tái)編譯;語(yǔ)法清晰明了,類庫(kù)使用方便,這些都是C#的有點(diǎn),或許這也是Unity3D支持C#進(jìn)行腳本代碼開(kāi)發(fā)的原因。2.4VisualStudio2019VisualStudio是在Windows平臺(tái)上流行的的集成開(kāi)發(fā)環(huán)境(IDE)。VisualStudio有著大多數(shù)IDE都有的功能,支持代碼的編輯、調(diào)試運(yùn)行和封裝打包,而且還有許多其他的功能,可以幫助開(kāi)發(fā)者減少開(kāi)發(fā)難度;目標(biāo)使用人群是編寫(xiě)在微軟支持的所有平臺(tái)上運(yùn)行的代碼的程序員,VisualStudio目前支持的編程語(yǔ)言有C++、C#、F#、R、Python、VisualBasic、TypeScript和JavaScript。
第三章游戲設(shè)計(jì)本章內(nèi)容主要是本沙盒游戲的各部分組成,并進(jìn)行大概的闡述,以明確本游戲開(kāi)發(fā)的目標(biāo)和功能需求。3.1游戲組成本沙盒游戲由兩大部分組成,分別是游戲場(chǎng)景和游戲人物兩個(gè)部分,游戲場(chǎng)景由游戲UI界面和游戲地形組成,是玩家可以自由查看的部分,游戲人物是玩家操控的游戲物體,是玩家用于體驗(yàn)游戲的游戲?qū)ο?。具體游戲功能組成如圖3-1所示。圖3-1游戲組成部分 3.2游戲場(chǎng)景設(shè)計(jì)本游戲模仿Minecraft,將游戲整體分為三個(gè)場(chǎng)景,分別是開(kāi)始場(chǎng)景,加載場(chǎng)景和游戲內(nèi)場(chǎng)景。開(kāi)始場(chǎng)景為UI界面,該界面模仿Minecraft開(kāi)始界面的布局,以游戲標(biāo)題和三個(gè)按鈕組成,按鈕用來(lái)進(jìn)入游戲內(nèi)場(chǎng)景和進(jìn)行游戲的部分設(shè)置。加載場(chǎng)景插在開(kāi)始場(chǎng)景和游戲內(nèi)場(chǎng)景之間,讓玩家有一種游戲正在加載的感覺(jué),同時(shí)可以在加載界面加入游戲提示,用于提示玩家。加載界面用了游戲界面的截圖作為背景圖,且在加載條上使用了與背景圖顏色相關(guān)的顏色作為加載條顏色,用Minecraft中讓玩家最熟悉的草方塊作為加載條圖案,貼合該游戲的主題。游戲內(nèi)場(chǎng)景就是游戲運(yùn)行時(shí)的界面,是游戲中非常重要的構(gòu)成,元素由與Minecraft游戲中相似的游戲道具、地形、環(huán)境、建筑等元素組成,是整個(gè)游戲非常重要的構(gòu)成元素,此場(chǎng)景就是讓玩家體驗(yàn)整個(gè)游戲的場(chǎng)景。3.2.1開(kāi)始場(chǎng)景設(shè)計(jì)開(kāi)始游戲界面與Minecraft的開(kāi)始界面類似,在游戲窗口的正上方顯示本游戲的名字,接著在下方的位置放置開(kāi)始場(chǎng)景所需要的開(kāi)始按鈕、設(shè)置按鈕和游戲退出按鈕,其中點(diǎn)擊開(kāi)始按鈕則進(jìn)入游戲加載頁(yè)面,點(diǎn)擊設(shè)置按鈕則彈出設(shè)置窗口進(jìn)行游戲設(shè)置,點(diǎn)擊退出則關(guān)閉游戲。開(kāi)始界面的組成如圖3-2所示。圖3-2開(kāi)始場(chǎng)景組成3.2.2加載頁(yè)面設(shè)計(jì)加載頁(yè)面由進(jìn)度條、背景圖片和游戲提示文字組成。加載進(jìn)度條放在窗口總體位置的下方,然后游戲提示在進(jìn)度條上方的位置,用于提示新手玩家如何玩這款游戲。待進(jìn)度條到最后的時(shí)候,通過(guò)點(diǎn)擊任意按鈕跳轉(zhuǎn)到游戲場(chǎng)景并開(kāi)始游戲。加載頁(yè)面組成如圖3-3所示。圖3-3加載場(chǎng)景組成 3.2.3游戲內(nèi)場(chǎng)景設(shè)計(jì)因?yàn)楸居螒驗(yàn)榉翸inecraft的沙盒游戲,所有的游戲地形搭建都為隨機(jī)生成,所以剛進(jìn)入場(chǎng)景時(shí)沒(méi)有地形。界面開(kāi)始應(yīng)有游戲設(shè)置的按鈕,用于讓玩家可以在游戲中也可以修改部分游戲設(shè)置。圖3-4為游戲內(nèi)場(chǎng)景組成的示意圖。圖3-4游戲內(nèi)場(chǎng)景的組成 3.3游戲人物設(shè)計(jì)3.3.1人物模型設(shè)計(jì)因?yàn)檫@是一個(gè)沙盒游戲,所以游戲人物相對(duì)其他模型要求十分精細(xì)的來(lái)說(shuō)就十分簡(jiǎn)單,人物只需要幾個(gè)方塊,調(diào)整大小后就可以拼搭成游戲所需要的游戲人物。對(duì)應(yīng)所需要的人物模型我從網(wǎng)上找到了與Minecraft主題比較貼合的模型,但因?yàn)橄螺d下來(lái)的模型不是Unity3D所支持的.fbx格式,因此我需用用到3DMax,將模型導(dǎo)入到3DMax之后再將其另存為.fbx格式導(dǎo)出,這樣我就可以將人物模型導(dǎo)入到Unity3D中使用了。模型導(dǎo)入的方法十分簡(jiǎn)單,這里又突出了Unity3D強(qiáng)大的一點(diǎn),我們可以直接將模型拖動(dòng)到Project視窗內(nèi),Unity3D就會(huì)自動(dòng)為我們導(dǎo)入模型到對(duì)應(yīng)的文件夾內(nèi)。圖3-5為人物模型。圖3-5人物模型3.3.2人物功能的實(shí)現(xiàn)導(dǎo)入人物模型后首先調(diào)整好人物相對(duì)游戲地形的大小,然后給人物添加控制器、剛體和碰撞體,這樣任務(wù)就具有了真實(shí)的物理屬性,可以在游戲中與場(chǎng)景物體產(chǎn)生碰撞。 游戲人物所需要的功能有人物移動(dòng),地形的破壞、物品的創(chuàng)建和素材的碰撞獲取。功能的添加是用腳本實(shí)現(xiàn)的,在這里我選擇通過(guò)給人物添加腳本做例子,在腳本里添加移動(dòng)方法,讓玩家可以隨控制人物的移動(dòng)。我默認(rèn)設(shè)置了WASD鍵為人物前后左右的移動(dòng)按鍵。其實(shí)Unity3D有許多非常好用的插件,例如人物控制器。使用人物控制器,我們可以減少許多代碼的書(shū)寫(xiě),且可以更加高效和方便讓玩家地控制人物模型的移動(dòng),一般人物控制器默認(rèn)的移動(dòng)按鍵為WSAD鍵。如果有一些特殊的方法,我們可以使用VisualStudio2017來(lái)編寫(xiě)自己所需要的代碼,來(lái)實(shí)現(xiàn)我們所需要的游戲功能。游戲人物的功能組成如圖3-6所示。圖3-6游戲人物功能組成
第四章游戲總體設(shè)計(jì)本章是結(jié)合前面第二章、第三章的內(nèi)容來(lái)闡述游戲總體的設(shè)計(jì),并對(duì)各部分的設(shè)計(jì)進(jìn)行詳細(xì)的介紹和說(shuō)明,明確游戲各部分的設(shè)計(jì)明細(xì)和實(shí)現(xiàn)方法,是游戲?qū)崿F(xiàn)過(guò)程更加清晰,方便進(jìn)行之后游戲開(kāi)發(fā)的流程,減少異常情況的發(fā)生,有利于之后游戲的完善和其他玩法的開(kāi)發(fā)。4.1開(kāi)始場(chǎng)景設(shè)計(jì)第一個(gè)場(chǎng)景為開(kāi)始場(chǎng)景,包括開(kāi)始游戲界面和設(shè)置界面。4.1.1開(kāi)始場(chǎng)景開(kāi)始場(chǎng)景是一個(gè)2D的UI界面,界面使用了Unity3D的UI系統(tǒng)進(jìn)行制作,在hierarchy視圖中右鍵會(huì)彈出選擇選項(xiàng),選擇里面的UI選項(xiàng),再選擇Canvas畫(huà)布選項(xiàng),這樣就可以新建一個(gè)畫(huà)布組件,我們就可以在上面掛載各種各樣的組件,例如Text文本、Image圖片、Button按鈕、Slider滑動(dòng)條、Toggle選擇框,在本頁(yè)面我使用了圖像組件設(shè)置了整個(gè)開(kāi)始界面的背景圖,用文本組件設(shè)置了游戲名,然后用三個(gè)按鈕設(shè)置了幾個(gè)點(diǎn)擊事件,開(kāi)始界面如圖4-1所示,對(duì)應(yīng)的點(diǎn)擊事件如下:Start按鈕:用于進(jìn)入游戲加載場(chǎng)景。當(dāng)玩家使用鼠標(biāo)選擇點(diǎn)擊此按鈕時(shí)就會(huì)跳轉(zhuǎn)到游戲加載場(chǎng)景。按鈕會(huì)用不同的顏色變化來(lái)提示玩家目前在把鼠標(biāo)移動(dòng)到按鈕上方或者正在點(diǎn)擊按鈕。Setting按鈕:用于打開(kāi)游戲設(shè)置界面。設(shè)置界面會(huì)在點(diǎn)擊設(shè)置按鈕后在攝像機(jī)前顯示,并發(fā)出彈出窗口的提示音。玩家可以在設(shè)置界面修改特效聲音和查看設(shè)置操作方式等設(shè)置選項(xiàng)。Quit按鈕:用于退出游戲。點(diǎn)擊此按鈕則停止游戲并關(guān)閉游戲窗口。點(diǎn)擊事件基本都是由自己編寫(xiě)腳本后然后通過(guò)一系列操作掛載到按鈕上,這樣才能在點(diǎn)擊按鈕的時(shí)候觸發(fā)相對(duì)應(yīng)的點(diǎn)擊事件。具體掛載腳本的操作就是先在游戲場(chǎng)景中右鍵添加一個(gè)空對(duì)象CreateEmpty,這時(shí)hierarchy視圖中默認(rèn)會(huì)在最后一個(gè)游戲?qū)ο蠛竺嫣砑訉?duì)象,點(diǎn)擊空對(duì)象讓空對(duì)象的屬性信息出現(xiàn)在inspector視圖中。在inspector視圖中有一個(gè)AddComponent按鈕,這個(gè)按鈕就是為對(duì)象添加組件或者腳本的按鈕。點(diǎn)擊AddComponent,在彈出的選項(xiàng)框中搜索選擇自己剛剛編寫(xiě)好的腳本,這樣就可以在空對(duì)象上掛載自己編寫(xiě)的腳本了,然后把空對(duì)象掛載到按鈕上的點(diǎn)擊事件,這樣就可以在點(diǎn)擊事件中選擇點(diǎn)擊后觸發(fā)的事件。在開(kāi)始按鈕掛載腳本添加點(diǎn)擊事件后會(huì)如圖4-2所示。圖4-1游戲開(kāi)始場(chǎng)景 4-3Button添加點(diǎn)擊事件示意圖4.1.2設(shè)置場(chǎng)景點(diǎn)擊設(shè)置按鈕會(huì)打開(kāi)游戲設(shè)置界面,制作設(shè)置界面需要?jiǎng)?chuàng)建在Canvas層級(jí)下創(chuàng)建一個(gè)Panel組件,命名為Setting,然后再在Setting下創(chuàng)建Text文本內(nèi)容、Toggle選擇框、Slider滑動(dòng)條、Button按鈕,在文本內(nèi)容添加操作方式說(shuō)明,然后再選擇框掛載腳本這樣就可以控制音效播放,在滑動(dòng)條掛載腳本用于控制音效聲量,然后再設(shè)置界面右上方添加設(shè)置窗口關(guān)閉按鈕,在右下方添加應(yīng)用按鈕,然后再這兩個(gè)按鈕上掛載腳本添加點(diǎn)擊事件,這樣我們可以設(shè)置完后,直接點(diǎn)擊關(guān)閉窗口按鈕就會(huì)不保存修改后的設(shè)置然后將設(shè)置界面隱藏,如果想要應(yīng)用設(shè)置就右下角的應(yīng)用按鈕,然后設(shè)置界面會(huì)在保存設(shè)置后隱藏。設(shè)置界面如圖4-3所示。4-3設(shè)置界面示意圖4.2加載界面 加載界面是指在進(jìn)入正式游戲界面前的過(guò)渡場(chǎng)景,可以讓玩家不會(huì)進(jìn)入游戲界面后因?yàn)橛螒驁?chǎng)景正在加載而卡頓在原地?zé)o法操作。 4.2.1.加載界面的功能過(guò)渡界面的功能是在場(chǎng)景切換的時(shí)候,如果游戲場(chǎng)景資源過(guò)大,有可能會(huì)導(dǎo)致進(jìn)入游戲場(chǎng)景的時(shí)候玩家會(huì)在原地等待游戲加載無(wú)法操作,這時(shí)候就需要加入游戲加載場(chǎng)景。因?yàn)橛螒蛑鲌?chǎng)景的游戲?qū)ο蟊容^多,所以只能使用異步加載SceneManager.LocalSceneAsyne()方法,因?yàn)槿绻苯邮褂肧ceneManager.LocalScene()方法加載場(chǎng)景的話會(huì)有明顯的卡頓現(xiàn)象。用SceneManager.LocalSceneAsyne()方法加載場(chǎng)景,就可以在運(yùn)行加載場(chǎng)景的同時(shí)異步加載游戲場(chǎng)景,這樣等加載場(chǎng)景完成的時(shí)候就可以跳轉(zhuǎn)到加載好的游戲界面了。跳轉(zhuǎn)場(chǎng)景如圖4-4所示。 4.2.2加載界面的制作與開(kāi)始場(chǎng)景相似,也是一個(gè)UI界面,首先添加Canvas畫(huà)布組件,然后在畫(huà)布組件層級(jí)下添加Panel畫(huà)板、Text文本內(nèi)容、Slider滑動(dòng)條組件。然后一樣在hierarchy視圖中創(chuàng)建一個(gè)空對(duì)象,然后在inspector視圖添加自己剛剛編寫(xiě)好的異步加載場(chǎng)景方法的腳本,這樣就可以在空對(duì)象上掛載自己編寫(xiě)的腳本了,然后把空對(duì)象掛載到按鈕上的點(diǎn)擊事件,選擇對(duì)應(yīng)腳本中的異步加載方法,這樣就可以在點(diǎn)擊開(kāi)始游戲按鈕后跳到加載場(chǎng)景且異步加載游戲場(chǎng)景了。 圖4-4加載界面的示意圖4.3游戲場(chǎng)景 玩家可以正式放開(kāi)手腳去創(chuàng)作玩耍的地方就是本游戲的游戲場(chǎng)景,本沙盒游戲的游戲場(chǎng)景主要是由游戲地形和游戲界面組成。游戲地形是人物角色所處的地方,而游戲界面UI是游戲場(chǎng)景中的UI界面以及游戲菜單UI。4.3.1游戲界面的功能游戲地形是玩家進(jìn)行游戲的環(huán)境,在本沙盒游戲中玩家可以對(duì)地形進(jìn)行任意的操作,例如破壞、創(chuàng)建。而且因?yàn)楸居螒虻匦尾捎玫氖请S機(jī)無(wú)限地形生成,所以玩家可以無(wú)限采集素材,做出無(wú)限大的、屬于自己的地形環(huán)境。游戲的UI界面包括血量UI、物品欄UI,背包UI和返回菜單UI。物品欄UI的作用是顯示玩家可以通過(guò)快捷鍵使用的物品,背包UI是顯示玩家目前所擁有的的素材的種類和數(shù)量,而且可以通過(guò)拖動(dòng)素材將素材放入物品欄,游戲菜單UI是用于返回開(kāi)始界面、進(jìn)行音量控制和查看游戲操作。4.3.2游戲地形的創(chuàng)建因?yàn)橛螒虻匦问怯秒S機(jī)無(wú)限生成的方法創(chuàng)建的,所以本游戲地形是通過(guò)代碼進(jìn)行生成的。無(wú)限生成的原理是通過(guò)二維柏林噪聲函數(shù)通過(guò)循環(huán)生成三維地形,方法是通過(guò)給定范圍內(nèi)遍歷每個(gè)x和z坐標(biāo),然后用0到樣本的素體voxels填充整個(gè)世界,其中樣本是在坐標(biāo)(x,z)處對(duì)柏林噪聲函數(shù)進(jìn)行采樣的結(jié)果。因?yàn)橛?jì)算機(jī)資源和硬件限制,我不可能在不遇到計(jì)算極限的情況下顯示無(wú)限的世界,所以我只對(duì)當(dāng)前的坐標(biāo)為中心的范圍進(jìn)行采樣。單純使用柏林噪音函數(shù)生成三維地形會(huì)顯得不夠自然,與現(xiàn)實(shí)的地形有些差別,所以我將幾個(gè)不同頻率和振幅的柏林噪聲函數(shù)相加,這樣生成的函數(shù)可以生成更加符合自然地形的三維地形。這種地形生成方法叫做Octaves倍頻分層疊加地形設(shè)計(jì)。生成的地形示意圖如圖4-5所示。 然后通過(guò)給定位置的函數(shù)值結(jié)果決定給定位置所使用的的素體voxel類型,例如,如果得到的函數(shù)值是0.5,則使用水的預(yù)制體去填充這一模塊,如果是0.7則使用泥土去填充它,這樣我們就可以把整個(gè)地形用各種預(yù)制體填充完整,做出一個(gè)真正的有山有水的地形。填充后的地形示意圖如圖4-6所示。圖4-5地形生成示意圖圖4-6用素體填充后的地形示意圖4.3.3游戲界面UI的創(chuàng)建游戲的UI界面包括血量UI,物品欄UI,背包UI和返回菜單UI。血量UI處于物品欄UI的上面一點(diǎn)的位置,顯示當(dāng)前為玩家人物的血量,如果有血量變動(dòng),則會(huì)調(diào)用對(duì)應(yīng)的腳本,讓UI會(huì)發(fā)生相應(yīng)的變化,例如扣除一顆心的血量時(shí),血量UI就會(huì)將從右開(kāi)始計(jì)算的第一顆紅心改變成黑心,以代表玩家扣除了一顆心的血量。血量UI示意圖如圖4-7所示。圖4-7血量UI示意圖 物品欄UI處于整個(gè)游戲窗口的正下方,會(huì)顯示玩家人物背包中已有的且放入物品欄的素材,可以通過(guò)按下相應(yīng)的快捷鍵來(lái)調(diào)用物品欄右下角對(duì)應(yīng)快捷鍵的素材。物品欄UI的示意圖如圖4-8所示。圖4-8物品欄UI示意圖背包UI位于整個(gè)窗口的中心,背包UI默認(rèn)顯示狀態(tài)是false,當(dāng)點(diǎn)擊打開(kāi)游戲背包的快捷鍵時(shí)就會(huì)將顯示狀態(tài)改成true,這樣就可以做出背包UI的打開(kāi)與關(guān)閉。背包UI顯示玩家人物在當(dāng)前世界中獲取的素材和素材的數(shù)量,當(dāng)玩家獲得某一素材的時(shí)候,背包里就會(huì)創(chuàng)建素材對(duì)應(yīng)的圖標(biāo),并計(jì)算素材的數(shù)量,數(shù)量顯示在素材圖標(biāo)的右下角。如果玩家想將素材放入物品欄,可以通過(guò)使用鼠標(biāo)拖動(dòng)素材圖標(biāo)到背包UI最下方的一欄,這樣就可以將素材放入物品欄。背包UI的示意圖如圖4-9所示。圖4-9背包UI的示意圖游戲設(shè)置UI跟開(kāi)始界面的UI相似,設(shè)置界面需要?jiǎng)?chuàng)建在Canvas層級(jí)下創(chuàng)建一個(gè)Panel組件,命名為Setting,然后再在Setting下創(chuàng)建Text文本內(nèi)容、Toggle選擇框、Slider滑動(dòng)條、Button按鈕,在文本內(nèi)容添加操作方式說(shuō)明,然后再選擇框掛載腳本這樣就可以控制音效播放,在滑動(dòng)條掛載腳本用于控制音效聲量,然后再設(shè)置界面右上方添加設(shè)置窗口關(guān)閉按鈕,在右下方添加應(yīng)用按鈕和返回開(kāi)始界面按鈕,然后再這兩個(gè)按鈕上掛載腳本添加點(diǎn)擊事件,這樣我們可以設(shè)置完后如果不想保存設(shè)置就可以點(diǎn)擊關(guān)閉按鈕直接關(guān)閉設(shè)置窗口,如果要應(yīng)用設(shè)置就點(diǎn)擊應(yīng)用按鈕應(yīng)用設(shè)置然后關(guān)閉按鈕,如果想退出游戲則可以打開(kāi)設(shè)置界面,點(diǎn)擊里面的返回菜單按鈕返回到開(kāi)始界面,通過(guò)開(kāi)始界面的退出按鈕退出游戲。
第五章游戲代碼實(shí)現(xiàn)本章會(huì)結(jié)合前兩章的內(nèi)容來(lái)實(shí)現(xiàn)編寫(xiě)游戲的代碼。本文不會(huì)展示本游戲?qū)崿F(xiàn)的全部代碼,但會(huì)通過(guò)闡述相關(guān)的實(shí)現(xiàn)邏輯來(lái)說(shuō)明本游戲幾個(gè)場(chǎng)景中主要代碼腳本實(shí)現(xiàn)的方式。5.1游戲開(kāi)始界面代碼實(shí)現(xiàn)開(kāi)始界面需要調(diào)用到腳本的地方有游戲標(biāo)題、開(kāi)始按鈕、設(shè)置按鈕、退出游戲按鈕。5.1.1游戲標(biāo)題游戲標(biāo)題使用了顏色漸變的腳本,可以讓字體顏色從一種顏色到另一種顏色漸變。該腳本是通過(guò)繼承BaseMeshEffect,然后用代碼編寫(xiě)出顏色漸變的方法,最后重載函數(shù)以實(shí)現(xiàn)顏色漸變的操作。然后將代碼掛載到標(biāo)題上就可以設(shè)置標(biāo)題字體的顏色變化了。部分實(shí)現(xiàn)顏色漸變的代碼的示意圖如圖5-1和圖5-2所示。圖5-1設(shè)置整體顏色漸變方法圖5-2設(shè)置每個(gè)字體顏色漸變方法5.1.2開(kāi)始按鈕開(kāi)始按鈕主要實(shí)現(xiàn)的功能是界面與界面之間的跳轉(zhuǎn),這里需要調(diào)用的方法是SceneManager類的LoadScene()方法,這個(gè)方法可以在調(diào)用此方法的時(shí)候讓場(chǎng)景跳轉(zhuǎn)到游戲設(shè)定的場(chǎng)景,這里我設(shè)定了點(diǎn)擊開(kāi)始按鈕的時(shí)候跳轉(zhuǎn)到加載場(chǎng)景。具體代碼如圖5-3所示。圖5-3跳轉(zhuǎn)場(chǎng)景5.1.3設(shè)置按鈕設(shè)置按鈕上主要掛載的腳本代碼的作用是顯示和隱藏設(shè)置菜單和調(diào)整音樂(lè)音量和是否播放音樂(lè)。顯示和隱藏菜單的方法是調(diào)用游戲?qū)ο髮傩灾械腉ameObject.SetActive()方法,該方法可以設(shè)置該游戲?qū)ο髮?duì)相機(jī)是否可視,如果為true則相機(jī)可以發(fā)現(xiàn)該游戲?qū)ο?,玩家也就可以看到該?duì)象出現(xiàn)在相機(jī)里,如果為false則無(wú)法看到該游戲?qū)ο蟆N覀兛梢岳眠@一方法來(lái)實(shí)現(xiàn)設(shè)置窗口的顯示和隱藏。具體代碼如圖5-4所示。圖5-4窗口的顯示和隱藏游戲音效播放和音量控制是由設(shè)置窗口中的Toggle選擇框和Slider滑動(dòng)條控制的,如果選擇框選擇上,那么游戲音效就會(huì)播放,去掉就會(huì)立刻關(guān)閉游戲音效。拉動(dòng)滑動(dòng)條則可以調(diào)整音效的音量。具體實(shí)現(xiàn)代碼如圖5-5所示。圖5-5游戲音效的播放和音量的控制5.1.4退出按鈕退出按鈕上掛載的是退出整個(gè)游戲的腳本。退出整個(gè)游戲只需要調(diào)用Application.Quit()這個(gè)方法就可以退出整個(gè)游戲。我將退出游戲的代碼掛載到退出按鈕,使我們可以在點(diǎn)擊退出按鈕的時(shí)候就退出整個(gè)游戲。具體實(shí)現(xiàn)代碼如圖5-6所示。圖5-6退出游戲腳本5.2游戲加載界面代碼實(shí)現(xiàn)游戲加載需要調(diào)用到的腳本是異步加載腳本,使用異步加載可以讓我們?cè)诩虞d游戲?qū)ο蟊容^少的場(chǎng)景時(shí)同時(shí)加載游戲?qū)ο蟊容^多的場(chǎng)景,這樣我們?cè)谇袚Q場(chǎng)景到游戲?qū)ο筝^多的場(chǎng)景的時(shí)候就不用等待場(chǎng)景加載游戲?qū)ο螅苯涌梢赃M(jìn)行游戲交互了。5.2.1異步加載SceneManager.LoadSceneAsync()方法是我們這個(gè)加載場(chǎng)景的最重要的方法,當(dāng)我們進(jìn)入加載場(chǎng)景的時(shí)候就會(huì)調(diào)用這個(gè)方法,這個(gè)方法可以幫助我們?cè)谝粋€(gè)場(chǎng)景中加載另外一個(gè)場(chǎng)景,這樣就可以實(shí)現(xiàn)處于加載場(chǎng)景的同時(shí)利用剩余的資源去加載之后的游戲界面。但是因?yàn)楝F(xiàn)在的電腦性能都十分強(qiáng)大,對(duì)于加載本游戲的游戲場(chǎng)景不需要太多的時(shí)間,所以我們調(diào)用Mathf.Lerp()方法,用于減緩進(jìn)入游戲界面的進(jìn)度,這樣做出來(lái)的加載界面才有使用的意義。當(dāng)加載進(jìn)度大于95%的時(shí)候我們就可以通過(guò)按下任意鍵的方式跳轉(zhuǎn)到我們異步加載完畢的游戲界面。具體實(shí)現(xiàn)代碼如圖5-7所示。圖5-7異步加載5.3游戲界面代碼實(shí)現(xiàn)在本游戲界面中最主要的代碼是隨機(jī)地形生成、背包UI、物體破壞與創(chuàng)建的代碼。隨機(jī)地形生成是本游戲最主要,也是最重要的腳本,沒(méi)有實(shí)現(xiàn)這個(gè)代碼就沒(méi)有本游戲的游戲地形,也就不可能實(shí)現(xiàn)本游戲的開(kāi)發(fā)。背包UI的作用是顯示玩家人物在當(dāng)前世界中獲取的素材和素材的數(shù)量,當(dāng)玩家獲得某一素材的時(shí)候,背包里就會(huì)創(chuàng)建素材對(duì)應(yīng)的圖標(biāo),并計(jì)算素材的數(shù)量,數(shù)量顯示在素材圖標(biāo)的右下角。物體破壞與創(chuàng)建是原游戲Minecraft的基礎(chǔ)功能,玩家可以通過(guò)對(duì)游戲地形的破壞和創(chuàng)建來(lái)做出屬于自己獨(dú)一無(wú)二的作品。這里將詳細(xì)講述一下隨機(jī)地形生成代碼的實(shí)現(xiàn)。5.3.1隨機(jī)地形生成說(shuō)隨機(jī)地形生成之前要說(shuō)兩個(gè)概念,一個(gè)是chunk塊,一個(gè)是voxel素體。塊是地形生成的單位,將玩家周圍的世界分割成相同大小的塊,然后為每個(gè)塊生成地形,然后將多個(gè)生成的塊拼接起來(lái)就是本游戲的地形。素體是塊中方塊的單位,塊中生成的地形的素材都是由素體組成的。當(dāng)玩家進(jìn)入游戲場(chǎng)景的時(shí)候,腳本就會(huì)加載生成玩家人物附近的地形,但是不會(huì)加載腳本范圍約定外的地形,這樣做的原因是為了節(jié)省計(jì)算機(jī)資源。當(dāng)玩家移動(dòng)人物角色或視角的時(shí)候,如果人物角色到達(dá)一定范圍就會(huì)在腳本約定范圍內(nèi)生成原本沒(méi)有生成的地形,同時(shí)銷毀約定范圍外的地形,這樣做的原因也是為了節(jié)省計(jì)算機(jī)資源。設(shè)想一下,如果不銷毀不需要的游戲?qū)ο?,這會(huì)大大消耗計(jì)算機(jī)的資源,等到游戲?qū)ο蠖逊e到一定程度,將計(jì)算機(jī)資源占用到一定程度的時(shí)候,游戲的運(yùn)行將因?yàn)槿狈τ?jì)算機(jī)資源而受到變得卡頓,所以。隨機(jī)地形生成的部分實(shí)現(xiàn)代碼如圖5-8所示。圖5-8隨機(jī)生成地形部分腳本
第六章游戲測(cè)試游戲測(cè)試是游戲開(kāi)發(fā)中必不可少的步驟,是保證游戲可以正常運(yùn)行的操作。游戲測(cè)試不僅在游戲開(kāi)發(fā)的最后階段才會(huì)進(jìn)行,在每個(gè)功能實(shí)現(xiàn)、場(chǎng)景搭建之后都會(huì)插入單獨(dú)的測(cè)試方法,這樣做雖然會(huì)增加游戲開(kāi)發(fā)的時(shí)間,但是可以防止游戲中的小功能發(fā)生異常導(dǎo)致整個(gè)游戲的崩潰。同時(shí),游戲測(cè)試也可以驗(yàn)證游戲的功能是否符合游戲設(shè)計(jì)時(shí)設(shè)定的需求。完成游戲測(cè)試后,游戲的綜合質(zhì)量可以得到保證,同時(shí)也可以完善游戲的功能,提高游戲的完成度。完成游戲后,點(diǎn)擊Unity3D游戲開(kāi)發(fā)平臺(tái)左上角的File按鈕,選擇里面的BuildSetting選項(xiàng),將三個(gè)游戲場(chǎng)景拉進(jìn)BuildSetting窗口里的ScenesInBuild欄,然后選擇以PC平臺(tái)作為游戲打包后運(yùn)行的平臺(tái),最后點(diǎn)擊Build進(jìn)行游戲封裝打包。找到打包好的游戲雙擊打開(kāi),在彈出的游戲總體設(shè)置窗口里可以調(diào)整游戲的分辨率、游戲素材渲染質(zhì)量、玩家人數(shù)、游戲按鍵這些選項(xiàng)。調(diào)整好設(shè)置項(xiàng)后點(diǎn)擊Play按鈕,游戲就正式開(kāi)始了。經(jīng)過(guò)測(cè)試,鼠標(biāo)可以在游戲場(chǎng)景中正常點(diǎn)擊各個(gè)游戲UI,玩家任務(wù)可以在游戲場(chǎng)景中自由行動(dòng),游戲各基本功能都沒(méi)有出現(xiàn)Bug正常運(yùn)行??旖萱I的映射和按下快捷鍵后的反應(yīng)均無(wú)異常,游戲需求里的大部分功能都基本實(shí)現(xiàn),運(yùn)行時(shí)沒(méi)有明顯的卡頓,可以正常使用。下面在三個(gè)界面中選幾個(gè)功能進(jìn)行測(cè)試。6.1開(kāi)始界面測(cè)試在開(kāi)始界面中測(cè)試設(shè)置窗口是否正常打開(kāi),各個(gè)UI是否正常。圖6-1設(shè)置窗口測(cè)試過(guò)程中沒(méi)有其他問(wèn)題,鼠標(biāo)可以正常地與UI交互,設(shè)置窗口的顯示和隱藏也沒(méi)有問(wèn)題。6.2加載界面 加載頁(yè)面需要測(cè)試的是加載進(jìn)度條是否正常,加載完畢后是否進(jìn)入游戲界面。圖6-2加載場(chǎng)景經(jīng)測(cè)試,進(jìn)度條有正常運(yùn)行,加載完畢后按下任意鍵會(huì)跳轉(zhuǎn)到游戲界面,加載場(chǎng)景測(cè)試正常。6.3游戲內(nèi)場(chǎng)景 游戲內(nèi)場(chǎng)景主要測(cè)試游戲地形是否正常加載,人物功能是否正常,游戲UI是否正常運(yùn)作,快捷鍵是否正常反應(yīng)。圖6-3游戲內(nèi)場(chǎng)景經(jīng)測(cè)試,游戲地形如設(shè)計(jì)一樣自動(dòng)生成,游戲運(yùn)行流暢,場(chǎng)景素材正常,人物能正常流暢走動(dòng),游戲各基本功能都沒(méi)有出現(xiàn)Bug正常運(yùn)行,快捷鍵的使用均無(wú)異常,游戲基本功能都已實(shí)現(xiàn)。PAGE 第七章總結(jié)一個(gè)基于Unity3D的仿Minecraft游戲的設(shè)計(jì)與實(shí)現(xiàn)的完成,同時(shí)也標(biāo)志著我畢業(yè)設(shè)計(jì)的工作也就此結(jié)束了。在這次游戲的設(shè)計(jì)制作過(guò)程中,我學(xué)到了很多,不僅鞏固了之前課程中學(xué)到的知識(shí),同時(shí)也發(fā)現(xiàn)了自身在技術(shù)上和設(shè)計(jì)上的一些問(wèn)題,也讓我我懷著更嚴(yán)謹(jǐn)更謙虛的態(tài)度去面對(duì)今后的游戲設(shè)計(jì)與開(kāi)發(fā)。在畢業(yè)設(shè)計(jì)開(kāi)始的初期,我重溫了一下課堂學(xué)習(xí)的內(nèi)容并簡(jiǎn)單了解了下游戲項(xiàng)目開(kāi)發(fā)細(xì)節(jié),但是由于在邏輯實(shí)現(xiàn)和動(dòng)畫(huà)設(shè)計(jì)這兩個(gè)方面的學(xué)習(xí)不夠深入,所以在動(dòng)手制作游戲過(guò)程中,經(jīng)常在這兩個(gè)方面上僵住了進(jìn)度,也因此被耽誤了不少時(shí)間。例如關(guān)于第一關(guān)的相機(jī)跟隨和地震模擬實(shí)現(xiàn)上,就因?yàn)槲冶旧淼膶W(xué)習(xí)不夠深入,導(dǎo)致在制作過(guò)程中經(jīng)常出現(xiàn)無(wú)法運(yùn)行或者是諸如此類的問(wèn)題。通過(guò)在網(wǎng)上查閱資料和視頻以及詢問(wèn)同學(xué)過(guò)后之后,我成功地解決了大部分項(xiàng)目上的問(wèn)題。雖然項(xiàng)目的問(wèn)題雖然解決了,但不可否認(rèn)的是我在游戲開(kāi)發(fā)方面的薄弱點(diǎn)還沒(méi)有徹底解除,仍需要在今后的自我學(xué)習(xí)實(shí)踐中不斷完善提升。在這次游戲項(xiàng)目的開(kāi)發(fā)中,我的同學(xué)們和指導(dǎo)老師提供了不少的有用的資料和教程,才使得這個(gè)游戲項(xiàng)目能最終順利完成制作。?游戲項(xiàng)目雖然制作成功,但是也存在著以下這些問(wèn)題:?1.?場(chǎng)景和人物的素材都是從網(wǎng)上找到下載并導(dǎo)入的,缺乏原創(chuàng)性和新穎度。?2.?因?yàn)榻佑|Unity3D時(shí)間不算很長(zhǎng),目前做出來(lái)的游戲只是在PC端上運(yùn)行,但Unity3D最強(qiáng)大、最吸引人的一點(diǎn)的就是它跨平臺(tái)游戲的制作,而這一方面我并沒(méi)有學(xué)習(xí)到。3.?游戲只有一個(gè)游戲場(chǎng)景,游戲可玩性不高,吸引力不夠。Unity3D是一款十分強(qiáng)大的多平臺(tái)游戲開(kāi)發(fā)工具,可以想象,在未來(lái)逐漸的發(fā)展當(dāng)中,Unity3D還是會(huì)是各游戲開(kāi)發(fā)人員和游戲公司所使用的熱門(mén)工具,在短時(shí)間內(nèi)應(yīng)該不會(huì)被其他游戲開(kāi)發(fā)工具所趕超,可以說(shuō),熟練運(yùn)用這款強(qiáng)大的開(kāi)發(fā)工具,我才能才游戲行業(yè)中開(kāi)始自己的職業(yè)生涯。但由于我對(duì)游戲開(kāi)發(fā)的學(xué)習(xí)不夠深入,我對(duì)這個(gè)游戲開(kāi)發(fā)平臺(tái)還是不夠熟悉和深入了解的,這會(huì)導(dǎo)致大學(xué)畢業(yè)后開(kāi)始尋找游戲開(kāi)發(fā)的工作時(shí)會(huì)有很大的困難和阻礙,所以在完成本畢業(yè)論文后,將本游戲設(shè)計(jì)進(jìn)行完善,解決開(kāi)發(fā)過(guò)程中遇到的一些問(wèn)題,一點(diǎn)點(diǎn)將我做這個(gè)游戲項(xiàng)目中所暴露出來(lái)的問(wèn)題補(bǔ)足,這將會(huì)是我這一段時(shí)間努力學(xué)習(xí)和工作的目標(biāo)。在將來(lái)的日子里,我將不斷學(xué)習(xí),加快學(xué)習(xí)進(jìn)度,去不斷地進(jìn)行嘗試和完善自己,爭(zhēng)取在未來(lái)使用Unity3D這款游戲開(kāi)發(fā)工具開(kāi)發(fā)出做可玩性更高,功能更多,場(chǎng)景更加豐富,屬于自己原創(chuàng)的一款游戲。
參考文獻(xiàn)[1]基于Unity3D的測(cè)控類虛擬仿真實(shí)驗(yàn)技術(shù)研究[D].闞研.華中科技大學(xué)2019[2]移動(dòng)游戲快速開(kāi)發(fā)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[D].趙懋駿.電子科技大學(xué)2016[3]網(wǎng)絡(luò)游戲開(kāi)發(fā)的關(guān)鍵技術(shù)研究與實(shí)現(xiàn)[D].龐影.遼寧大學(xué)2019[4]基于Unity3D的虛擬裝配技術(shù)研究與實(shí)現(xiàn)[D].謝振清.哈爾濱工業(yè)大學(xué)2018[5]基于Unity3D的人體肢體運(yùn)動(dòng)展示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].劉志強(qiáng).電子科技大學(xué)2018[6]基于Unity3D引擎的三維角色扮演游戲設(shè)計(jì)與實(shí)現(xiàn)[D].沈士釗.華中科技大學(xué)2017[7]基于Unity3D的游戲智能行為體的研究與設(shè)計(jì)[D].翟濤.沈陽(yáng)師范大學(xué)2018[8]基于Unity3D的策略養(yǎng)成類游戲設(shè)計(jì)與實(shí)現(xiàn)[D].劉駿堯.吉林大學(xué)2017[9]在游戲開(kāi)發(fā)實(shí)踐中培養(yǎng)程序設(shè)計(jì)能力[J].徐婉珍,李強(qiáng),魏菊霞.計(jì)算機(jī)教育2017[10]Unity游戲設(shè)計(jì)與實(shí)現(xiàn)[M].加藤政樹(shù).人民郵電出版社2015.[11]unity官方案例精講[M].優(yōu)美締軟件上海有限公司.北京:中國(guó)鐵道出版社2015[12]基于OpenGL的3D游戲設(shè)計(jì)[D].劉多多.吉林大學(xué)2016.[13]基于Unity3D的三維游戲場(chǎng)景設(shè)計(jì)與實(shí)踐[D].張策.合肥工業(yè)大學(xué)2016.[14]論游戲的設(shè)計(jì)與教學(xué)改革[J].李珵.設(shè)計(jì)藝術(shù)研究2015[15]國(guó)內(nèi)外網(wǎng)絡(luò)游戲產(chǎn)業(yè)研究文獻(xiàn)綜述[J].李寧琪,李可.價(jià)值工程2008[16]游戲地圖特點(diǎn)分析及對(duì)傳統(tǒng)地圖設(shè)計(jì)的啟發(fā)[J].彭勃,徐惠寧,楊洋.地理空間信息2015
致謝隨著論文慢慢一點(diǎn)點(diǎn)的變長(zhǎng),畢業(yè)設(shè)計(jì)一點(diǎn)點(diǎn)的完成,我才發(fā)現(xiàn)我的大學(xué)生涯也在一步步地接近尾聲,這讓我不禁想起這大學(xué)四年來(lái)的種種經(jīng)歷。三年半的各種專業(yè)課課程中學(xué)到的各種理論知識(shí)和實(shí)踐,悄然變成四年中最后半年才完成的畢業(yè)設(shè)計(jì)和畢業(yè)論文。這四年經(jīng)歷中的所知所得,讓我收獲良多,這不僅為我提供了相對(duì)應(yīng)的專業(yè)知識(shí),提升了專業(yè)技能,為將來(lái)的求職做好充足的準(zhǔn)備,還鍛煉了我自主學(xué)習(xí)、獨(dú)立生活的能力。所以,在此,我想借機(jī)會(huì)對(duì)這四年來(lái)幫助過(guò)我的老師和同學(xué)表達(dá)我內(nèi)心中最真摯的感謝,謝謝這四年來(lái)對(duì)我的支持幫助和鼓勵(lì),因?yàn)橛心銈兊膸椭蛯氋F的意見(jiàn),我才能順利完成這篇畢業(yè)論文的撰寫(xiě)。首先,我非常感謝導(dǎo)師給予的指導(dǎo)和關(guān)心。在畢設(shè)工作的開(kāi)展過(guò)程中,導(dǎo)師在各個(gè)階段給予的指導(dǎo)對(duì)我來(lái)講都十分有效,幫助我解決了畢業(yè)設(shè)計(jì)完成過(guò)程出現(xiàn)的問(wèn)題,讓我受益匪淺,促進(jìn)了我知識(shí)的成長(zhǎng);同時(shí)在導(dǎo)師的關(guān)注下,我也能在這個(gè)比較漫長(zhǎng)的過(guò)程中在實(shí)習(xí)的情況下保持著良好穩(wěn)定的心態(tài)和節(jié)奏去完成畢設(shè)工作,還提供了許多關(guān)于實(shí)際共同工作中的寶貴意見(jiàn)和建議,因此再次向?qū)煴磉_(dá)誠(chéng)懇的感謝和祝福。另外,我要感謝在網(wǎng)絡(luò)上提供各種文字資料和圖片素材的各位網(wǎng)友,讓我進(jìn)一步學(xué)習(xí)和拓展了我對(duì)Unity3D游戲制作方面的知識(shí)。其次,我也很感謝大學(xué)四年期間教授我的所有老師們,沒(méi)有老師們的熱情傳授,我就不能學(xué)習(xí)和接觸到許多有趣的知識(shí),是你們促進(jìn)了我的成長(zhǎng)以及知識(shí)的積累,幫助我為這次的畢業(yè)設(shè)計(jì)做鋪墊。然后,我特別感謝我的父母,是你們不辭勞累在外工作,一直支持著我的求學(xué)之路,使我能夠豐富學(xué)識(shí)和閱歷,從而更好地的在人生道路上前行,謝謝你們!在最后,再次感謝在這大學(xué)四年里,教導(dǎo)我、陪伴我、關(guān)心我的老師的和同學(xué)們,謝謝!
電腦故障檢測(cè)卡代碼表
1、特殊代碼"00"和"ff"及其它起始碼有三種情況出現(xiàn):
①已由一系列其它代碼之后再出現(xiàn):"00"或"ff",則主板ok。
②如果將cmos中設(shè)置無(wú)錯(cuò)誤,則不嚴(yán)重的故障不會(huì)影響bios自檢的繼續(xù),而最終出現(xiàn)"00"或"ff"。
③一開(kāi)機(jī)就出現(xiàn)"00"或"ff"或其它起始代碼并且不變化則為主板沒(méi)有運(yùn)行起來(lái)。
2、本表是按代碼值從小到大排序,卡中出碼順序不定。
3、未定義的代碼表中未列出。
4、對(duì)于不同bios(常用ami、award、phoenix)用同一代碼代表的意義不同,因此應(yīng)弄清您所檢測(cè)的電腦是屬于哪一種類型的bios,您可查閱您的電腦使用手冊(cè),或從主板上的bios芯片上直接查看,也可以在啟動(dòng)屏幕時(shí)直接看到。
5、有少數(shù)主板的pci槽只有一部分代碼出現(xiàn),但isa槽有完整自檢代碼輸出。且目前已發(fā)現(xiàn)有極個(gè)別原裝機(jī)主板的isa槽無(wú)代碼輸出,而pci槽則有完整代碼輸出,故建議您在查看代碼不成功時(shí),將本雙槽卡換到另一種插槽試一下。另外,同一塊主板的不同pci槽,有的槽有完整代碼送出,如dell810主板只有靠近c(diǎn)pu的一個(gè)pci槽有完整代碼顯示,一直變化到"00"或"ff",而其它pci槽走到"38"后則不繼續(xù)變化。
6、復(fù)位信號(hào)所需時(shí)間isa與pci不一定同步,故有可能isa開(kāi)始出代碼,但pci的復(fù)位燈還不熄,故pci代碼停要起始代碼上。
代碼對(duì)照表
00.已顯示系統(tǒng)的配置;即將控制INI19引導(dǎo)裝入。
01處理器測(cè)試1,處理器狀態(tài)核實(shí),如果測(cè)試失敗,循環(huán)是無(wú)限的。處理器寄存器的測(cè)試即將開(kāi)始,不可屏蔽中斷即將停用。CPU寄存器測(cè)試正在進(jìn)行或者失敗。
02確定診斷的類型(正常或者制造)。如果鍵盤(pán)緩沖器含有數(shù)據(jù)就會(huì)失效。停用不可屏蔽中斷;通過(guò)延遲開(kāi)始。CMOS寫(xiě)入/讀出正在進(jìn)行或者失靈。
03清除8042鍵盤(pán)控制器,發(fā)出TESTKBRD命令(AAH)通電延遲已完成。ROMBIOS檢查部件正在進(jìn)行或失靈。
04使8042鍵盤(pán)控制器復(fù)位,核實(shí)TESTKBRD。鍵盤(pán)控制器軟復(fù)位/通電測(cè)試??删幊涕g隔計(jì)時(shí)器的測(cè)試正在進(jìn)行或失靈。
05如果不斷重復(fù)制造測(cè)試1至5,可獲得8042控制狀態(tài)。已確定軟復(fù)位/通電;即將啟動(dòng)ROM。DMA初如準(zhǔn)備正在進(jìn)行或者失靈。
06使電路片作初始準(zhǔn)備,停用視頻、奇偶性、DMA電路片,以及清除DMA電路片,所有頁(yè)面寄存器和CMOS停機(jī)字節(jié)。已啟動(dòng)ROM計(jì)算ROMBIOS檢查總和,以及檢查鍵盤(pán)緩沖器是否清除。DMA初始頁(yè)面寄存器讀/寫(xiě)測(cè)試正在進(jìn)行或失靈。
07處理器測(cè)試2,核實(shí)CPU寄存器的工作。ROMBIOS檢查總和正常,鍵盤(pán)緩沖器已清除,向鍵盤(pán)發(fā)出BAT(基本保證測(cè)試)命令。.
08使CMOS計(jì)時(shí)器作初始準(zhǔn)備,正常的更新計(jì)時(shí)器的循環(huán)。已向鍵盤(pán)發(fā)出BAT命令,即將寫(xiě)入BAT命令。RAM更新檢驗(yàn)正在進(jìn)行或失靈。
09EPROM檢查總和且必須等于零才通過(guò)。核實(shí)鍵盤(pán)的基本保證測(cè)試,接著核實(shí)鍵盤(pán)命令字節(jié)。第一個(gè)64KRAM測(cè)試正在進(jìn)行。
0A使視頻接口作初始準(zhǔn)備。發(fā)出鍵盤(pán)命令字節(jié)代碼,即將寫(xiě)入命令字節(jié)數(shù)據(jù)。第一個(gè)64KRAM芯片或數(shù)據(jù)線失靈,移位。
0B測(cè)試8254通道0。寫(xiě)入鍵盤(pán)控制器命令字節(jié),即將發(fā)出引腳23和24的封鎖/解鎖命令。第一個(gè)64KRAM奇/偶邏輯失靈。
0C測(cè)試8254通道1。鍵盤(pán)控制器引腳23、24已封鎖/解鎖;已發(fā)出NOP命令。第一個(gè)64KRAN的地址線故障。
0D1、檢查CPU速度是否與系統(tǒng)時(shí)鐘相匹配。2、檢查控制芯片已編程值是否符合初設(shè)置。3、視頻通道測(cè)試,如果失敗,則鳴喇叭。已處理NOP命令;接著測(cè)試CMOS停開(kāi)寄存器。第一個(gè)64KRAM的奇偶性失靈
0E測(cè)試CMOS停機(jī)字節(jié)。CMOS停開(kāi)寄存器讀/寫(xiě)測(cè)試;將計(jì)算CMOS檢查總和。初始化輸入/輸出端口地址。
0F測(cè)試擴(kuò)展的CMOS。已計(jì)算CMOS檢查總和寫(xiě)入診斷字節(jié);CMOS開(kāi)始初始準(zhǔn)備。.
10測(cè)試DMA通道0。CMOS已作初始準(zhǔn)備,CMOS狀態(tài)寄存器即將為日期和時(shí)間作初始準(zhǔn)備。第一個(gè)64KRAM第0位故障。
11測(cè)試DMA通道1。CMOS狀態(tài)寄存器已作初始準(zhǔn)備,即將停用DMA和中斷控制器。第一個(gè)64DKRAM第1位故障。
12測(cè)試DMA頁(yè)面寄存器。停用DMA控制器1以及中斷控制器1和2;即將視頻顯示器并使端口B作初始準(zhǔn)備。第一個(gè)64DKRAM第2位故障。
13測(cè)試8741鍵盤(pán)控制器接口。視頻顯示器已停用,端口B已作初始準(zhǔn)備;即將開(kāi)始電路片初始化/存儲(chǔ)器自動(dòng)檢測(cè)。第一個(gè)64DKRAM第3位故障。
14測(cè)試存儲(chǔ)器更新觸發(fā)電路。電路片初始化/存儲(chǔ)器處自動(dòng)檢測(cè)結(jié)束;8254計(jì)時(shí)器測(cè)試即將開(kāi)始。第一個(gè)64DKRAM第4位故障。
15測(cè)試開(kāi)頭64K的系統(tǒng)存儲(chǔ)器。第2通道計(jì)時(shí)器測(cè)試了一半;8254第2通道計(jì)時(shí)器即將完成測(cè)試。第一個(gè)64DKRAM第5位故障。
16建立8259所用的中斷矢量表。第2通道計(jì)時(shí)器測(cè)試結(jié)束;8254第1通道計(jì)時(shí)器即將完成測(cè)試。第一個(gè)64DKRAM第6位故障。
17調(diào)準(zhǔn)視頻輸入/輸出工作,若裝有視頻BIOS則啟用。第1通道計(jì)時(shí)器測(cè)試結(jié)束;8254第0通道計(jì)時(shí)器即將完成測(cè)試。第一個(gè)64DKRAM第7位故障。
18測(cè)試視頻存儲(chǔ)器,如果安裝選用的視頻BIOS通過(guò),由可繞過(guò)。第0通道計(jì)時(shí)器測(cè)試結(jié)束;即將開(kāi)始更新存儲(chǔ)器。第一個(gè)64DKRAM第8位故障。
19測(cè)試第1通道的中斷控制器(8259)屏蔽位。已開(kāi)始更新存儲(chǔ)器,接著將完成存儲(chǔ)器的更新。第一個(gè)64DKRAM第9位故障。
1A測(cè)試第2通道的中斷控制器(8259)屏蔽位。正在觸發(fā)存儲(chǔ)器更新線路,即將檢查15微秒通/斷時(shí)間。第一個(gè)64DKRAM第10位故障。
1B測(cè)試CMOS電池電平。完成存儲(chǔ)器更新時(shí)間30微秒測(cè)試;即將開(kāi)始基本的64K存儲(chǔ)器測(cè)試。第一個(gè)64DKRAM第11位故障。
1C測(cè)試CMOS檢查總和。.第一個(gè)64DKRAM第12位故障。
1D調(diào)定CMOS配置。.第一個(gè)64DKRAM第13位故障。
1E測(cè)定系統(tǒng)存儲(chǔ)器的大小,并且把它和CMOS值比較。.第一個(gè)64DKRAM第14位故障。
1F測(cè)試64K存儲(chǔ)器至最高640K。.第一個(gè)64DKRAM第15位故障。
20測(cè)量固定的8259中斷位。開(kāi)始基本的64K存儲(chǔ)器測(cè)試;即將測(cè)試地址線。從屬DMA寄存器測(cè)試正在進(jìn)行或失靈。
21維持不可屏蔽中斷(NMI)位(奇偶性或輸入/輸出通道的檢查)。通過(guò)地址線測(cè)試;即將觸發(fā)奇偶性。主DMA寄存器測(cè)試正在進(jìn)行或失靈。
22測(cè)試8259的中斷功能。結(jié)束觸發(fā)奇偶性;將開(kāi)始串行數(shù)據(jù)讀/寫(xiě)測(cè)試。主中斷屏蔽寄存器測(cè)試正在進(jìn)行或失靈。
23測(cè)試保護(hù)方式8086虛擬方式和8086頁(yè)面方式?;镜?4K串行數(shù)據(jù)讀/寫(xiě)測(cè)試正常;即將開(kāi)始中斷矢量初始化之前的任何調(diào)節(jié)。從屬中斷屏蔽存器測(cè)試正在進(jìn)行或失靈。
24測(cè)定1MB以上的擴(kuò)展存儲(chǔ)器。矢量初始化之前的任何調(diào)節(jié)完成,即將開(kāi)始中斷矢量的初始準(zhǔn)備。設(shè)置ES段地址寄存器注冊(cè)表到內(nèi)存高端。
25測(cè)試除頭一個(gè)64K之后的所有存儲(chǔ)器。完成中斷矢量初始準(zhǔn)備;將為旋轉(zhuǎn)式斷續(xù)開(kāi)始讀出8042的輸入/輸出端口。裝入中斷矢量正在進(jìn)行或失靈。
26測(cè)試保護(hù)方式的例外情況。讀出8042的輸入/輸出端口;即將為旋轉(zhuǎn)式斷續(xù)開(kāi)始使全局?jǐn)?shù)據(jù)作初始準(zhǔn)備。開(kāi)啟A20地址線;使之參入尋址。
27確定超高速緩沖存儲(chǔ)器的控制或屏蔽RAM。全1數(shù)據(jù)初始準(zhǔn)備結(jié)束;接著將進(jìn)行中斷矢量之后的任何初始準(zhǔn)備。鍵盤(pán)控制器測(cè)試正在進(jìn)行或失靈。
28確定超高速緩沖存儲(chǔ)器的控制或者特別的8042鍵盤(pán)控制器。完成中斷矢量之后的初始準(zhǔn)備;即將調(diào)定單色方式。CMOS電源故障/檢查總和計(jì)算正在進(jìn)行。
29.已調(diào)定單色方式,即將調(diào)定彩色方式。CMOS配置有效性的檢查正在進(jìn)行。
2A使鍵盤(pán)控制器作初始準(zhǔn)備。已調(diào)定彩色方式,即將進(jìn)行ROM測(cè)試前的觸發(fā)奇偶性。置空64K基本內(nèi)存。
2B使磁碟驅(qū)動(dòng)器和控制器作初始準(zhǔn)備。觸發(fā)奇偶性結(jié)束;即將控制任選的視頻ROM檢查前所需的任何調(diào)節(jié)。屏幕存儲(chǔ)器測(cè)試正在進(jìn)行或失靈。
2C檢查串行端口,并使之作初始準(zhǔn)備。完成視頻ROM控制之前的處理;即將查看任選的視頻ROM并加以控制。屏幕初始準(zhǔn)備正在進(jìn)行或失靈。
2D檢測(cè)并行端口,并使之作初始準(zhǔn)備。已完成任選的視頻ROM控制,即將進(jìn)行視頻ROM回復(fù)控制之后任何其他處理的控制。屏幕回掃測(cè)試正在進(jìn)行或失靈。
2E使硬磁盤(pán)驅(qū)動(dòng)器和控制器作初始準(zhǔn)備。從視頻ROM控制之后的處理復(fù)原;如果沒(méi)有發(fā)現(xiàn)EGA/VGA就要進(jìn)行顯示器存儲(chǔ)器讀/寫(xiě)測(cè)試。檢測(cè)視頻ROM正在進(jìn)行。
2F檢測(cè)數(shù)學(xué)協(xié)處理器,并使之作初始準(zhǔn)備。沒(méi)發(fā)現(xiàn)EGA/VGA;即將開(kāi)始顯示器存儲(chǔ)器讀/寫(xiě)測(cè)試。.
30建立基本內(nèi)存和擴(kuò)展內(nèi)存。通過(guò)顯示器存儲(chǔ)器讀/寫(xiě)測(cè)試;即將進(jìn)行掃描檢查。認(rèn)為屏幕是可以工作的。
31檢測(cè)從C800:0至EFFF:0的選用ROM,并使之作初始準(zhǔn)備。顯示器存儲(chǔ)器讀/寫(xiě)測(cè)試或掃描檢查失敗,即將進(jìn)行另一種顯示器存儲(chǔ)器讀/寫(xiě)測(cè)試。單色監(jiān)視器是可以工作的。
32對(duì)主板上COM/LTP/FDD/聲音設(shè)備等I/O芯片編程使之適合設(shè)置值。通過(guò)另一種顯示器存儲(chǔ)器讀/寫(xiě)測(cè)試;卻將進(jìn)行另一種顯示器掃描檢查。彩色監(jiān)視器(40列)是可以工作的。
33.視頻顯示器檢查結(jié)束;將開(kāi)始利用調(diào)節(jié)開(kāi)關(guān)和實(shí)際插卡檢驗(yàn)顯示器的關(guān)型。彩色監(jiān)視器(80列)是可以工作的。
34.已檢驗(yàn)顯示器適配器;接著將調(diào)定顯示方式。計(jì)時(shí)器滴答聲中斷測(cè)試正在進(jìn)行或失靈。35.完成調(diào)定顯示方式;即將檢查BIOSROM的數(shù)據(jù)區(qū)。停機(jī)測(cè)試正在進(jìn)行或失靈。
36.已檢查BIOSROM數(shù)據(jù)區(qū);即將調(diào)定通電信息的游標(biāo)。門(mén)電路中A-20失靈。
37.識(shí)別通電信息的游標(biāo)調(diào)定已完成;即將顯示通電信息。保護(hù)方式中的意外中斷。
38.完成顯示通電信息;即將讀出新的游標(biāo)位置。RAM測(cè)試正在進(jìn)行或者地址故障>FFFFH。
39.已讀出保存游標(biāo)位置,即將顯示引用信息串。.
3A.引用信息串顯示結(jié)束;即將顯示發(fā)現(xiàn)信息。間隔計(jì)時(shí)器通道2測(cè)試或失靈。
3B用OPTI電路片(只是486)使輔助超高速緩沖存儲(chǔ)器作初始準(zhǔn)備。已顯示發(fā)現(xiàn)<ESC>信息;虛擬方式,存儲(chǔ)器測(cè)試即將開(kāi)始。按日計(jì)算的日歷時(shí)鐘測(cè)試正在進(jìn)行或失靈。
3C建立允許進(jìn)入CMOS設(shè)置的標(biāo)志。.串行端口測(cè)試正在進(jìn)行或失靈。
3D初始化鍵盤(pán)/PS2鼠標(biāo)/PNP設(shè)備及總內(nèi)存節(jié)點(diǎn)。.并行端口測(cè)試正在進(jìn)行或失靈。
3E嘗試打開(kāi)L2高速緩存。.數(shù)學(xué)協(xié)處理器測(cè)試正在進(jìn)行或失靈。
40.已開(kāi)始準(zhǔn)備虛擬方式的測(cè)試;即將從視頻存儲(chǔ)器來(lái)檢驗(yàn)。調(diào)整CPU速度,使之與外圍時(shí)鐘精確匹配。
41中斷已打開(kāi),將初始化數(shù)據(jù)以便于0:0檢測(cè)內(nèi)存變換(中斷控制器或內(nèi)存不良)從視頻存儲(chǔ)器檢驗(yàn)之后復(fù)原;即將準(zhǔn)備描述符表。系統(tǒng)插件板選擇失靈。
42顯示窗口進(jìn)入SETUP。描述符表已準(zhǔn)備好;即將進(jìn)行虛擬方式作存儲(chǔ)器測(cè)試。擴(kuò)展CMOSRAM故障。
43若是即插即用BIOS,則串口、并口初始化。進(jìn)入虛擬方式;即將為診斷方式實(shí)現(xiàn)中斷。.44.已實(shí)現(xiàn)中斷(如已接通診斷開(kāi)關(guān);即將使數(shù)據(jù)作初始準(zhǔn)備以檢查存儲(chǔ)器在0:0返轉(zhuǎn)。)BIOS中斷進(jìn)行初始化。
45初始化數(shù)學(xué)協(xié)處理器。數(shù)據(jù)已作初始準(zhǔn)備;即將檢查存儲(chǔ)器在0:0返轉(zhuǎn)以及找出系統(tǒng)存儲(chǔ)器的規(guī)模。.
46.測(cè)試存儲(chǔ)器已返回;存儲(chǔ)器大小計(jì)算完畢,即將寫(xiě)入頁(yè)面來(lái)測(cè)試存儲(chǔ)器。檢查只讀存儲(chǔ)器ROM版本。
47.即將在擴(kuò)展的存儲(chǔ)器試寫(xiě)頁(yè)面;即將基本640K存儲(chǔ)器寫(xiě)入頁(yè)面。
48.已將基本存儲(chǔ)器寫(xiě)入頁(yè)面;即將確定1MB以上的存儲(chǔ)器。視頻檢查,CMOS重新配置。
49.找出1BM以下的存儲(chǔ)器并檢驗(yàn);即將確定1MB以上的存儲(chǔ)器。.
4A.找出1MB以上的存儲(chǔ)器并檢驗(yàn);即將檢查BIOSROM數(shù)據(jù)區(qū)。進(jìn)行視頻的初始化。
4B.BIOSROM數(shù)據(jù)區(qū)的檢驗(yàn)結(jié)束,即將檢查<ESC>和為軟復(fù)位清除1MB以上的存儲(chǔ)器。.4C.清除1MB以上的存儲(chǔ)器(軟復(fù)位)即將清除1MB以上的存儲(chǔ)器.屏蔽視頻BIOSROM。.4D。已清除1MB以上的存儲(chǔ)器(軟復(fù)位);將保存存儲(chǔ)器的大小。.
4E若檢測(cè)到有錯(cuò)誤;在顯示器上顯示錯(cuò)誤信息,并等待客戶按<F1>鍵繼續(xù)。開(kāi)始存儲(chǔ)器的測(cè)試:(無(wú)軟復(fù)位);即將顯示第一個(gè)64K存儲(chǔ)器的測(cè)試。顯示版權(quán)信息。
4F讀寫(xiě)軟、硬盤(pán)數(shù)據(jù),進(jìn)行DOS引導(dǎo)。開(kāi)始顯示存儲(chǔ)器的大小,正在測(cè)試存儲(chǔ)器將使之更新;將進(jìn)行串行和隨機(jī)的存儲(chǔ)器測(cè)試。.
50將當(dāng)前BIOS監(jiān)時(shí)區(qū)內(nèi)的CMOS值存到CMOS中。完成1MB以下的存儲(chǔ)器測(cè)試;即將高速存儲(chǔ)器的大小以便再定位和掩蔽。將CPU類型和速度送到屏幕。
51.測(cè)試1MB以上的存儲(chǔ)器。.
52所有ISA只讀存儲(chǔ)器ROM進(jìn)行初始化,最終給PCI分配IRQ號(hào)等初始化工作。已完成1MB以上的存儲(chǔ)器測(cè)試;即將準(zhǔn)備回到實(shí)址方式。進(jìn)入鍵盤(pán)檢測(cè)。
53如果不是即插即用BIOS,則初始化串口、并口和設(shè)置時(shí)種值。保存CPU寄存器和存儲(chǔ)器的大小,將進(jìn)入實(shí)址方式。.
54.成功地開(kāi)啟實(shí)址方式;即將復(fù)原準(zhǔn)備停機(jī)時(shí)保存的寄存器。掃描“打擊鍵”
55.寄存器已復(fù)原,將停用門(mén)電路A-20的地址線。.
56.成功地停用A-20的地址線;即將檢查BIOSROM數(shù)據(jù)區(qū)。鍵盤(pán)測(cè)試結(jié)束。
57.BIOSROM數(shù)據(jù)區(qū)檢查了一半;繼續(xù)進(jìn)行。.
58.BIOSROM的數(shù)據(jù)區(qū)檢查結(jié)束;將清除發(fā)現(xiàn)<ESC>信息。非設(shè)置中斷測(cè)試。
59.已清除<ESC>信息;信息已顯示;即將開(kāi)始DMA和中斷控制器的測(cè)試。.
5A..顯示按“F2”鍵進(jìn)行設(shè)置。
5B..測(cè)試基本內(nèi)存地址。
5C..測(cè)試640K基本內(nèi)存。
60設(shè)置硬盤(pán)引導(dǎo)扇區(qū)病毒保護(hù)功能。通過(guò)DMA頁(yè)面寄存器的測(cè)試;即將檢驗(yàn)視頻存儲(chǔ)器。測(cè)試擴(kuò)展內(nèi)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 罐體租賃合同范本
- 商業(yè)房屋合同范本
- 臺(tái)山租房合同范本
- β-keto-Phentermine-hydrochloride-生命科學(xué)試劑-MCE
- PBPE-hydrochloride-生命科學(xué)試劑-MCE
- 2025新疆機(jī)場(chǎng)(集團(tuán))有限責(zé)任公司庫(kù)爾勒管理分公司招聘(70人)筆試參考題庫(kù)附帶答案詳解
- ELQ-316-生命科學(xué)試劑-MCE
- 知識(shí)產(chǎn)權(quán)侵權(quán)案例分析與商業(yè)秘密的防范措施
- 電子商務(wù)平臺(tái)的數(shù)據(jù)庫(kù)技術(shù)與架構(gòu)
- 知識(shí)版權(quán)與教育行業(yè)的緊密關(guān)系解析
- 2024年工業(yè)和信息化部應(yīng)急通信保障中心招聘高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 物體打擊傷亡事故應(yīng)急處置卡
- 2024-2030年中國(guó)飛機(jī)AFP和ATL復(fù)合材料行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 《祝?!饭_(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì) 統(tǒng)編版高中語(yǔ)文必修下冊(cè)-1
- 20兆瓦光伏漁光互補(bǔ)電站項(xiàng)目可行性研究報(bào)告
- 新疆維吾爾自治區(qū)2024年中考英語(yǔ)真題【附真題答案】
- 七年級(jí)英語(yǔ)上冊(cè)(人教版2024)新教材解讀課件
- NB/T 11431-2023土地整治煤矸石回填技術(shù)規(guī)范
- 繼續(xù)醫(yī)學(xué)教育項(xiàng)目申報(bào)表
- 中醫(yī)師承跟師筆記50篇
- 《工程地質(zhì)學(xué)》孔憲立-石振明第五章(部編)課件
評(píng)論
0/150
提交評(píng)論