游戲設(shè)計(jì)與制作ppt課件(完整版)_第1頁(yè)
游戲設(shè)計(jì)與制作ppt課件(完整版)_第2頁(yè)
游戲設(shè)計(jì)與制作ppt課件(完整版)_第3頁(yè)
游戲設(shè)計(jì)與制作ppt課件(完整版)_第4頁(yè)
游戲設(shè)計(jì)與制作ppt課件(完整版)_第5頁(yè)
已閱讀5頁(yè),還剩283頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第1章 游戲概論單擊此處添加副標(biāo)題內(nèi)容游戲的概念游戲游戲的發(fā)展與演變電子游戲的分類游戲程序本章學(xué)習(xí)要點(diǎn):1.1 游戲的概念首先,游戲是一種行為活動(dòng);其次,游戲是以獲得快樂(lè)或自足為目的;再次,游戲必須以自愿和自由為前提;最后,伴隨著游戲活動(dòng)的展開(kāi),無(wú)論是有意識(shí)還是無(wú)意識(shí),游戲本身都會(huì)被賦予某些規(guī)則。根據(jù)以上四種特性,我們來(lái)對(duì)游戲進(jìn)行定義:游戲是以自愿和自由為前提、以獲得快樂(lè)和自足為目的且具有一定規(guī)則的行為活動(dòng)。1.1 游戲的概念1.1 游戲的概念1.1.2 游戲的特征1.自愿2.體驗(yàn)樂(lè)趣(1) 興趣性體驗(yàn)。這是一種為外界刺激物所捕捉和占據(jù)的體驗(yàn),是一種情不自禁地被 卷入、被吸引的心理狀態(tài)。 (2

2、) 自主性體驗(yàn)。這是一種由游戲活動(dòng)能夠自由選 擇、自主決定的性質(zhì)引起的主觀體驗(yàn),即“我想玩就玩,不想玩就不玩”或“我想怎么玩就怎么玩”的體驗(yàn),這同時(shí)也是游戲自由特性的體現(xiàn)。(3) 愉悅性體驗(yàn)。(4) 活動(dòng)性體驗(yàn)。 (5) 成就感或勝任感體驗(yàn)。1.1 游戲的概念1.1.3 游戲的本質(zhì)1. 體驗(yàn)性2. 規(guī)則性3. 自主性4. 虛幻性1.2 游戲的發(fā)展與演變1.2.1電子游戲的誕生 1.2 游戲的發(fā)展與演變 1.2.2 2D游戲時(shí)代 1.2 游戲的發(fā)展與演變 2.3 3D游戲時(shí)代 1.2 游戲的發(fā)展與演變 1.2.4手機(jī)游戲 1.3 電子游戲的分類 1.3.1角色扮演類游戲按載體分類單機(jī)角色扮演游戲

3、通常意義的RPG大型多人在線角色扮演游戲MMORPG按題材分類歐美角色扮演游戲歐美文化背景下的RPG日式角色扮演游戲日式幻想風(fēng)格RPG國(guó)產(chǎn)角色扮演游戲中國(guó)玄幻、武俠RPG按游戲方式分類回合制角色扮演游戲標(biāo)準(zhǔn)RPG動(dòng)作型角色扮演游戲A-RPG策略戰(zhàn)棋類角色扮演游戲SRPG 1.3 電子游戲的分類 1.3.2 動(dòng)作類游戲按畫(huà)面形式分類橫版過(guò)關(guān)類動(dòng)作游戲傳統(tǒng)意義的動(dòng)作游戲2D動(dòng)作游戲2D通面的動(dòng)作游戲3D動(dòng)作游戲3D畫(huà)面的動(dòng)作游戲按游戲方式分類傳統(tǒng)動(dòng)作游戲標(biāo)準(zhǔn)ACT動(dòng)作冒險(xiǎn)類游戲融合了冒險(xiǎn)解謎要素的ACT格斗類游戲FTG動(dòng)作射擊游戲融合了射擊游戲要素的ACT動(dòng)作型角色扮演游戲ARPG 1.3 電子游

4、戲的分類 1.3.3冒險(xiǎn)類游戲按游戲方式分類文字類冒險(xiǎn)游戲TAG圖像類冒險(xiǎn)游戲GAG動(dòng)作類冒險(xiǎn)游戲AAG日式AVG游戲JAVG休閑解密類游戲PAG按游戲方式分類文字類冒險(xiǎn)游戲TAG圖像類冒險(xiǎn)游戲GAG動(dòng)作類冒險(xiǎn)游戲AAG 1.3 電子游戲的分類 1.3.4策略類游戲 1.3 電子游戲的分類 1.3.5射擊類游戲按畫(huà)面2D平臺(tái)類卷軸類3D全3D2.5D按視角第一人稱FPS 第三人稱平視角、俯視角按主體對(duì)象角色類射擊游戲以角色為射擊主體載具類射擊游戲駕駛射擊、飛行射擊 1.3 電子游戲的分類 1.3.6 體育類游戲 1.3 電子游戲的分類 1.3.6 競(jìng)速類游戲 1.3 電子游戲的分類 1.3.7

5、 競(jìng)速類游戲 1.3 電子游戲的分類 1.3.8 模擬類游戲 1.3 電子游戲的分類 1.3.9 益智類游戲 1.4 游戲程序1.4.1 游戲程序的定義1.4.2 常用的游戲編程語(yǔ)言(1) 匯編語(yǔ)言(2) C語(yǔ)言(3) C+語(yǔ)言(4) JAVA語(yǔ)言(5) C#語(yǔ)言 1.4 游戲程序1.4.3游戲引擎的定義(1) 首先是光影效果,即場(chǎng)景中的光源對(duì)所有物體的影響方式。(2)其次是動(dòng)畫(huà)。(3)游戲引擎的另一重要功能是提供物理系統(tǒng)。(4)渲染是游戲引擎最重要的功能之一。(5)游戲引擎還有一個(gè)重要的職責(zé)就是負(fù)責(zé)玩家與計(jì)算機(jī)之間的溝通,包括處理來(lái)自鍵盤(pán)、鼠標(biāo)、搖桿和其他外設(shè)的輸入信號(hào)。 1.4 游戲程序1

6、.4.4世界主流游戲引擎介紹(1)Unreal(虛幻)引擎(2)CryEngine 引擎(3)Gamebryo引擎(4)Unity引擎1.4.5 游戲引擎編輯器的基本功能游戲引擎是一個(gè)十分復(fù)雜的綜合概念,其中包括眾多的內(nèi)容,既有抽象的邏輯程序概念,也包括具象的實(shí)際操作平臺(tái),引擎編輯器就是游戲引擎中最為直觀的交互平臺(tái),它承載了企劃、美術(shù)制作人員與游戲程序的銜接任務(wù)。一套成熟完整的游戲引擎編輯器一般包含以下幾部分:場(chǎng)景地圖編輯器、場(chǎng)景模型編輯器、角色模型編輯器、動(dòng)畫(huà)特效編輯器和任務(wù)編輯器,不同的編輯器負(fù)責(zé)不同的制作任務(wù),以供不同的游戲制作人員使用。單擊此處添加副標(biāo)題內(nèi)容謝謝聆聽(tīng)第2章 C#程序語(yǔ)言

7、基礎(chǔ)知識(shí)目標(biāo)熟悉Visual Studio的使用熟悉C#的基礎(chǔ)知識(shí)以及基本語(yǔ)法學(xué)習(xí)面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù)和方法掌握如何通過(guò)C#開(kāi)發(fā)應(yīng)用程序?qū)W習(xí)目標(biāo)能力目標(biāo)學(xué)會(huì)使用Visual Studio軟件創(chuàng)建C#項(xiàng)目掌握使用Visual Studio進(jìn)行編寫(xiě)C#程序使用C#語(yǔ)言編寫(xiě)小程序(小游戲)完成“連連看”游戲的開(kāi)發(fā)2.1 C#程序設(shè)計(jì)概述2.1.1 C#語(yǔ)言發(fā)展歷史及特點(diǎn)C#的由來(lái):微軟公司在2000年發(fā)布的一種新的基于.NET平臺(tái)的面向?qū)ο蟮母呒?jí)編程語(yǔ)言。C#特點(diǎn):語(yǔ)法簡(jiǎn)潔,不允許直接操作內(nèi)存,去掉了指針操作。徹底的面向?qū)ο笤O(shè)計(jì),封裝、繼承、多態(tài)。與Web緊密結(jié)合,C#支持絕大多數(shù)的Web標(biāo)準(zhǔn),如

8、HTML、XML、SOAP。安全機(jī)制很強(qiáng)大,.NET提供的垃圾回收器能夠幫助開(kāi)發(fā)者有效的管理內(nèi)存資源。兼容性,因?yàn)镃#遵循.NET的公共語(yǔ)言規(guī)范(CLS),從而能夠保證與其它語(yǔ)言開(kāi)發(fā)的組 件兼容。靈活的版本控制技術(shù),因?yàn)镃#語(yǔ)言本身內(nèi)置了版本控制功能,因此是開(kāi)發(fā)人員更容易的開(kāi)發(fā)和維護(hù)完善的錯(cuò)誤、異常處理機(jī)制。C#提供了完善的錯(cuò)誤和異常處理機(jī)制,使程序更加健壯。2.1 C#程序設(shè)計(jì)概述2.1.2 編程語(yǔ)言與腳本語(yǔ)言編程語(yǔ)言(Programming language)是用來(lái)定義計(jì)算機(jī)程序的形式語(yǔ)言。它是一種被標(biāo)準(zhǔn)化的交流技巧,用來(lái)向計(jì)算機(jī)發(fā)出指令。一種計(jì)算機(jī)語(yǔ)言讓程序員能夠準(zhǔn)確地定義計(jì)算機(jī)所需要使

9、用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動(dòng)。腳本語(yǔ)言(Scripting Language)又被稱為擴(kuò)建的語(yǔ)言,或者動(dòng)態(tài)語(yǔ)言,是一種編程語(yǔ)言,用來(lái)控制軟件應(yīng)用程序,腳本通常以文本(如ASCII)保存,只在被調(diào)用時(shí)進(jìn)行解釋或編譯。2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法1.C#基本數(shù)據(jù)類型 C#的數(shù)據(jù)類型分值類型(Value Type)和引用類型(Reference Type)兩大類 值類型包括簡(jiǎn)單類型(Simple Type) 結(jié)構(gòu)類型(Struct Type) 枚舉類型(Enum Type) 引用類型包括類類型(Class Type) 接口類型(Interface Type

10、) 委托類型(Delegate) 數(shù)組類型(Array Type) 值類型與引用類型的區(qū)別 前者一般是存在棧中,后者則是有一個(gè)引用變量,一個(gè)對(duì)象內(nèi)存(存入堆中)2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法2.C#運(yùn)算符C#運(yùn)算符包括:算術(shù)運(yùn)算符、邏輯運(yùn)算符、比較運(yùn)算符、位運(yùn)算符、條件運(yùn)算符、賦值運(yùn)算符算術(shù)運(yùn)算符:進(jìn)行算術(shù)運(yùn)算的運(yùn)算符,包括加法、減法、乘法、除法、取余等2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法邏輯運(yùn)算符:進(jìn)行邏輯運(yùn)算的運(yùn)算符,主要包括與、或、非等2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法比較運(yùn)算符:在條件判

11、斷中經(jīng)常使用的一類運(yùn)算符,包括大于、小于、不等于、大于等于、小于等于等,使用比較運(yùn)算符運(yùn)算得到的結(jié)果是布爾型的值,因此經(jīng)常將使用比較運(yùn)算符的表達(dá)式用到邏輯運(yùn)算符的運(yùn)算中。2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法位運(yùn)算符:位運(yùn)算通常是指將數(shù)值型的值從十進(jìn)制轉(zhuǎn)換成二進(jìn)制后的運(yùn)算,由于是對(duì)二進(jìn)制數(shù)進(jìn)行運(yùn)算。位運(yùn)算包括與、或、 非、左移、右移等。賦值運(yùn)算符2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法條件運(yùn)算符:又稱為三元運(yùn)算符,在 C# 語(yǔ)言中條件運(yùn)算符只有一個(gè),具體的語(yǔ)法形式如下:布爾表達(dá)式 ? 表達(dá)式 1: 表達(dá)式 2其中:布爾表達(dá)

12、式:判斷條件,它是一個(gè)結(jié)果為布爾型值的表達(dá)式。表達(dá)式 1:如果布爾表達(dá)式的值為 True,該條件運(yùn)算符得到的結(jié)果就是表達(dá)式 1 的運(yùn)算結(jié)果。表達(dá)式 2:如果布爾表達(dá)式的值為 False,該條件運(yùn)算符得到的結(jié)果就是表達(dá)式 2 的運(yùn)算結(jié)果。2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法賦值運(yùn)算符:進(jìn)行賦值操作的運(yùn)算符2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法條件運(yùn)算符:又稱為三元運(yùn)算符,在 C# 語(yǔ)言中條件運(yùn)算符只有一個(gè),具體的語(yǔ)法形式如下:布爾表達(dá)式 ? 表達(dá)式 1: 表達(dá)式 2其中:布爾表達(dá)式:判斷條件,它是一個(gè)結(jié)果為布爾型值的表達(dá)式。表達(dá)式 1:如果布爾表達(dá)式的值為 True,該

13、條件運(yùn)算符得到的結(jié)果就是表達(dá)式 1 的運(yùn)算結(jié)果。表達(dá)式 2:如果布爾表達(dá)式的值為 False,該條件運(yùn)算符得到的結(jié)果就是表達(dá)式 2 的運(yùn)算結(jié)果。2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法運(yùn)算符的優(yōu)先級(jí):多個(gè)運(yùn)算符進(jìn)行計(jì)算時(shí),運(yùn)算符的運(yùn)算有先后順序2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法3.C#變量與常量的定義和使用變量:理解為存放數(shù)據(jù)的容器,并且在將值存放到變量中時(shí)還要為變量指定數(shù)據(jù)類型。定義變量的語(yǔ)法如下:數(shù)據(jù)類型 變量名;例如:定義一個(gè)整形變量xint x;常量:在第一次被賦值后值就不能再改變。定義常量需要使用關(guān)鍵字 co

14、nst 來(lái)完成。具體的定義常量的語(yǔ)法如下:const 數(shù)據(jù)類型 常量名 = 值;例如:const double PI = 3.14;2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法4.C#變量命名規(guī)則C#常用的命名方法有兩種,一種是 Pascal 命名法(帕斯卡命名法),另一種是 Camel 命名法(駝峰命名法)。2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法5.C#選擇結(jié)構(gòu)(分支結(jié)構(gòu))選擇結(jié)構(gòu):根據(jù)判斷的結(jié)果來(lái)控制程序的流程,常見(jiàn)的分支有雙分支結(jié)構(gòu)和多分支結(jié)構(gòu)兩種雙分支結(jié)構(gòu)一般有三種變現(xiàn)形式:?jiǎn)蝹€(gè)if 語(yǔ)句,小括號(hào)表達(dá)式為true即執(zhí)行大括號(hào)里語(yǔ)句,如:if(布爾表達(dá)式) 語(yǔ)句塊;單個(gè)

15、ifelse語(yǔ)句,小括號(hào)表達(dá)式為true即執(zhí)行接下來(lái)的大括號(hào)里語(yǔ)句,否則即執(zhí)行else后面大括號(hào)語(yǔ)句,如:if(布爾表達(dá)式) 語(yǔ)句塊 1; else 語(yǔ)句塊 2;ifelse嵌套使用,在某個(gè)分支條件上再進(jìn)行條件分支選擇,如:2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法5.C#選擇結(jié)構(gòu)(分支結(jié)構(gòu))if(布爾表達(dá)式 1) 語(yǔ)句塊 1;else if(布爾表達(dá)式 2) 語(yǔ)句塊 2;.else 語(yǔ)句塊 n;2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法5.C#選擇結(jié)構(gòu)(分支結(jié)構(gòu))多分支型選擇結(jié)構(gòu):計(jì)算switch后括號(hào)表達(dá)式的值,根據(jù)其值選擇case后的值得語(yǔ)句執(zhí)行。switch(表達(dá)式)

16、case 值 1: 語(yǔ)句塊 1; break; case 值 2: 語(yǔ)句塊 2; break; . default: 語(yǔ)句塊 n; break;2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法6.C#循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是指在程序中需要反復(fù)執(zhí)行某個(gè)功能而設(shè)置的一種程序結(jié)構(gòu)。它由循環(huán)體中的條件,判斷繼續(xù)執(zhí)行某個(gè)功能還是退出循環(huán)。for循環(huán):先執(zhí)行表達(dá)式 1,然后執(zhí)行表達(dá)式 2,如果表達(dá)式 2 的結(jié)果為 True,則執(zhí)行表達(dá)式 4,再執(zhí)行表達(dá)式 3 來(lái)改變循環(huán)變量,接著執(zhí)行表達(dá)式 2 看是否為 True,如果為 True,則執(zhí)行表達(dá)式 4,直到表達(dá)式 2 的結(jié)果為 False,循環(huán)結(jié)束。for(表達(dá)

17、式 1; 表達(dá)式 2; 表達(dá)式3) 表達(dá)式 4;2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法6.C#循環(huán)結(jié)構(gòu)while循環(huán):while 語(yǔ)句執(zhí)行的過(guò)程是,當(dāng) while 中布爾表達(dá)式的結(jié)果為 True 時(shí),執(zhí)行語(yǔ)句塊中的內(nèi)容,否則不執(zhí)行。while(布爾表達(dá)式) 語(yǔ)句塊;2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法6.C#循環(huán)結(jié)構(gòu)do while循環(huán):先執(zhí)行 do 中語(yǔ)句塊的內(nèi)容,再判斷 while() 中布爾表達(dá)式的值是否為 True,如果為 True,則繼續(xù)執(zhí)行語(yǔ)句塊中的內(nèi)容,否則不執(zhí)行,因此 do while 語(yǔ)句中的語(yǔ)句塊至少會(huì)執(zhí)行一次。do 語(yǔ)句塊;while(布爾表達(dá)式

18、);2.1 C#程序設(shè)計(jì)概述2.1.3 C#的基本語(yǔ)法7.C# goto語(yǔ)句goto 語(yǔ)句用于直接在一個(gè)程序中轉(zhuǎn)到程序中的標(biāo)簽指定的位置,標(biāo)簽實(shí)際上由標(biāo)識(shí)符加上冒號(hào)構(gòu)成。語(yǔ)法形式如下:goto Labell; 語(yǔ)句塊 1;Labell 語(yǔ)句塊 2;2.1 C#程序設(shè)計(jì)概述2.1.4 C#面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο笳Z(yǔ)言三大特點(diǎn):封裝、繼承、多態(tài)1. 封裝封裝:把一個(gè)或多個(gè)項(xiàng)目封閉在一個(gè)物理的或者邏輯的包中C# 支持的訪問(wèn)修飾符有:public:所有對(duì)象都可以訪問(wèn)。private:對(duì)象本身在對(duì)象內(nèi)部可以訪問(wèn)。protected:只有該類對(duì)象及其子類對(duì)象可以訪問(wèn)。internal:同一個(gè)程序集的對(duì)象可

19、以訪問(wèn)。protected internal:訪問(wèn)限于當(dāng)前程序集或派生自包含類的類型。2.1 C#程序設(shè)計(jì)概述2.1.4 C#面向?qū)ο蟪绦蛟O(shè)計(jì)2. 繼承繼承:子類自動(dòng)地從父類那里繼承所有的字段、方法、屬性、索引器等成員作為自己的成員。class Apublic int a;class B : Anew public int a;A為父類,B是A的子類,B繼承A的所有特性。接口:不同類之間的相同成員的集合,通過(guò)關(guān)鍵字interface定義2.1 C#程序設(shè)計(jì)概述2.1.4 C#面向?qū)ο蟪绦蛟O(shè)計(jì)3. 多態(tài)多態(tài):同一操作作用于不同的對(duì)象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果.重載:父類與子類之間存在

20、方法名相同,參數(shù)不同的方法。調(diào)用哪個(gè)方法取決于方法的參數(shù)。重寫(xiě):父類中的方法為抽象方法(virtual關(guān)鍵字聲明方法),子類使用(override關(guān)鍵字)重新聲明該方法。2.1 C#程序設(shè)計(jì)概述2.2 使用C#進(jìn)行程序開(kāi)發(fā)2.2.1 一個(gè)典型的游戲循環(huán)代碼框架用一個(gè)循環(huán)語(yǔ)句來(lái)維持游戲的持續(xù)運(yùn)行狀態(tài):游戲初始化 while(!游戲結(jié)束) 游戲邏輯 保持幀速率 游戲結(jié)束 清理資源釋放內(nèi)存空間流程圖:2.1 C#程序設(shè)計(jì)概述2.2 使用C#進(jìn)行程序開(kāi)發(fā)2.2.2 簡(jiǎn)單的Windows程序(見(jiàn)教材)2.2.3 第一個(gè)“游戲”(見(jiàn)教材)2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.1 游戲

21、概述(1) 概要:玩家可以將 2 個(gè)相同圖案的牌連接起來(lái),連接線不多于 3 根直線,就可以成功將兩個(gè)牌消除。 (2) 操作:第一次使用鼠標(biāo)單擊游戲界面中的牌,該牌此時(shí)為“被選中”,以特殊方式顯示;再次以鼠標(biāo)單擊其他牌,若該牌與被選中的牌圖案相同,且把第一個(gè)牌到第二個(gè)牌連起來(lái),中間的直線不超過(guò) 3 根,則消掉這一對(duì)牌,否則第一個(gè)牌恢復(fù)成未被選中狀態(tài),而第二個(gè)牌變成被選中狀態(tài)。(3) 勝利條件:將游戲界面上的牌全部消除掉。(4) 失敗條件:到規(guī)定時(shí)間,界面上的牌仍未全部消掉。2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.2 游戲設(shè)計(jì)思路軟件分成兩個(gè)模塊:整體界面的設(shè)計(jì)和圖片的隨機(jī)生成

22、;圖片路徑判斷函數(shù);2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.3 界面設(shè)計(jì)連連看游戲界面設(shè)計(jì)由兩部分組成:游戲區(qū)域和控制區(qū)域。游戲區(qū)域:包括游戲操作區(qū)域和計(jì)時(shí)區(qū)域,是游戲面向用戶的主要功能窗口??刂茀^(qū)域:控制方塊的種類數(shù)目,單個(gè)方塊的重復(fù)數(shù)。啟動(dòng)游戲,重列方塊,以及計(jì)算游戲得分。2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.4 圖片的隨機(jī)生成(具體見(jiàn)教材)圖片的隨機(jī)生成分兩步驟實(shí)現(xiàn)。程序運(yùn)行時(shí)即載入游戲需要的N張圖片,默認(rèn)情況下圖片種類數(shù)是18,重復(fù)數(shù)是4(重復(fù)數(shù)必須是偶數(shù)),并且可以選擇是否重列。通過(guò)一個(gè)循環(huán),加載隨即的選擇N種圖片。當(dāng)確認(rèn)游戲開(kāi)始時(shí),通過(guò)畫(huà)圖

23、過(guò)程完成圖片生成。1.3.5 事件處理(具體見(jiàn)教材)游戲共有兩個(gè)單擊按鈕:開(kāi)始游戲(進(jìn)入游戲狀態(tài))、重列(重新加載圖片)2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.6 圖片的消除與得分(具體見(jiàn)教材)1.圖片的消除游戲連線思路:假設(shè)目標(biāo)點(diǎn) p1、p2 ,如果有兩個(gè)折點(diǎn)分別為z1、z2,那么,所要進(jìn)行的是:如果驗(yàn)證p1、p2 直線連線,則連接成立。搜索以p1、p2的x、y方向四條直線(可能某兩條直線會(huì)重合)上的有限點(diǎn),每次取兩點(diǎn)作為z1、z2,驗(yàn)證p1到z1/z1到z2/z2到p2 是否都能直線相連,是則連接成立。2.計(jì)分規(guī)則本游戲的計(jì)分規(guī)則為:直連得10分,一個(gè)拐點(diǎn)得20,兩個(gè)拐

24、點(diǎn)得40。用一個(gè)Label控件存儲(chǔ)得分。2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.7 項(xiàng)目打包1.新建安裝部署項(xiàng)目單擊“新建項(xiàng)目”,選擇“其他項(xiàng)目類型”“安裝與部署”“安裝向?qū)А?安裝項(xiàng)目也一樣),然后單擊“確定”按鈕2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.7 項(xiàng)目打包2.安裝向?qū)шP(guān)閉后打開(kāi)安裝向?qū)?,單擊下一?.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.7 項(xiàng)目打包3.開(kāi)始制作安裝向?qū)瓿珊蠹纯蛇M(jìn)入項(xiàng)目文件夾:雙擊“應(yīng)用程序文件夾”在右邊的空白處右擊,選擇添加文件,將你的做的應(yīng)用程序的可執(zhí)行文件和相應(yīng)的類庫(kù)和組件添加進(jìn)來(lái)(注意是bin/de

25、bug下面的所有文件)2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.7 項(xiàng)目打包3.開(kāi)始制作然后右擊可執(zhí)行文件,創(chuàng)建快捷方式2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.7 項(xiàng)目打包3.開(kāi)始制作然后把快捷方式分別剪切或復(fù)制到左邊的“用戶的程序菜單”和“用戶桌面”中。這樣安裝程序安裝安裝完成后會(huì)在“開(kāi)始”“所有程序”和“桌面”上生成程序的快捷方式2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.7 項(xiàng)目打包3.開(kāi)始制作然后右擊左邊的“應(yīng)用程序文件夾”選擇“屬性”命令2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.7 項(xiàng)目打包3.開(kāi)始制作將屬性中的

26、“defaultlocation”的路徑中的“manufacturer”去掉,不然的話做好的安裝程序默認(rèn)安裝目錄會(huì)是“c:programm file你的用戶名安裝解決方案名稱”。然后打開(kāi)解決方案管理器,右擊解決方案名稱,選擇屬性(注意在本項(xiàng)目中時(shí)在setup6上右擊鼠標(biāo))2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.7 項(xiàng)目打包3.開(kāi)始制作在打開(kāi)的屬性頁(yè)中,選擇“系統(tǒng)必備”2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.7 項(xiàng)目打包3.開(kāi)始制作在打開(kāi)的系統(tǒng)必備頁(yè)中,選中如上中的選擇項(xiàng),這個(gè)很重要!(一般情況下默認(rèn)已經(jīng)選擇上了,只要單擊確定,回到下面界面)選上以后,在生

27、成的安裝文件包中包含.netframework組件2.1 C#程序設(shè)計(jì)概述2.3 休閑類小游戲:連連看2.3.7 項(xiàng)目打包3.開(kāi)始制作在打開(kāi)的系統(tǒng)必備頁(yè)中,選中如上中的選擇項(xiàng),這個(gè)很重要!(一般情況下默認(rèn)已經(jīng)選擇上了,只要單擊確定,回到下面界面)選上以后,在生成的安裝文件包中包含.netframework組件單擊“確定”按鈕,然后單擊“生成”“生成解決方案”單擊此處添加副標(biāo)題內(nèi)容謝謝聆聽(tīng)2021走進(jìn)Unity的世界第3章 Unity 3D游戲開(kāi)發(fā)基礎(chǔ)Unity是一款功能強(qiáng)大的集成開(kāi)發(fā)編輯器和引擎,為開(kāi)發(fā)者提供了創(chuàng)新和發(fā)布一款游戲所必需的工具,使開(kāi)發(fā)者無(wú)論是要開(kāi)發(fā)一款3D游戲還是2D游戲都能夠得

28、心應(yīng)手。學(xué)好Unity游戲開(kāi)發(fā)必須具備一定的創(chuàng)新能力和設(shè)計(jì)能力。本章通過(guò)一個(gè)吃金幣的小游戲來(lái)讓大家掌握Unity的基本開(kāi)發(fā)流程,游戲場(chǎng)景的保存,場(chǎng)景的開(kāi)發(fā),腳本的編寫(xiě)以及最后游戲的發(fā)布等等一系列內(nèi)容。本章概述 熟悉Unity 引擎概念熟悉Unity界面了解Unity腳本的基礎(chǔ)語(yǔ)法掌握Unity中發(fā)布程序的方法熟悉Unity 3D游戲建模過(guò)程本章學(xué)習(xí)要點(diǎn)目錄3.13.2 Unity引擎概覽 Unity腳本程序開(kāi)發(fā) Unity腳本的基礎(chǔ)語(yǔ)法 Roll A Ball小游戲3.33.4第3章 Unity 3D游戲開(kāi)發(fā)基礎(chǔ)3.1 Unity引擎概覽Unity是一款功能強(qiáng)大的集成開(kāi)發(fā)編輯器和引擎,為開(kāi)發(fā)者

29、提供了創(chuàng)新和發(fā)布一款游戲所必需的工具,使開(kāi)發(fā)者無(wú)論是要開(kāi)發(fā)一款3D游戲還是2D游戲都能夠得心應(yīng)手。Unity所有的功能都有不同的帶有標(biāo)簽的窗口視圖,每個(gè)視圖都提供了不同的編輯和操作功能,以幫助開(kāi)發(fā)者完成開(kāi)發(fā)工作。1.菜單欄(1)File(文件)File(文件)菜單列表中各項(xiàng)名稱及說(shuō)明如表1-1所示。3.1.1 熟悉界面3.1.1 熟悉界面名稱說(shuō)明New Scene創(chuàng)建新的場(chǎng)景。就像是游戲中的一個(gè)一個(gè)的場(chǎng)景一樣,Unity3D為用戶提供了方便的場(chǎng)景管理,用戶可以隨心所欲的創(chuàng)建出自己想要的場(chǎng)景。然后再把每個(gè)場(chǎng)景鏈接起來(lái)組成一個(gè)完成的游戲。Open Scene打開(kāi)一個(gè)已經(jīng)創(chuàng)建的場(chǎng)景。Save Sce

30、ne保存當(dāng)前場(chǎng)景。Save Scene as當(dāng)前場(chǎng)景另存為。New Project新建一個(gè)新的項(xiàng)目工程。用戶想要制作出自己的游戲,第一步就是創(chuàng)建一個(gè)屬于這個(gè)游戲的工程,這個(gè)工程是所有元素的基礎(chǔ)。有了工程之后,用戶就可以在這個(gè)工程里面添加自己的場(chǎng)景。表 1-1 File菜單列表中各項(xiàng)名稱及說(shuō)明3.1.1 熟悉界面續(xù)表 1-1 File菜單列表中各項(xiàng)名稱及說(shuō)明名稱說(shuō)明Open Project打開(kāi)一個(gè)已經(jīng)創(chuàng)建的工程。Save Project保存當(dāng)前項(xiàng)目。Build Setting項(xiàng)目的編譯設(shè)置。在編譯設(shè)置選項(xiàng)里面,用戶可以選擇游戲所在的平臺(tái)及對(duì)工程中的各個(gè)場(chǎng)景之間的管理??梢蕴砑赢?dāng)前的場(chǎng)景加入到工程

31、的編譯隊(duì)列當(dāng)中。其中的Player Settings選項(xiàng)中可以設(shè)置程序的圖標(biāo),分辨率,啟動(dòng)畫(huà)面等。Build & Run編譯并運(yùn)行項(xiàng)目。Exit退出Unity3D。(2)Edit(編輯)Edit(編輯)菜單列表中各項(xiàng)名稱及說(shuō)明如表1-2所示。3.1.1 熟悉界面3.1.1 熟悉界面表 1-2 Edit【編輯】菜單列表中各項(xiàng)名稱及說(shuō)明名稱說(shuō)明Undo撤銷上一步操作。Redo重復(fù)上一步動(dòng)作。Cut剪切。Copy復(fù)制。Paste粘貼。Duplicate復(fù)制并粘貼。Delete刪除。Frame Selected選擇一個(gè)物體后,使用此功能可以把視角調(diào)到觀察這個(gè)選中的物體上。Find在資源區(qū)可以按資源的名

32、稱來(lái)查找。Select All可以選中所有資源。3.1.1 熟悉界面續(xù)表 1-2 Edit【編輯】菜單列表中各項(xiàng)名稱及說(shuō)明名稱說(shuō)明Network Emulation網(wǎng)絡(luò)仿真。可以選擇相應(yīng)的網(wǎng)絡(luò)類型進(jìn)行仿真。Project Settings項(xiàng)目設(shè)置。其中包括輸入設(shè)置,標(biāo)簽設(shè)置,音頻設(shè)置,運(yùn)行的時(shí)間的設(shè)置,用戶設(shè)置,物理設(shè)置,品質(zhì)設(shè)置,網(wǎng)絡(luò)管理,編輯器管理等。Preferences選項(xiàng)設(shè)置。對(duì)Unity3D的一些基本設(shè)置,如:選用外部的腳本編輯,皮膚,各種顏色的設(shè)置。以及一些用戶基本的快捷鍵的設(shè)置。Play編譯并在Unity3D中運(yùn)行程序。Render Settings渲染設(shè)置。如果覺(jué)得整體畫(huà)面的

33、色彩質(zhì)量不盡如人意,可在此處進(jìn)行調(diào)節(jié)。Graphics Emulation圖形仿真。主要是配合一些圖形加速器的處理。3.1.1 熟悉界面續(xù)表 1-2 Edit【編輯】菜單列表中各項(xiàng)名稱及說(shuō)明名稱說(shuō)明Snap Settings臨時(shí)環(huán)境,或理解為快照設(shè)置。Network Emulation網(wǎng)絡(luò)仿真??梢赃x擇相應(yīng)的網(wǎng)絡(luò)類型進(jìn)行仿真。Render Settings渲染設(shè)置。如果覺(jué)得整體畫(huà)面的色彩質(zhì)量不盡如人意,可在此處進(jìn)行調(diào)節(jié)。Graphics Emulation圖形仿真。主要是配合一些圖形加速器的處理。Network Emulation網(wǎng)絡(luò)仿真??梢赃x擇相應(yīng)的網(wǎng)絡(luò)類型進(jìn)行仿真。Project Set

34、tings項(xiàng)目設(shè)置。其中包括輸入設(shè)置,標(biāo)簽設(shè)置,音頻設(shè)置,運(yùn)行的時(shí)間的設(shè)置,用戶設(shè)置,物理設(shè)置,品質(zhì)設(shè)置,網(wǎng)絡(luò)管理,編輯器管理等。Snap Settings臨時(shí)環(huán)境,或理解為快照設(shè)置。(3)Assets(資源)Assets(資源)菜單列表中各項(xiàng)名稱及說(shuō)明如表1-3所示。3.1.1 熟悉界面3.1.1 熟悉界面表 1-3 Assets(資源)菜單列表中各項(xiàng)名稱及說(shuō)明名稱說(shuō)明Reimport重新導(dǎo)入資源。Create創(chuàng)建功能??梢杂脕?lái)創(chuàng)建各種腳本,動(dòng)畫(huà),材質(zhì),字體,貼圖,物理材質(zhì),GUI皮膚等。Show In Explorer打開(kāi)資源所在的目錄位置。Open打開(kāi)選中文件。Delete刪除選中的資源

35、文件。Import New Asset導(dǎo)入新的資源。Refresh刷新,用于導(dǎo)入資源包之后。3.1.1 熟悉界面續(xù)表 1-3 Assets(資源)菜單列表中各項(xiàng)名稱及說(shuō)明名稱說(shuō)明Reimport重新導(dǎo)入資源。Create創(chuàng)建功能??梢杂脕?lái)創(chuàng)建各種腳本,動(dòng)畫(huà),材質(zhì),字體,貼圖,物理材質(zhì),GUI皮膚等。Show In Explorer打開(kāi)資源所在的目錄位置。Open打開(kāi)選中文件。Delete刪除選中的資源文件。Import New Asset導(dǎo)入新的資源。(4)GameObject(游戲?qū)ο螅〨ameObject(游戲?qū)ο螅┎藛瘟斜碇懈黜?xiàng)名稱及說(shuō)明如表1-4所示。3.1.1 熟悉界面3.1.1 熟

36、悉界面表 1-4 GameObject(游戲?qū)ο螅┎藛瘟斜碇懈黜?xiàng)名稱及說(shuō)明名稱說(shuō)明Create Empty創(chuàng)建一個(gè)空的游戲?qū)ο?。可以?duì)這個(gè)空的對(duì)象添加各種組件,即各種屬性。在Component里面會(huì)講到。Create Other創(chuàng)建其他類型的游戲?qū)ο?。這里面包括了很多內(nèi)容,基本上囊括了Unity3D所支持的所有對(duì)象。其中有粒子系統(tǒng),攝像機(jī),界面文字,界面貼圖,3D的文字效果,點(diǎn)光源,聚光燈,平行光,長(zhǎng)方體,球,包囊,圓柱體,平面,表面,音頻混音區(qū)域,樹(shù),玩偶,風(fēng)域等。Center On Children這個(gè)功能是作用在父節(jié)點(diǎn)上的,即把父節(jié)點(diǎn)的位置移動(dòng)到子節(jié)點(diǎn)的中心位置。3.1.1 熟悉界面續(xù)表

37、 1-4 GameObject(游戲?qū)ο螅┎藛瘟斜碇懈黜?xiàng)名稱及說(shuō)明名稱說(shuō)明Make Parent選中多個(gè)物體后,點(diǎn)擊這個(gè)功能可以把選中的物體組成父子關(guān)系,其中在層級(jí)視圖中最上面的那個(gè)為父節(jié)點(diǎn),其他為這個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)。Apply Change To Prefab應(yīng)用變更為預(yù)置。Move To View這個(gè)功能經(jīng)常用到,把選中的物體移動(dòng)到當(dāng)前編輯視角的中心位置,這樣就可以快速定位。Align With View把選中的物體移動(dòng)到當(dāng)前編輯視角的中心位置,深度為0,即移動(dòng)到和視角同一個(gè)平面上。Align View To Selected把編輯視角移動(dòng)到選中物體的中心位置。(5)Component(組件

38、)Component(組件)菜單列表中各項(xiàng)名稱及說(shuō)明如表1-5所示。3.1.1 熟悉界面3.1.1 熟悉界面表1-5 Component(組件)菜單列表中各項(xiàng)名稱及說(shuō)明名稱說(shuō)明Mesh添加網(wǎng)格屬性。Particles粒子系統(tǒng)。能夠造出很棒的流體效果。Physics物理系統(tǒng)??梢允刮矬w帶有對(duì)應(yīng)的物理屬性。Audio音頻??梢詣?chuàng)建聲音源和聲音的聽(tīng)者。Rendering渲染。Miscellaneous雜項(xiàng)。Scripts腳本。Unity內(nèi)置的一些功能很強(qiáng)大的腳本。Camera-Control攝像機(jī)控制。(6)Window(窗口)Window(窗口)菜單列表中各項(xiàng)名稱及說(shuō)明如表1-5所示。3.1.1

39、熟悉界面3.1.1 熟悉界面表1-6 Window(窗口)菜單列表中各項(xiàng)名稱及說(shuō)明名稱說(shuō)明Next Window下個(gè)窗口。Previous Window前一個(gè)窗口。Layouts布局。Scene場(chǎng)景窗口。Game游戲窗口。Inspector檢視窗口,主要指各個(gè)對(duì)象的屬性,也可稱為屬性面板。3.1.1 熟悉界面續(xù)表1-6 Window(窗口)菜單列表中各項(xiàng)名稱及說(shuō)明名稱說(shuō)明Hierarchy層次窗口。Project工程窗口。Animation動(dòng)畫(huà)窗口。用于創(chuàng)建時(shí)間動(dòng)畫(huà)的面板。Profiler探查窗口。Asset Server源服務(wù)器。Console控制臺(tái)。(7)help(幫助)help(幫助)菜

40、單列表中各項(xiàng)名稱及說(shuō)明如表1-7所示。3.1.1 熟悉界面3.1.1 熟悉界面表1-7 help(幫助)菜單列表中各項(xiàng)名稱及說(shuō)明名稱說(shuō)明About Unity關(guān)于Unity。Enter Serial Number輸入序列號(hào)。Unity ManualUnity手冊(cè)。Reference Manual參考手冊(cè)。Scripting Manual腳本手冊(cè)。Unity ForumUnity論壇。Welcome Screen歡迎窗口。Release Notes發(fā)行說(shuō)明。Report a Problem問(wèn)題反饋。2.工具欄Unity的工具欄包括五個(gè)基本控制,位于菜單欄的下方。(1)Transform變換工具:

41、用來(lái)控制和操作場(chǎng)景以及游戲?qū)ο?,主要?yīng)用于Scene場(chǎng)景視圖,每個(gè)工具的用法如表1-8所示。3.1.1 熟悉界面3.1.1 熟悉界面表 1-8 Transform變換工具工具名稱快捷鍵說(shuō)明Hand(手掌)工具Q平移Scene視圖。Translate(移動(dòng))工具W移動(dòng)游戲?qū)ο?。Rotate(旋轉(zhuǎn))工具E旋轉(zhuǎn)游戲?qū)ο蟆cale(縮放)工具R縮放游戲?qū)ο?。Rect(矩形)工具T編輯游戲?qū)ο蟮木匦问直?。?)Gizmo坐標(biāo)系工具:用來(lái)切換中心點(diǎn)的位置,用法如下: :改變游戲?qū)ο蟮妮S心點(diǎn)。Center: 改變游戲?qū)ο蟮妮S心為物體包圍盒的中心。Pivot: 使用物體本身的軸心。 : 改變物體的坐標(biāo)。Gl

42、obal: 世界坐標(biāo)。Local: 自身坐標(biāo)。3.1.1 熟悉界面(3)播放工具:用來(lái)在編輯器運(yùn)行或暫停游戲的測(cè)試,用法見(jiàn)表1-9。3.1.1 熟悉界面工具名稱快捷鍵說(shuō)明Play(播放)工具Ctrl+P運(yùn)行游戲。Pause(暫停)工具Ctrl+Shift+P暫停游戲。Step(單幀)工具Ctrl+Alt+P一次執(zhí)行一步游戲。表 1-9 播放工具(4)Layers(分層)下拉列表:用來(lái)控制游戲?qū)ο笤赟cene視圖中的顯示和隱藏,各功能如表1-10所示。3.1.1 熟悉界面表 1-10 Layers下拉列表信息分層名稱說(shuō)明Everything顯示所有游戲的對(duì)象。Nothing不顯示任何游戲?qū)ο?。D

43、efault顯示默認(rèn)的游戲?qū)ο?。TransparentFX顯示透明的游戲?qū)ο?。Ignore Raycast顯示不處理投射事件的游戲?qū)ο?。Water顯示水對(duì)象。(5)Layout(布局)下拉列表:改變窗口和視圖的布局,并且可以保存所創(chuàng)建的任意自定義布局。3.1.1 熟悉界面Project(項(xiàng)目視圖)包含整個(gè)工程中所有可用的資源,例如模型、腳本等。把它稱為一個(gè)文件夾也適合,因?yàn)楫吘顾拇_對(duì)應(yīng)了一個(gè)文件夾即每個(gè)Unity項(xiàng)目文件都會(huì)包含一個(gè)Assets文件夾,Assets文件夾是用來(lái)存放用戶所常見(jiàn)的對(duì)象和導(dǎo)入的資源,并且這些資源是以目錄的方式來(lái)組織的,Unity編輯器也只認(rèn)這個(gè)文件夾,如圖3-2所示

44、。3.1.2 Project視圖圖 3-2 Project視圖Hierarchy(層級(jí)視圖)顯示當(dāng)前場(chǎng)景中的每個(gè)GameObject(游戲?qū)ο螅?,包含攝像機(jī)、燈光和模型等,以文字的方式顯示在列表中?!坝螒?qū)ο蟆笔荱nity中非常重要且基礎(chǔ)的概念,我們?cè)谟螒蛑羞M(jìn)行的所有操作幾乎均是在不斷改變游戲?qū)ο?。相?dāng)于Photoshop中的“層”的概念,即每個(gè)層可以包含一個(gè)自身可以顯示的對(duì)象,其下方還可以包含多個(gè)子對(duì)象,子對(duì)象還可以包含子對(duì)象,不斷嵌套。而這里的每個(gè)層,都是一個(gè)“游戲?qū)ο蟆?,可在Hierarchy(層級(jí)視圖)中選擇對(duì)象并將一個(gè)對(duì)象拖到另一個(gè)對(duì)象內(nèi),以應(yīng)用Parenting(父子化)。在場(chǎng)景中

45、添加和刪除對(duì)象后,還將在Hierarchy(層級(jí)視圖)中顯示,如圖3-3所示。3.1.3 Hierarchy視圖圖 3-3 Hierarchy視圖Inspector(檢視視圖)用于顯示當(dāng)前所選游戲?qū)ο蟮南嚓P(guān)屬性與信息,還用于顯示資源的屬性、內(nèi)容以及渲染設(shè)置、項(xiàng)目設(shè)置等參數(shù),千萬(wàn)不要被Inspector這個(gè)單詞或者“檢視”這個(gè)詞所迷惑,它所代表的含義只是相當(dāng)于屬性面板而已,即它是針對(duì)你當(dāng)前選中的物件進(jìn)行詳細(xì)的描述。當(dāng)然有些時(shí)候,不僅僅是描述,它還可以編輯屬性。我們可以選中的物件不外乎兩大類:游戲?qū)ο螅▉?lái)自Hierarchy面板)和資源文件(來(lái)自Project面板),如果選中游戲?qū)ο?,我們這可以編

46、輯此游戲?qū)ο蟮膶傩裕热缇_編輯其位置、旋轉(zhuǎn)、縮放等;如果選中資源文件,我們可以修改其導(dǎo)入設(shè)置,比如我們選擇一張圖片,可以設(shè)置其貼圖類型、壓縮格式等等,如圖3-4所示。3.1.4 Inspector視圖圖 3-4 Inspector視圖Scene(場(chǎng)景視圖)是游戲場(chǎng)景設(shè)計(jì)視圖,是游戲畫(huà)面主要的編輯區(qū)域,所有的對(duì)象均在這里布置,設(shè)置它們的位置、大小、旋轉(zhuǎn)等等信息,組成一幕畫(huà)面,一個(gè)Scene只能組合出一幕畫(huà)面,那么多幕畫(huà)面則需要由多個(gè)場(chǎng)景構(gòu)成,一個(gè)場(chǎng)景是游戲的一個(gè)顯示單位,如戰(zhàn)斗場(chǎng)景,歡迎場(chǎng)景,設(shè)置場(chǎng)景等。場(chǎng)景中的每個(gè)物體都有一個(gè)三維,unity 的坐標(biāo)系是左手坐標(biāo)系,即 x 軸向右,y 軸向上

47、,z 軸就向里,如圖3-5所示。3.1.5 Scene視圖圖 3-5 Scene視圖Game(游戲視圖)是游戲運(yùn)行時(shí)的顯示視圖,對(duì) Scene 視圖的修改都會(huì)時(shí)時(shí)同步到 Game 視圖,如圖3-6所示。3.1.6 Game視圖圖 3-6 Game視圖控制臺(tái)和狀態(tài)欄是兩個(gè)很有用的調(diào)試工具。狀態(tài)欄總是出現(xiàn)在編輯器的底部(雖然在通常情況下它只是一條空白的灰線)??梢酝ㄟ^(guò)菜單WindowConsole或按Ctrl+Shit+C快捷鍵打開(kāi)控制臺(tái),也可以單擊狀態(tài)欄來(lái)打開(kāi)控制臺(tái)。按下“播放”按鈕開(kāi)始測(cè)試游戲,并且看看控制臺(tái)和狀態(tài)欄是怎樣一起隨著Sphere高度的數(shù)據(jù)而進(jìn)行更新的。可以在腳本中讓游戲向控制臺(tái)和

48、狀態(tài)欄輸出一些信息,這有助于調(diào)試和修復(fù)錯(cuò)誤。游戲遇到的任何錯(cuò)誤、消息或者警告,以及和這個(gè)特定錯(cuò)誤相關(guān)的任何細(xì)節(jié),都會(huì)顯示在控制臺(tái)里。3.1.7 控制臺(tái)和狀態(tài)欄3.2 Unity腳本程序開(kāi)發(fā)Unity中的腳本分為不同的方法,不同方法在特定的情況下被回調(diào)以實(shí)現(xiàn)特定的功能。如果想要腳本程序起作用,實(shí)現(xiàn)的主要途徑是將腳本附到特定的游戲?qū)ο笾?。下面是最常用的幾個(gè)回調(diào)方法。Start方法。這個(gè)方法在游戲場(chǎng)景加載時(shí)調(diào)用,在該方法內(nèi)可以寫(xiě)一些游戲場(chǎng)景初始化之類的代碼。Update方法。這個(gè)方法會(huì)在每一幀渲染之前調(diào)用,大部分游戲代碼在這里執(zhí)行,除了物理部分的代碼。FixedUpdate方法。此方法會(huì)每隔固定的時(shí)

49、間間隔系統(tǒng)調(diào)用,這里也是基本物理行為代碼執(zhí)行的地方。3.2.1 Unity腳本概述1.繼承自MonoBehaviour類 Unity中所有掛載到游戲?qū)ο笊系哪_本包含的類都繼承自MonoBehavior類(直接地或間接地)。MonoBehavior類中定義了各種回調(diào)方法,例如Start、Update和FixedUpdate等。通過(guò)AssetCreateC#Script 創(chuàng)建的腳本,系統(tǒng)模板就已經(jīng)包含了必要的定義。2.類名字必須匹配文件名 C#腳本中類名需要手動(dòng)編寫(xiě),而且類名還必須和文件名相同,否則當(dāng)腳本掛載到游戲?qū)ο髸r(shí),控制臺(tái)會(huì)報(bào)錯(cuò)。3.使用Awake或Start方法初始化C#用于初始化腳本的代

50、碼必須置于Awake或Start方法中。Awake和Start的不同之處在于,Awake方法是在加載場(chǎng)景時(shí)運(yùn)行,Start方法是在第一次調(diào)用Update或FixedUpdate方法之前調(diào)用,Awake方法在所有Start方法之前運(yùn)行。3.2.2 Unity中C#腳本的注意事項(xiàng)4.Unity腳本中協(xié)同程序有不同的語(yǔ)法規(guī)則Unity腳本中協(xié)同程序(Coroutines)必須是IEnumterator返回類型,并且yield用yield return 替代。具體可以使用如下的C#代碼片段來(lái)實(shí)現(xiàn)。 1 using UnityEngine; 2 using System.Collections; /引入

51、系統(tǒng)包 3 public class BNUCoroutines : MonoBehaviour /聲明類 4 IEnumerator SomeCoroutines() /C#協(xié)同程序 5 yield return 0; /等待一幀 6 yield return new WaritForSeconds(2); /等待2S 7 3.2.2 Unity中C#腳本的注意事項(xiàng)5.只有滿足特定情況變量才能顯示在屬性查看器中只有序列化的成員變量才能顯示在屬性查看器中,而private和protected類型的成員變量只能在專家模式中顯示,而且,其屬性不被序列化或顯示在屬性查看器,如果屬性想在屬性查看器中顯

52、示,必須是public類型的。6.盡量避免使用構(gòu)造函數(shù)不要在構(gòu)造函數(shù)中初始化任何變量,而是使用Awake或Start方法來(lái)實(shí)現(xiàn)。而且在單一模式下使用構(gòu)造函數(shù)可能會(huì)導(dǎo)致嚴(yán)重后果,會(huì)引發(fā)類似隨機(jī)的空引用異常。因此,一般情況下盡量避免使用構(gòu)造函數(shù)。事實(shí)上,沒(méi)必要在繼承自MonoBehaviour的類的構(gòu)造函數(shù)中寫(xiě)任何代碼。3.2.2 Unity中C#腳本的注意事項(xiàng)3.3 Unity腳本的基礎(chǔ)語(yǔ)法1.位移與旋轉(zhuǎn)在Unity中對(duì)游戲?qū)ο蟮牟僮魇峭ㄟ^(guò)腳本來(lái)修改游戲?qū)ο蟮腡ransform(變換對(duì)象)與Rigidbody(剛體屬性)參數(shù)來(lái)實(shí)現(xiàn)的。這些參數(shù)的修改是通過(guò)腳本編程來(lái)實(shí)現(xiàn)的。具體開(kāi)發(fā)流程如下:創(chuàng)建C

53、ube對(duì)象。單擊GameObject3D ObjectCube,創(chuàng)建一個(gè)Cube對(duì)象作為本案例案例對(duì)象,可以在左側(cè)面板單擊Cube查看其相關(guān)屬性。編寫(xiě)腳本。在Assets面板單擊CreateC#Script,創(chuàng)建一個(gè)C#腳本,并將其命名為Player,然后編寫(xiě)腳本。掛載腳本。腳本開(kāi)發(fā)完成后,將這個(gè)腳本掛載到游戲?qū)ο笊稀?.3.1 常用操作2.記錄時(shí)間記錄時(shí)間需要用到Time類,Time類中比較重要的變量為deltaTime它指的是從最近一次調(diào)用Update或者 Fixed Update方法到現(xiàn)在的時(shí)間。具體開(kāi)發(fā)流程如下:創(chuàng)建Cube對(duì)象。單擊 GameObject3D ObjectCube編寫(xiě)

54、腳本。在Assets面板單擊CreateC# Script。掛載腳本。腳本開(kāi)發(fā)完成后,將這個(gè)腳本掛載到游戲?qū)ο笊稀?.3.1 常用操作在Unity中組件屬于游戲?qū)ο?,組件(Component)其實(shí)是用來(lái)綁定到游戲?qū)ο?Game Object)上的一組相關(guān)屬性。本質(zhì)上每個(gè)組件是一個(gè)類的實(shí)例。常見(jiàn)的組件有:MeshFilter、MeshCollider、Renderer、Animation等,如表3-1所示。3.3.2 訪問(wèn)游戲?qū)ο蠼M件組件名稱 變量名稱 組件名稱變量名稱 TransformtransformRigidbodyrigidbodyRenderertendererCameraCamer

55、a (只在攝像機(jī)對(duì)象有效)LightLight (只在光源 對(duì)象有效)AnimationanimationCollidercollider表 3-1 常見(jiàn)組件訪問(wèn)其他游戲?qū)ο蟮牟襟E如下: 1通過(guò)屬性查看器指定參數(shù) 2確定對(duì)象的層次關(guān)系 3通過(guò)名字或標(biāo)簽獲取游戲?qū)ο?4通過(guò)組件名稱獲取游戲?qū)ο?.3.3 訪問(wèn)其他游戲?qū)ο?D游戲開(kāi)發(fā)中經(jīng)常需要用到向量和向量運(yùn)算,比如物體的位移和旋轉(zhuǎn)等,Unity中提供了完整的用來(lái)表示二維向量的Vector2類和表示三維向量的Vector3類。Vector 3類中常量對(duì)應(yīng)的值如表3-2所示。Vector3類中方法的作用如表3-3所示。 3.3.4 向量常量值常量值

56、Vector3.zeroVector(0,0,0)Vector3.oneVector( 1,1,1)Vector3.forwardVector(0,0,1)Vector3.upVector(0,1,0)Vector3.rigthVector( 1,0,0)表 3-2 Vector 3類中常量對(duì)應(yīng)的值3.3.4 向量表 3-3 Vector3類中方法的作用方 法作用方法作用Lerp兩個(gè)向量之間的線性插值。Slerp在兩個(gè)向量之間進(jìn)行球形插值。OrthoNormalize使向量規(guī)范化并且彼此相互垂直。MoveTowards從當(dāng)前的位置移向目標(biāo)。RotateTowards當(dāng)前的向量轉(zhuǎn)向目標(biāo)。Scal

57、e兩個(gè)矢量組件對(duì)應(yīng)相乘。Cross兩個(gè)向量的交叉乘積。Dot兩個(gè)向量的點(diǎn)乘積。Reflect沿著法線反射向量。Distance返回兩點(diǎn)之間的距離。Project投影一個(gè)向量到另一個(gè)向量。Angle返回兩個(gè)向量的夾角。Min返回兩個(gè)向量中長(zhǎng)度較小的向量。Max返回兩個(gè)向量中長(zhǎng)度較大的向量。operator +兩個(gè)向量相加operator -兩個(gè)向量相減operator *兩個(gè)向量相乘operator /兩個(gè)向量相除operator =兩個(gè)向量是否相等operator !=兩個(gè)向量是否不相等ClampMagnitude返回向量的長(zhǎng)度,最大不超過(guò)maxLength所指示的長(zhǎng)度。SmoothDamp隨

58、著時(shí)間的推移,逐漸改變一個(gè)向量朝向預(yù)期的目標(biāo)。腳本開(kāi)發(fā)中需要用到許多變量,在一般情況下,定義在方法體外的變量是成員變量,可以在屬性查看到,可以隨時(shí)在屬性查看器中修改它的值。通過(guò)private創(chuàng)建的變量是私有變量,在屬性查看器中就不會(huì)顯示該變量,避免錯(cuò)誤地修改。3.3.5 成員變量和全局變量Unity中如果想創(chuàng)建游戲?qū)ο?,可以通過(guò)創(chuàng)建游戲?qū)ο蟛藛卧趫?chǎng)景中進(jìn)行,如果想創(chuàng)建很多相同的物體(例如射擊出去的子彈,保齡球瓶等)時(shí),可以通過(guò)實(shí)例化(Instantiate)快速實(shí)現(xiàn)。3.3.6 實(shí)例化游戲?qū)ο髤f(xié)同程序,即在主程序運(yùn)行時(shí)同時(shí)開(kāi)啟另一段邏輯處理,來(lái)協(xié)同當(dāng)前程序的執(zhí)行。但它與多線程程序不同,所有的協(xié)

59、同程序都是在主線程中運(yùn)行的,它還是一個(gè)單線程程序。在Unity中可以通過(guò)StartCoroutine方法來(lái)啟動(dòng)一個(gè)協(xié)同程序。終止一個(gè)協(xié)同程序可以使用StopCoroutine(string methodName),而使用 StopAIICoroutines()是用來(lái)終止所有可以終止的協(xié)同程序,但這兩個(gè)方法都只能終止該MonoBehaviour中的協(xié)同程序。3.3.7 協(xié)同程序和中斷1.MonoBehaviour類 MonoBehaviour類是C#腳本的基類,其繼承自Behaviour類。在C#腳本中,必須直接或間接的繼承MonoBehaviour 類。2. Transform類場(chǎng)景中的每一個(gè)

60、物體都有一個(gè)Transform組件,它就 是Transform類實(shí)例化的對(duì)象。用于儲(chǔ)存并操控物體的位置、旋轉(zhuǎn)和縮放。每一個(gè)Transform可以有一個(gè)父級(jí),允許分層次應(yīng)用位置、旋轉(zhuǎn)和縮放??梢栽?Hierarchy :查看層次關(guān)系。Transform類中包含了很多的成員變量。3.3.8 一些重要的類3. Rigidbody類Rigidbody組件可以模擬物體在物理效果下的狀態(tài),它就是 Rigidbody類實(shí)例化的對(duì)象。它可以讓物體接受力和扭矩,讓 物體相對(duì)真實(shí)地移動(dòng)。如果一個(gè)物體想被重力所約束,其必須含有Rigidbody組件。Rigidbody類中包含了很多的成員變量。4.Character

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論