基于Unity3D的格斗游戲的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于Unity3D的格斗游戲的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于Unity3D的格斗游戲的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于Unity3D的格斗游戲的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于Unity3D的格斗游戲的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩106頁(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)介

摘要本設(shè)計(jì)是基于Unity3D所開(kāi)發(fā)實(shí)現(xiàn)的一款RPG(Role-playingGame-角色扮演游戲)-格斗游戲,以游戲的邏輯流暢性、界面工整簡(jiǎn)潔與還原最原始最通俗的角色扮演類游戲?yàn)樵O(shè)計(jì)目標(biāo),具有準(zhǔn)確輸出各類板塊功能、易懂、易操作、界面簡(jiǎn)潔美觀的3D一體化系統(tǒng)設(shè)計(jì)與運(yùn)行簡(jiǎn)易方便等強(qiáng)大功能為一體。本設(shè)計(jì)前端采用Unity3D+NGUI+3DMAX2018+Photoshop2018等工具來(lái)設(shè)計(jì)一個(gè)具有真實(shí)感的3D場(chǎng)景界面,此場(chǎng)景界面不僅簡(jiǎn)潔美觀而且通俗易懂,極大程度地還原了最原始狀態(tài)的RPG(Role-playingGame-角色扮演游戲),加強(qiáng)了人機(jī)交互功能,使得玩家可以輕易上手游戲的每一個(gè)部分;后端主要采用MicrosoftVisualStudio2017工具,全程應(yīng)用C#語(yǔ)言實(shí)現(xiàn)了游戲內(nèi)部各個(gè)環(huán)節(jié)的緊扣性與代碼編譯靈活性從而使得游戲操作的簡(jiǎn)易性提高;總體實(shí)現(xiàn)了一個(gè)具有現(xiàn)代化RPG(Role-playingGame)-角色扮演游戲功能的系統(tǒng)。游戲強(qiáng)大的視覺(jué)體驗(yàn)以及可操作性成為當(dāng)代熱門話題,采用各種先進(jìn)的技術(shù)以提高游戲內(nèi)外部各個(gè)部分的統(tǒng)一性為原則,充分展示了游戲邏輯的準(zhǔn)確和重要性,從而進(jìn)一步吸引廣大玩家的青睞。關(guān)鍵詞:RPG(Role-playingGame-角色扮演游戲)、C#、Unity3D、NGUI、MicrosoftVisualStudio2017AbstractImplementedbythisdesignisbasedonUnity3D-aRPG(Role-playingGame)–whichisnamedTheGameofFighting.TheGamelogicfluencyisconcise,neatinterfaceandrestoretheoriginalisthemostpopularrole-playinggamesasthedesigngoalandthisdesignhasthefunctionofaccurateoutputofallkindsofplates,interfacesimpleandeasytounderstandeasyoperation,beautiful3Dintegrationsystemdesignandpowerfulfunctionssuchasoperationsimpleandconvenient.ThisdesignFrontEndusingUnity3D+3DMAX2018+Photoshop2018andsoontodesigntheinterfaceofarealistic3Dscene,thesceneinterfacenotonlysimpleandbeautifulbutalsoeasytounderstand,drasticallyreducingthemostprimitivestateofRPG(Role-playingGame),strengthenthefunctionofhuman-computerinteraction,allowingplayerstoeasilyeverypartoftheGame;TheBackEndmainlyadoptsMicrosoftVisualStudio2017tools,andtheC#languageisappliedthroughoutthewholeprocesstorealizethetightnessandflexibilityofcodecompilationinallaspectsofthegame,soastoimprovethesimplicityofthegameoperation.TheoverallimplementationofamodernRole-playingGamefunctionofthesystem.Nowadays,thepowerfulvisualexperienceandoperabilityofthegamehavebecomeahottopic.Theuseofvariousadvancedtechnologiestoimprovetheunityofallpartsofthegameastheprinciple,fullydemonstratetheaccuracyandimportanceofthegamelogic,soastofurtherattractthefavorofthemajorityofplayers.Keywords:RPG(Role-playingGame)、C#、Unity3D、NGUI、MicrosoftVisualStudio2017

目錄第一章緒論 [1]輸出Camera的最終位置且保持在視野當(dāng)中不變,因此實(shí)現(xiàn)游戲鏡頭拉近的效果。3.1.3使用NGUI設(shè)計(jì)游戲開(kāi)始場(chǎng)景的UI界面在鏡頭拉近效果實(shí)現(xiàn)結(jié)束后,還需要實(shí)現(xiàn)相應(yīng)的用戶交互功能,在此我主要通過(guò)使用NGUI控件來(lái)設(shè)計(jì)游戲開(kāi)始場(chǎng)景的UI界面。(在此我強(qiáng)調(diào)一下NGUI插件的使用,NGUI作為一款Unity3D里兼容性比較差的UI界面設(shè)計(jì)插件,它的導(dǎo)入成功或失敗跟Unity3D的版本相關(guān)性極大,一般Unity3D在2018以上的版本都要求最新版本的NGUI。)圖3-7NGUI控件圖當(dāng)NGUI成功導(dǎo)入U(xiǎn)nity3D后,通過(guò)新建一個(gè)PrefabToolbar來(lái)開(kāi)始實(shí)現(xiàn)UI界面的設(shè)計(jì),即NGUI→Open→PrefabToolbar,然后可以把PrefabToolbar放在功能欄下以方便使用,如下圖所示:然后通過(guò)NGUI→Open→AtlasMaker將UI界面設(shè)計(jì)的素材添加進(jìn)去,具體操作如下圖所示:圖3-8AtlasMaker添加元素圖接著在場(chǎng)景中通過(guò)新建Sprite添加設(shè)計(jì)好的游戲LOGO以及簡(jiǎn)單的UI控件(將“NewGame”和“LoadGame”按鍵合并在buttonContainer下),效果如下圖所示:圖3-9開(kāi)始場(chǎng)景UI設(shè)計(jì)圖在實(shí)際操作中,“NewGame”和“LoadGame”按鍵是默認(rèn)隱藏的,需要通過(guò)玩家點(diǎn)擊監(jiān)聽(tīng)后顯示出來(lái),即在開(kāi)始時(shí)顯示游戲LOGO以及“PRESSANYKEYTOSTART”標(biāo)簽,當(dāng)玩家點(diǎn)擊任何地方或按下任意鍵時(shí)顯示“NewGame”和“LoadGame”按鍵。因此在“PRESSANYKEYTOSTART”標(biāo)簽下新建一個(gè)腳本以實(shí)現(xiàn)相應(yīng)的功能。即當(dāng)在開(kāi)始界面運(yùn)行時(shí),按下任意按鍵(或鼠標(biāo)點(diǎn)擊)時(shí),顯示“NewGame”和“LoadGame”按鍵,結(jié)果如下圖所示:圖3-10標(biāo)簽實(shí)現(xiàn)代碼圖圖3-11游戲開(kāi)始場(chǎng)景界面圖接下來(lái)再進(jìn)一步處理“NewGame”和“LoadGame”按鍵的操作,首先給為buttonContainer添加一個(gè)腳本以控制兩個(gè)按鍵的功能實(shí)現(xiàn),具體代碼如下:圖3-12UI控件代碼圖之后在“NewGame”和“LoadGame”按鍵的OnClick控件下指定buttonContainer里的方法,然后設(shè)置相應(yīng)的點(diǎn)擊事件即可:圖3-13實(shí)現(xiàn)按鍵方法指定操作圖以上設(shè)置完成后,游戲開(kāi)始界面已經(jīng)基本實(shí)現(xiàn),下一步是位游戲場(chǎng)景添加背景音樂(lè)以及相應(yīng)的按鍵點(diǎn)擊聲音,即在MainCamera下添加相應(yīng)的背景音樂(lè)(即AddComponent添加AudioSource),然后將背景音樂(lè)拖入即可,再在各個(gè)按鍵中添加相應(yīng)的UIPlaySound(內(nèi)置腳本,在相應(yīng)的控件下AddComponent添加即可),然后將相應(yīng)的按鍵音拖入即可,具體操作如下圖所示:圖3-14背景音樂(lè)添加操作圖圖3-15按鍵音添加操作圖3.2角色創(chuàng)建3.2.1角色模型以及相關(guān)UI素材導(dǎo)入首先創(chuàng)建角色初始登陸所在場(chǎng)景的UI界面。角色創(chuàng)建的背景采用與游戲初始加載的MainCamera下的2D界面一致,且MainCamera設(shè)置為不移動(dòng)靜止?fàn)顟B(tài)。創(chuàng)建游戲的UI界面中,其角色名字輸入框用NGUI-PrefabToolbar里的SimpleInputField控件實(shí)現(xiàn),效果如下圖所示:圖3-16角色登陸場(chǎng)景界面圖將角色資源包導(dǎo)入,角色模型分為兩種,即魔法師與劍士。里面包含有兩個(gè)角色相應(yīng)的動(dòng)畫資源,將角色拖進(jìn)游戲場(chǎng)景里進(jìn)行位置的設(shè)定以及相應(yīng)皮膚資源的渲染指定,然后在兩個(gè)角色相應(yīng)的動(dòng)畫資源里找到對(duì)應(yīng)動(dòng)作的動(dòng)畫進(jìn)行指定,之后存入Prefabs包里以便后續(xù)使用,進(jìn)行添加完畢后,相應(yīng)的效果圖如下:圖3-17魔法師-角色創(chuàng)建圖圖3-18劍士-角色創(chuàng)建圖接下來(lái)將實(shí)現(xiàn)角色更換的功能,在角色創(chuàng)建UI界面中,我已設(shè)置好Preview與Next的按鍵,即點(diǎn)擊此兩種按鍵可進(jìn)行游戲角色模型的切換,因此創(chuàng)建一個(gè)空的GameObject(將它命名為characterCreation)控件將此功能實(shí)現(xiàn),然后將兩個(gè)角色的站立動(dòng)畫(Idle動(dòng)畫)以及角色名字輸入框控件進(jìn)行指定即可,其中角色切換的核心代碼如下圖所示:圖3-19角色切換代碼圖(1)圖3-20角色切換代碼圖(2)即當(dāng)切換角色模型的時(shí)候,需要設(shè)置只顯示其中一個(gè)角色,即當(dāng)選擇魔法師角色時(shí),劍士角色設(shè)置為隱藏,即在以上腳本里添加一個(gè)UpdateCharacterShow()方法然后在其中添加了一個(gè)函數(shù)來(lái)實(shí)現(xiàn)未選擇的角色模型設(shè)置隱藏,同時(shí)運(yùn)用SetActive()方法來(lái)實(shí)現(xiàn)被選擇角色的顯示,之后在各方法里更新角色模型的顯示時(shí)直接調(diào)用UpdateCharacterShow()方法即可,最后在角色選擇界面中的兩個(gè)角色選擇按鍵(Next按鍵與Preview按鍵)中指定characterCreation方法里的點(diǎn)擊事件方法(在OnClick事件中將方法Method改為characterCreation中的OnNextButtonClick()與OnPrevButtonClick())即可,具體操作如下圖所示:圖3-21角色切換操作圖3.2.2角色控制的實(shí)現(xiàn)首先設(shè)置游戲運(yùn)行時(shí),鼠標(biāo)的點(diǎn)擊事件,即當(dāng)游戲檢測(cè)到鼠標(biāo)的點(diǎn)擊指令時(shí)輸出相應(yīng)的行為轉(zhuǎn)換,在游戲內(nèi)部設(shè)置檢測(cè)鼠標(biāo)的點(diǎn)擊事件然后將該指令的表達(dá)形式轉(zhuǎn)變?yōu)樯渚€即表達(dá)Unity3D中Camera的點(diǎn)換射線方法ScreenPointToRay()方法,接著在相應(yīng)的點(diǎn)擊物件中添加碰撞器以檢測(cè)碰撞的發(fā)生與否(在此可以通過(guò)設(shè)置標(biāo)簽(Tag)的方法來(lái)檢查符合要求的碰撞信息,后續(xù)即可方便地直接調(diào)用Tag里面的信息),即在游戲場(chǎng)景界面Map里的Terrain類物體都視為可被檢測(cè)到的點(diǎn)擊物體,當(dāng)點(diǎn)擊事件實(shí)現(xiàn)后可為點(diǎn)擊添加點(diǎn)擊效果,即在腳本中實(shí)例化點(diǎn)擊效果然后直接將點(diǎn)擊效果導(dǎo)入即可,此部分核心代碼如下圖所示:圖3-22實(shí)現(xiàn)點(diǎn)擊事件代碼圖當(dāng)點(diǎn)擊事件實(shí)現(xiàn)以后,接著添加(PlayerDir)腳本來(lái)處理角色隨點(diǎn)擊方向的方向朝向改變,即在獲得點(diǎn)擊目標(biāo)后,需要改變角色站立的方向,其代碼如下:圖3-23角色朝向代碼圖(1)圖3-24角色朝向代碼圖(2)角色朝向的功能實(shí)現(xiàn)以后,將處理角色移動(dòng)的功能。首先為角色添加一個(gè)CharacterController(控制器)來(lái)對(duì)角色進(jìn)行操控,圖3-25角色控制器添加然后給角色添加相應(yīng)的移動(dòng)腳本(PlayerMove)來(lái)對(duì)其進(jìn)行移動(dòng)操控,代碼如下:圖3-26角色移動(dòng)代碼圖因?yàn)閯傞_(kāi)始的時(shí)候,targerPosition的初始坐標(biāo)為(0,0,0)因?yàn)楫?dāng)檢測(cè)到點(diǎn)擊事件后會(huì)自動(dòng)移動(dòng),則需要在角色朝向的Start()方法里(PlayerDir)初始化targetPosition為移動(dòng)后角色的位置,則需添加的代碼為:targetPosition=transform.position;即可,移動(dòng)效果如下圖所示:圖3-27角色移動(dòng)效果圖角色移動(dòng)時(shí)也有相應(yīng)的動(dòng)畫,即動(dòng)畫效果的導(dǎo)入如下:圖3-28角色動(dòng)畫效果導(dǎo)入角色動(dòng)畫導(dǎo)入后,需要在(PlayerMove)腳本中實(shí)現(xiàn)角色狀態(tài)的控制,即角色的站立、移動(dòng)動(dòng)畫的播放,即在角色物體下新建一個(gè)(PlayerAnimation)腳本控制角色狀態(tài)的播放,然后在(PlayerMove)腳本中進(jìn)行指定各種狀態(tài)的信息進(jìn)行初始化,之后根據(jù)狀態(tài)的變化在(PlayerAnimation)腳本實(shí)現(xiàn)角色移動(dòng)的控制即可,其代碼如下圖所示:圖3-29實(shí)現(xiàn)角色動(dòng)畫播放3.2.3實(shí)現(xiàn)鏡頭跟隨主角移動(dòng)以及鏡頭視覺(jué)的更改在Camera下添加實(shí)現(xiàn)跟隨主角移動(dòng)的腳本(FollowPlayer),即在Start()與Update()方法中同時(shí)實(shí)現(xiàn)并且更新主角移動(dòng)的坐標(biāo)位置,從而更新當(dāng)前主角的位置實(shí)現(xiàn)與主角同時(shí)移動(dòng)的效果,代碼如下:圖3-30鏡頭跟隨主角移動(dòng)代碼圖在3D游戲中,視覺(jué)的體驗(yàn)被廣大玩家所追求,因此在本設(shè)計(jì)中添加了相應(yīng)的鼠標(biāo)滑輪控制視覺(jué)的功能,即通過(guò)鼠標(biāo)滑輪對(duì)視覺(jué)的拉近與放大效果,通過(guò)鼠標(biāo)右鍵對(duì)三維視覺(jué)的改變功能,在Unity3D中,此功能通過(guò)Edit→ProjectSettting中有一個(gè)鼠標(biāo)滑輪的控制(MouseScrollWheel),即在Camera中的FollowPlayer腳本中添加ScrollView()方法來(lái)控制滑輪的拉近與放大效果的操作,同時(shí)添加一個(gè)RotateView()函數(shù)來(lái)控制鼠標(biāo)右鍵對(duì)三維視覺(jué)的改變,旋轉(zhuǎn)角度的臨界值為Camera中的Rotation對(duì)應(yīng)的x數(shù)值,在if(isRotation)中作修改,其中通過(guò)Quaternion(四元數(shù))方法來(lái)對(duì)角色原始的角度進(jìn)行保存,代碼如下圖所示:圖3-31鼠標(biāo)滑輪控制視野代碼圖圖3-32鼠標(biāo)右鍵控制視野代碼圖以上信息則為本章所重點(diǎn)解釋的對(duì)角色控制功能的實(shí)現(xiàn),下一章則對(duì)RPG類型游戲中最基本的各類游戲系統(tǒng)(任務(wù)系統(tǒng)、NPC系統(tǒng)、商店系統(tǒng)、角色狀態(tài)系統(tǒng)、技能系統(tǒng)、怪物系統(tǒng)等)進(jìn)行設(shè)計(jì)與講解。游戲整體系統(tǒng)實(shí)現(xiàn)4.1游戲基本功能系統(tǒng)實(shí)現(xiàn)4.1.1交互系統(tǒng)RPG游戲的關(guān)鍵之一就是交互系統(tǒng)的設(shè)置從而使玩家實(shí)現(xiàn)與計(jì)算機(jī)的交互,在本設(shè)計(jì)中,我主要設(shè)計(jì)了三個(gè)交互系統(tǒng),即任務(wù)系統(tǒng)、藥品商店系統(tǒng)與武器裝備系統(tǒng)的設(shè)計(jì),對(duì)應(yīng)的NPC在場(chǎng)景的位置如下圖所示:圖4-1場(chǎng)景NPC位置圖三種NPC的設(shè)計(jì)大致相同,其中武器商店系統(tǒng)與藥品商店系統(tǒng)的功能一致,都為購(gòu)買相應(yīng)的物品,任務(wù)系統(tǒng)的功能為通過(guò)面板顯示交互信息然后指引玩家進(jìn)行后續(xù)的操作,三種NPC對(duì)應(yīng)的交互面板如下圖所示:圖4-2任務(wù)、藥品商店、武器商店系統(tǒng)任務(wù)系統(tǒng)中,首先在任務(wù)面板上添加一個(gè)“Label”以實(shí)現(xiàn)相應(yīng)交互信息,即“Quest”面板里面顯示的文字信息,然后設(shè)置相應(yīng)的“Button”按鍵,以檢測(cè)玩家點(diǎn)擊對(duì)應(yīng)按鈕的信息;藥品商店與武器商店則設(shè)計(jì)相同,都為點(diǎn)擊對(duì)應(yīng)的NPC顯示相應(yīng)的商品信息,通過(guò)導(dǎo)入相應(yīng)的藥品素材與裝備素材,其中武器商店的商品信息較多,則需添加一個(gè)“DragScrollView”控件去實(shí)現(xiàn)相應(yīng)的功能,當(dāng)然只添加“DragScrollView”功能則只是在面板上對(duì)物品上下進(jìn)行拖拽,因此會(huì)顯得不方便,在此也添加了相應(yīng)滾動(dòng)條控件,即在NGUI→PrefabToolbar中的滾動(dòng)條控件添加進(jìn)武器商店面板即可,其操作如下圖所示:圖4-3滾動(dòng)條設(shè)計(jì)圖對(duì)于物品信息的信息顯示,我主要通過(guò)讀取文本信息的方法來(lái)實(shí)現(xiàn),即添加一個(gè)“.txt”腳本進(jìn)行對(duì)各種物品信息的儲(chǔ)存,在后續(xù)的技能系統(tǒng)也是通過(guò)此方法得以實(shí)現(xiàn),即各類商品在文本文件(ObjectsInfoList)里的格式如下:1001,小瓶血藥,icon-potion1,Drug,50,0,50,601002,大瓶血藥,icon-potion2,Drug,100,0,70,1001003,藍(lán)藥,icon-potion3,Drug,0,100,60,802001,黃金甲,armor0-icon,Equip,0,50,0,Armor,Swordman,150,2002002,銅甲,armor1-icon,Equip,0,39,0,Armor,Swordman,100,1502003,神跡魔法衣,armor2-icon,Equip,0,50,0,Armor,Magician,150,2002004,破舊魔法衣,armor3-icon,Equip,0,20,0,Armor,Magician,60,1002005,銅鞋,icon-boot0,Equip,0,0,50,Shoe,Common,60,1002006,神級(jí)紅鞋,icon-boot0-01,Equip,0,0,70,Shoe,Common,120,1502007,帽子,icon-helm,Equip,0,50,0,Headgear,Swordman,100,1202008,神帽,icon-helm-01,Equip,0,70,0,Headgear,Swordman,120,2002009,神級(jí)魔法帽,icon-helm-02,Equip,0,70,0,Headgear,Magician,120,2002010,普通魔法帽,icon-helm-03,Equip,0,50,0,Headgear,Magician,100,1202011,黃金戒指,icon-ring,Equip,0,50,0,Accessory,Common,50,702012,銅綠戒指,icon-ring-01,Equip,0,30,0,Accessory,Common,30,502013,盾牌,icon-shield,Equip,0,50,0,LeftHand,Common,50,702014,神盾,icon-shield1,Equip,0,70,0,LeftHand,Common,70,1002015,皇族項(xiàng)鏈,icon-tailman,Equip,0,30,0,Accessory,Common,30,602016,火柴棍,rod-icon,Equip,40,0,0,RightHand,Magician,40,802017,金屬棍,rod-icon02,Equip,60,0,0,RightHand,Magician,60,1202018,神級(jí)魔法棒,rod-icon03,Equip,80,0,0,RightHand,Magician,80,2002019,木劍,sword0-icon,Equip,40,0,0,RightHand,Swordman,40,602020,雙劍,sword0-icon00,Equip,60,0,0,RightHand,Swordman,60,1002021,黃金劍,sword1-icon,Equip,80,0,0,RightHand,Swordman,80,1502022,神級(jí)圣劍,sword2-icon,Equip,100,0,0,RightHand,Swordman,150,200即在每?jī)蓚€(gè)數(shù)據(jù)之間通過(guò)逗號(hào)隔開(kāi),然后讀取文本中的信息,通過(guò)一一遍歷來(lái)輸出對(duì)應(yīng)的物品信息,從而達(dá)到各類商品的信息顯示,之后需要通過(guò)訪問(wèn)文本文件里的裝備信息,即在武器商店面板腳本(ShopWeaponUI)中定義一個(gè)數(shù)組,即用來(lái)所有的裝備id(2001~2012),然后添加grid來(lái)管理裝備在武器商店面板中的排序,其代碼以及操作如下圖所示:圖4-4裝備信息讀取設(shè)置圖圖4-5裝備Prefab設(shè)計(jì)圖圖4-6裝備信息數(shù)組定義圖4-7武器面板信息讀取代碼圖4.1.2背包系統(tǒng)在交互系統(tǒng)得以實(shí)現(xiàn)之后,需要對(duì)背包(Inventory)系統(tǒng)進(jìn)行相應(yīng)的設(shè)計(jì)與實(shí)現(xiàn),即通過(guò)玩家跟藥品商店系統(tǒng)NPC與武器商店系統(tǒng)NPC進(jìn)行交互,購(gòu)買相應(yīng)的商品,然后在背包系統(tǒng)中獲取相應(yīng)的物品信息,從而結(jié)束交互。首先對(duì)背包進(jìn)行設(shè)計(jì),背包容量為4*5空間的布局,即最大可裝滿(儲(chǔ)存)20的物品信息,同時(shí)設(shè)計(jì)相應(yīng)的金幣模塊,其設(shè)計(jì)如下:圖4-8背包系統(tǒng)面板同時(shí)在背包系統(tǒng)的“GameObject”里添加相應(yīng)的腳本進(jìn)行指定每個(gè)小空間的物品以及功能顯示的方法,當(dāng)每個(gè)物品小空間與金幣信息實(shí)現(xiàn)成功后,接下來(lái)要對(duì)每一個(gè)小空間進(jìn)行操作,即對(duì)物品的添加以及使用等情況,首先對(duì)單擊第一個(gè)網(wǎng)格添加一個(gè)“SpriteChild”作為后續(xù)物品信息顯示的Prefab,然后導(dǎo)入相應(yīng)的藥品與裝備的素材進(jìn)行設(shè)置,同時(shí)也要在每個(gè)小空間的右下角設(shè)置對(duì)應(yīng)商品數(shù)量的數(shù)字顯示,通過(guò)添加“Label”控件進(jìn)行設(shè)置,然后當(dāng)鼠標(biāo)移動(dòng)到物品信息處時(shí)要輸出相應(yīng)信息情況的顯示,即讀?。∣bjectsInfoList)里的信息,具體操作如下:圖4-9背包系統(tǒng)功能在小空間里要實(shí)現(xiàn)存儲(chǔ)物品的外觀信息、數(shù)量信息以及物品類型信息,即在背包系統(tǒng)里添加一個(gè)腳本(InventoryItemGrid)進(jìn)行對(duì)各類物品的管理,其中“item.SetIconName(id,info.icon_name);”是在背包信息管理代碼(InvenrotyItem)下的一個(gè)函數(shù),實(shí)現(xiàn)設(shè)置物品名稱的作用,其代碼如下:圖4-10背包系統(tǒng)管理代碼圖以上操作完成后,即背包功能的效果以及相應(yīng)的商店購(gòu)買功能代碼如下圖所示:圖4-11背包系統(tǒng)功能圖4-12商店購(gòu)買功能代碼圖圖4-13商店購(gòu)買功能處理完背包系統(tǒng)的小空間布局以及信息顯示功能后,要對(duì)物品進(jìn)行添加拖拽功能,即使得物品在4*5的20個(gè)小空間里隨意擺放位置,在此NGUI提供了“UIDragDropItem”方法,即在背包系統(tǒng)腳步(InventoryItem)下繼承該方法即可,其中,因?yàn)椤癠IDragDropItem”里已經(jīng)定義了相應(yīng)的Awake()與Update()等方法,所以要為(InventoryItem)腳本里的諸如此類方法加以保護(hù),以及內(nèi)部方法的首選調(diào)用操作,所以在Awake()與Update()里加上前綴“protectedoverride”,然后添加“base.Awake()”方法用來(lái)首選調(diào)用即可,其代碼如下圖所示:圖4-14背包系統(tǒng)拖拽功能代碼圖圖4-15背包系統(tǒng)拖拽功能(1)圖4-16背包系統(tǒng)拖拽功能(2)功能面板的設(shè)計(jì)功能面板的設(shè)計(jì),即在游戲界面下放添加相應(yīng)的功能點(diǎn)擊事件,從而實(shí)現(xiàn)每個(gè)功能模塊面板的彈出顯示功能,即首先在游戲UI界面下放Create一個(gè)“InvisibleWidget”,也就是一個(gè)Container,然后在“Widget”下添加數(shù)個(gè)用來(lái)控制功能面板顯示的Sprite,在此我添加了5個(gè)Sprite,分別是狀態(tài)功能模塊、背包功能模塊、裝備功能模塊、技能功能模塊以及游戲系統(tǒng)設(shè)置功能模塊,其樣式如下圖所示:圖4-17功能模塊樣式為了實(shí)現(xiàn)這5個(gè)功能模塊按鍵的監(jiān)聽(tīng),需要給主控件添加一個(gè)腳本(FunctionBar)以及通過(guò)對(duì)各個(gè)功能模塊的指定來(lái)實(shí)現(xiàn)相應(yīng)功能面板的顯示,之后將5個(gè)g功能函數(shù)指定給5個(gè)按鍵的OnClick事件即可,其代碼與具體操作如下:圖4-18功能模塊實(shí)現(xiàn)代碼圖圖4-19功能模塊指定操作技能系統(tǒng)的設(shè)計(jì)技能系統(tǒng)的設(shè)計(jì)與武器商店系統(tǒng)的設(shè)計(jì)大致相同,都是通過(guò)采用NGUI對(duì)技能信息添加讀取、設(shè)置相應(yīng)的滾動(dòng)面板以及滾動(dòng)條,然后設(shè)計(jì)相應(yīng)的技能Prefab進(jìn)行調(diào)用即可,本設(shè)計(jì)中技能面板模塊的核心是技能快捷欄的應(yīng)用,即設(shè)計(jì)技能快捷欄在游戲界面的正下方,玩家通過(guò)將技能面板里的技能拖動(dòng)到相應(yīng)的快捷欄里然后進(jìn)行按鍵操作,這也是RPG游戲最基本的技能使用操作方式。首先對(duì)技能的數(shù)據(jù)信息進(jìn)行編寫,此方法與物品信息的處理方式一致,即添加一個(gè)“.txt”腳本進(jìn)行對(duì)技能信息的儲(chǔ)存,后續(xù)進(jìn)行信息的調(diào)用,即技能文本文件命名為(SkillsInfoList),其信息圖如下:圖4-20技能信息圖技能信息存儲(chǔ)完后,在相應(yīng)的技能UI面板下添加一個(gè)技能腳本(SkillsInfo)將信息存入字典方法Dictionary<>;中,其代碼如下圖4-21技能信息字典儲(chǔ)存代碼圖其中InitSkillInfoDict()方法與Inventory()方法類似,通過(guò)提供一個(gè)外部的訪問(wèn)接口,然后這個(gè)接口即可訪問(wèn)id對(duì)應(yīng)的技能信息。技能UI面板的設(shè)計(jì)與功能與武器商店系統(tǒng)的UI面板基本一致,都是通過(guò)添加“InvisibleWidget”來(lái)實(shí)現(xiàn)技能的信息顯示,技能信息的顯示也是通過(guò)類似武器商店系統(tǒng)中對(duì)裝備信息描述的方法進(jìn)行實(shí)現(xiàn)的,即“Sprite”和“Label”添加,其次就是對(duì)技能UI面板的操作功能添加相應(yīng)的滾動(dòng)面板以及滾動(dòng)條設(shè)計(jì),即“ScrollView”與“ScrollBar”,其效果及相應(yīng)指定信息如下圖所示:圖4-22技能UI面板技能UI面板設(shè)計(jì)完后,則當(dāng)游戲運(yùn)行時(shí),通過(guò)兩種不同的人物角色調(diào)用對(duì)應(yīng)的技能信息,其運(yùn)行效果如下圖所示:圖4-23技能系統(tǒng)運(yùn)行效果接著處理技能的拖拽功能,其功能與背包系統(tǒng)中各種商品的拖拽功能方法一致,即在創(chuàng)建好的“SkillItem”的Prefab中的技能Sprite(icon_name)下添加一個(gè)腳本(SkillItemIcon)以實(shí)現(xiàn)對(duì)技能的拖拽效果,其代碼以及效果如下圖所示:圖4-24拖拽技能功能代碼圖圖4-25拖拽技能的效果接下來(lái)對(duì)技能快捷欄的設(shè)計(jì),即創(chuàng)建一個(gè)“InvisibleWidget”用來(lái)存儲(chǔ)技能,通過(guò)快捷方式可以方便地使用技能。在“InvisibleWidget”中創(chuàng)建6個(gè)相同的Sprite,將其命名為“ShortCut1~6”,其中將創(chuàng)建好的“InvisibleWidget”Container命名為“ShortCutUI”,然后在“ShortCut1~6”里添加相應(yīng)的Sprite作為icon技能圖標(biāo)以及Label作為keynum的技能編碼,其效果圖如下:圖4-26技能快捷欄的設(shè)計(jì)在拖拽的時(shí)候需要?jiǎng)?chuàng)建技能圖標(biāo),即在ShortCut1~6中創(chuàng)建ChildSprite作顯示技能的控件,同時(shí)考慮到技能快捷欄一開(kāi)始是默認(rèn)隱藏的,因此要設(shè)置它的active為false,同時(shí)通過(guò)增加id以及info方法來(lái)讀取相應(yīng)的技能信息,其代碼以及效果如下圖所示:圖4-26技能快捷欄信息顯示代碼圖圖4-27技能欄功能效果因?yàn)榧寄苁怯械燃?jí)的限制,因此要對(duì)人物等級(jí)與技能的信息對(duì)應(yīng),即在SkillItem的Prefab中添加遮擋控件來(lái)實(shí)現(xiàn)相應(yīng)的功能,其代碼以及效果如下圖所示:圖4-28技能遮擋代碼圖圖4-28實(shí)現(xiàn)技能遮擋效果4.1.5主角狀態(tài)信息與游戲場(chǎng)景小地圖的顯示設(shè)計(jì)主角狀態(tài)信息與游戲場(chǎng)景小地圖的功能在人機(jī)交互中起到非常重要的作用,通過(guò)狀態(tài)信息面板可以方便地查看主角的等級(jí)、名稱、血量以及魔法量。小地圖則可以提供當(dāng)前主角的位置信息,并且可以顯示人物以及場(chǎng)景周邊的物體信息。首先對(duì)主角狀態(tài)信息面板進(jìn)行設(shè)計(jì),即主角狀態(tài)信息顯示在游戲的左上方,方便玩家查看相應(yīng)的信息,在游戲主角Prefab下創(chuàng)建一個(gè)Camera(將其命名為FaceCamera)以隨時(shí)獲取主角的頭像信息,然后給主角設(shè)定一個(gè)“Layer”以進(jìn)行Camera中“CullingMask”的設(shè)置,即將主角的“Layer”設(shè)置為Player,再在此基礎(chǔ)上將鏡頭設(shè)置到只對(duì)準(zhǔn)人物頭像的位置,從而達(dá)到FaceCamera只播放主角頭像的動(dòng)畫,之后將Camera設(shè)置成Alignwithview輔助對(duì)齊,在此基礎(chǔ)上,在UIRoot下進(jìn)行設(shè)計(jì)歸總,即創(chuàng)建一個(gè)SimpleTexture,將其命名為“HeadStateUI”,然后通過(guò)所導(dǎo)入的鏡頭素材對(duì)人物頭像鏡頭的Texture加以一系列的裝飾設(shè)計(jì)即可,其設(shè)計(jì)操作如下圖所示:圖4-30游戲場(chǎng)景人物頭像設(shè)計(jì)接下來(lái)對(duì)人物的名稱、等級(jí)、血量和魔法量進(jìn)行設(shè)計(jì),在“HeadStateUI”里添加相應(yīng)的“Label”(儲(chǔ)存角色名字)、添加兩個(gè)“ColoredProgressBar”表示血量與魔法量的顯示,通過(guò)指定相應(yīng)的血量與魔法量的Sprite即可,最后添加Anchor來(lái)保證頭像框一直顯示在左上角,設(shè)置Anchor的Side為TopLeft(左上角)即可,然后提供一個(gè)接口來(lái)更改角色名字、血量與魔法量的顯示,即在“HeadStateUI”下添加一個(gè)腳本(HeadStateUI)來(lái)進(jìn)行功能上的實(shí)現(xiàn),其效果與代碼如下圖所示:圖4-31角色狀態(tài)信息顯示代碼圖圖4-32角色狀態(tài)信息小地圖功能的實(shí)現(xiàn)與游戲開(kāi)始界面Camera的設(shè)計(jì)方法類似,使用一個(gè)Camera獲取游戲場(chǎng)景信息,然后根據(jù)合適的視覺(jué)進(jìn)行角度上以及大小的調(diào)整,使得Camera覆蓋到當(dāng)前地圖區(qū)域里,最終效果如下圖所示:圖4-33小地圖小地圖上也添加了相應(yīng)進(jìn)行游戲場(chǎng)景的放大與縮小功能,即為小地圖的Texture中添加一個(gè)腳本(Minimap)進(jìn)行控制,在此腳本中提供兩個(gè)函數(shù)接口OnZoomInClick與OnZoomOutClick為小地圖提供兩個(gè)縮放按鍵,其代碼如下圖所示:圖4-34小地圖放大與縮小功能代碼圖4.2怪物系統(tǒng)與角色格斗系統(tǒng)的實(shí)現(xiàn)4.2.1怪物模型導(dǎo)入首先給怪物選定一個(gè)場(chǎng)景作為怪物生成的區(qū)域,怪物場(chǎng)景區(qū)域如下圖所示:圖4-35怪物場(chǎng)景區(qū)域選定區(qū)域后,給相應(yīng)的位置導(dǎo)入相應(yīng)怪物模型,即先將小型怪物從素材(Model)中拖入場(chǎng)景,本設(shè)計(jì)中,三種怪物的模型為“人狼”,即將小型怪物命名為“WolfBaby”,同時(shí)將相應(yīng)的動(dòng)畫資源導(dǎo)入其中,其效果如下圖所示:圖4-36小狼模型導(dǎo)入在小狼模型下添加一個(gè)腳本(WolfBaby)來(lái)為后續(xù)的功能進(jìn)行實(shí)現(xiàn),首先實(shí)現(xiàn)小狼的狀態(tài)管理與移動(dòng),即在小狼模型下添加一個(gè)“CharacterController”用來(lái)控制小狼的移動(dòng),其代碼如下:圖4-37小狼狀態(tài)控制代碼(1)圖4-38小狼狀態(tài)控制代碼(2)以上代碼中,RandomState()方法里第125行所表示小狼的狀態(tài)是由站立(Idle)→巡邏(Walk)狀態(tài),在切換到巡邏(Walk)狀態(tài)時(shí),需要給小狼設(shè)置一個(gè)隨機(jī)的方向,否則在Walk狀態(tài)下小狼無(wú)法移動(dòng),即通過(guò)“transform.Rotate(transform.up*Random.Range(0,360));”的Rotate()方法進(jìn)行該功能的實(shí)現(xiàn)。移動(dòng)功能實(shí)現(xiàn)后,還有怪物的主動(dòng)攻擊與被主角攻擊等功能,首先對(duì)怪物被攻擊的功能進(jìn)行處理,即為小狼創(chuàng)建定義一個(gè)血量,初始值為100,當(dāng)小狼被攻擊時(shí),也要考慮到是否被打中與打中后Miss效果的功能實(shí)現(xiàn),當(dāng)被打中時(shí),也要顯示被打中的效果以直觀方便判斷怪物被攻擊到,則通過(guò)設(shè)置怪物Body狀態(tài)顏色的改變來(lái)實(shí)現(xiàn)該功能,在Unity3D里可以直接在游戲物里添加“SkinnedMeshRenderer”控件來(lái)控制怪物或人物狀態(tài)顏色的改變,即在怪物的Body上定義兩種顏色,一種為正常狀態(tài)下默認(rèn)顏色灰色“Grey”,另一種顏色即為被攻擊到的顏色紅色“Red”,其代碼以及設(shè)置操作如下圖所示:圖4-39小狼被攻擊狀態(tài)代碼圖圖4-40SkinnedMeshRender控件添加導(dǎo)入HUDText(文本HUDText為Unity官方提供用來(lái)實(shí)現(xiàn)Miss效果以及扣血效果的功能)實(shí)現(xiàn)Miss效果,它里面的“UIFollowTarget”腳本用來(lái)實(shí)現(xiàn)跟隨主角或怪物的功能,即將HUDText放在UIRoot下,在UIRoot下添加一個(gè)“InvisibleWidget”放置UI界面中間,命名為“HUDTextParent”,然后將其設(shè)置為單例模式(只有一個(gè)實(shí)例),在每個(gè)物體創(chuàng)建時(shí)新添加一個(gè)HUDText,則在“WolfBaby”的Prefab下添加一個(gè)Empty(空物體)用來(lái)存放HUDText,其添加操作與代碼如下圖所示:圖4-41HUDText功能實(shí)現(xiàn)代碼圖圖4-42HUDText控件添加初始化完成后,進(jìn)行Miss效果與怪物被攻擊時(shí)Body顏色切換的效果測(cè)試,其效果如下圖所示:圖4-43Miss效果與Body顏色切換當(dāng)怪物被殺死摧毀物體后,同時(shí)摧毀HUDText,即在腳本(WolfBaby)中添加相應(yīng)的代碼:圖4-44HUDText摧毀代碼圖敵人的自動(dòng)攻擊功能的實(shí)現(xiàn)與AI(人工智能)功能的實(shí)現(xiàn)相關(guān)聯(lián),首先處理自動(dòng)攻擊事件的邏輯,即當(dāng)“state=WolfState.Attack”時(shí),執(zhí)行自動(dòng)攻擊功能,怪物的攻擊包括以下屬性:圖4-45攻擊屬性代碼圖圖4-45攻擊屬性設(shè)置自動(dòng)攻擊的邏輯分析:當(dāng)角色與怪物的距離小于或等于可攻擊的距離范圍時(shí),執(zhí)行攻擊事件(distance<minDistance);當(dāng)角色與怪物的距離介于可攻擊范圍時(shí),移動(dòng)到最小距離范圍時(shí),再執(zhí)行攻擊事件,(minDistance<distance<maxDistance);當(dāng)角色與怪物距離大于最大攻擊距離時(shí),取消攻擊狀態(tài),執(zhí)行巡邏(Walk)狀態(tài)(distance>maxDistance);其代碼如下圖所示:圖4-46自動(dòng)攻擊功能實(shí)現(xiàn)代碼圖(1)圖4-47自動(dòng)攻擊功能實(shí)現(xiàn)代碼圖(2)以上代碼同時(shí)實(shí)現(xiàn)了進(jìn)行攻擊行為的切換與播放功能的實(shí)現(xiàn),即攻擊行為可分為兩部分,即攻擊和距離下一次攻擊開(kāi)始的緩沖時(shí)間。所以將攻擊分為3種模式:普通攻擊(normalattack)、狂野攻擊(crazyattack)以及攻擊的休息間隔。綜上所述即為怪物攻擊系統(tǒng)以及怪物被攻擊狀態(tài)等的功能實(shí)現(xiàn),另外兩種怪物(中型怪物與大型怪物)的設(shè)計(jì)與功能實(shí)現(xiàn)與小型怪物的方法相似,即把對(duì)應(yīng)的怪物模型與對(duì)應(yīng)的怪物Animation動(dòng)畫與CharacterController加以指定,然后同時(shí)使用一個(gè)腳本(WolfBaby),將其中的屬性加以指定以及數(shù)據(jù)根據(jù)對(duì)應(yīng)的類型進(jìn)行修改即可(大型怪物體積比較大,攻擊距離需要調(diào)整合適,距離過(guò)小將會(huì)導(dǎo)致攻擊系統(tǒng)無(wú)法正常運(yùn)行),其相應(yīng)的操作如下圖所示:圖4-48中型、大型怪物的添加

三種怪物添加完后,接下來(lái)處理怪物的生成功能,即在“Hierarchy”板塊中創(chuàng)建一個(gè)空的游戲物體來(lái)表示怪物的生成器,命名為“Spawn”,然后添加一個(gè)腳本(WolfSpawn)用來(lái)實(shí)現(xiàn)怪物自動(dòng)生成功能,代碼如下圖所示:圖4-49怪物自動(dòng)生成功能代碼圖然后分別在游戲物體里指定相應(yīng)的生成數(shù)以及對(duì)應(yīng)的怪物Prefab,即小狼每3秒生成5個(gè);中狼每10秒生成3個(gè);大狼每2秒生成一個(gè),操作如下圖所示:圖4-50怪物自動(dòng)生成功能設(shè)置4.2.2角色攻擊與技能系統(tǒng)的實(shí)現(xiàn)角色攻擊時(shí)本設(shè)計(jì)的核心部分,攻擊模式分為普通攻擊與技能攻擊,其中技能攻擊的信息在4.1.4小節(jié)的技能系統(tǒng)實(shí)現(xiàn)中已經(jīng)存儲(chǔ)設(shè)置,在此直接進(jìn)行調(diào)用,即在角色Prefab下添加一個(gè)腳本(PlayerAttack)來(lái)實(shí)現(xiàn)攻擊功能的實(shí)現(xiàn),在“state=PlayerState.NormalAttack”的實(shí)現(xiàn),其中核心部分為角色進(jìn)行攻擊時(shí)的邏輯判斷,即判斷主角和怪物的距離范圍,若超出攻擊的距離范圍,主角進(jìn)行移動(dòng)并且攻擊;若未超出攻擊的距離范圍,直接執(zhí)行攻擊,在(PlayerMove)腳本的SimpleMove()方法中定義一個(gè)函數(shù)來(lái)實(shí)現(xiàn),代碼如下圖所示:圖4-51角色普通攻擊功能實(shí)現(xiàn)的代碼圖圖4-52SimpleMove()方法的調(diào)用在攻擊狀態(tài)下,也有不同的動(dòng)畫,例如:在攻擊狀態(tài)下的移動(dòng)、攻擊以及攻擊休息時(shí)間的動(dòng)畫。所以在PlayerAttack腳本中添加相應(yīng)的Attackstate類來(lái)實(shí)現(xiàn)三種不同狀態(tài)的動(dòng)畫效果,并在控制角色動(dòng)畫的PlayerAnimation腳本中通過(guò)當(dāng)前AttackState的狀態(tài)來(lái)分配不同的動(dòng)畫,然后在PlayerAttack腳本下通過(guò)在“if(distance>min_distance)”中加入攻擊狀態(tài)下的移動(dòng)動(dòng)畫的播放即可,其代碼如下圖所示:圖4-53角色攻擊狀態(tài)實(shí)現(xiàn)圖4-54角色攻擊動(dòng)畫實(shí)現(xiàn)實(shí)現(xiàn)了基本攻擊的動(dòng)畫后,接下來(lái)需要實(shí)現(xiàn)攻擊時(shí)的休息狀態(tài),即添加兩個(gè)String,用來(lái)切換攻擊狀態(tài)與休息狀態(tài)(aniname_idle與aniname_now),即當(dāng)“distance<=min_distance”進(jìn)入攻擊范圍距離時(shí),添加相應(yīng)的計(jì)時(shí)器與相應(yīng)動(dòng)畫的播放,即可實(shí)現(xiàn)AttackState下Moving、Idle與Attack狀態(tài)的實(shí)現(xiàn),代碼如下圖所示:圖4-55角色攻擊時(shí)進(jìn)行休息狀態(tài)切換攻擊時(shí)需要播放相應(yīng)的攻擊特效,即攻擊特效的添加通過(guò)RPG→Effect→Prefabs下添加相應(yīng)的技能特效,即在PlayerAttack腳本下定義一個(gè)用來(lái)儲(chǔ)存技能特效的數(shù)組(efxArray),然后導(dǎo)入相應(yīng)的技能特效Prefab即可,具體操作與實(shí)際運(yùn)行效果如下圖所示:圖4-56角色攻擊特效的導(dǎo)入圖4-57攻擊特效效果在(圖4-55攻擊特效效果)中可以看到人物頭頂上“-9”的紅色字樣,即人物在受攻擊狀態(tài)下的血量的減少顯示,其次還要通過(guò)判斷主角被攻擊的程度(當(dāng)主角的“HP”<0時(shí))實(shí)現(xiàn)角色死亡動(dòng)畫的播放,其功能的實(shí)現(xiàn)與怪物受攻擊時(shí)的方法是類似的,即在PlayerAttack腳本中添加相應(yīng)的代碼即可實(shí)現(xiàn),同時(shí)要實(shí)現(xiàn)當(dāng)角色死亡后,需要取消怪物的攻擊以及人物的移動(dòng)功能,即在腳本(PlayerDir)中添加相應(yīng)的方法即可,相應(yīng)的代碼如下圖所示:圖4-58角色被攻擊功能代碼圖圖4-59怪物停止攻擊代碼圖圖4-60角色死亡后移動(dòng)鎖定角色攻擊功能實(shí)現(xiàn)后,接下來(lái)處理角色施放技能的功能,也是本設(shè)計(jì)的核心部分。與普通攻擊不同,技能系統(tǒng)的實(shí)現(xiàn)需要添加施放的技能的特效、動(dòng)畫以及播放的時(shí)間,然后將各類型的技能類別分為增益型技能、增強(qiáng)型技能、單體攻擊技能以及群體攻擊技能,通過(guò)調(diào)用4.1.4小節(jié)中處理好的技能信息,然后在腳本(SkillsInfo)中添加相應(yīng)的變量,之后通過(guò)與技能欄(ShortCut1~6)的互動(dòng)實(shí)現(xiàn)技能的施放效果,其核心代碼如下圖所示:圖4-61技能施放功能代碼圖(1)圖4-61技能施放功能代碼圖(2)圖4-62技能施放功能代碼圖(3)有了上述的設(shè)置鋪墊,接下來(lái)正式開(kāi)始使用技能的設(shè)計(jì)與實(shí)現(xiàn)UseSkill(),因?yàn)榧寄茴愋褪嵌鄻踊?,即在本設(shè)計(jì)中將技能的類型分為了增益型技能、增強(qiáng)型技能、單體攻擊技能以及群體攻擊技能(Passive、Buff、SingleTarget、MultiTarget)四類,首先設(shè)計(jì)第一類:恢復(fù)型技能。其主要邏輯如下:按下技能鍵設(shè)置施法狀態(tài)(此時(shí)角色無(wú)法移動(dòng))播放技能特效并計(jì)時(shí)計(jì)時(shí)結(jié)束改變狀態(tài)并播放技能動(dòng)畫恢復(fù)血量(HP)/魔法量(MP)因此在代碼中的表達(dá)方式如下圖所示:圖4-63技能施放功能的實(shí)現(xiàn)代碼圖圖4-64增益技能的實(shí)現(xiàn)代碼圖增益型技能施放效果如下圖所示:圖4-65增益技能施放效果接下來(lái)處理增強(qiáng)型技能。其主要邏輯與增益型技能的模式相似,步驟為:按下技能鍵設(shè)置施法狀態(tài)(此時(shí)角色無(wú)法移動(dòng))播放技能特效并計(jì)時(shí)計(jì)時(shí)結(jié)束改變狀態(tài)并播放技能動(dòng)畫增加相應(yīng)的屬性值持續(xù)時(shí)間結(jié)束后恢復(fù)原來(lái)狀態(tài)因此在代碼中的表達(dá)方式如下圖所示:圖4-66增強(qiáng)技能的實(shí)現(xiàn)代碼圖(1)圖4-67增強(qiáng)技能的實(shí)現(xiàn)代碼圖(2)接下來(lái)處理單體攻擊技能。單體攻擊需要選擇怪物目標(biāo),其步驟為:按下技能鍵修改鼠標(biāo)類型為技能施放圖標(biāo)判斷檢測(cè)是否點(diǎn)擊怪物(射線檢測(cè))設(shè)置施法狀態(tài)(此時(shí)角色無(wú)法移動(dòng))播放技能特效并計(jì)時(shí)計(jì)時(shí)結(jié)束改變狀態(tài)并播放技能動(dòng)畫怪物造成傷害因此在代碼中的表達(dá)方式如下圖所示:圖4-68怪物目標(biāo)選定代碼圖圖4-69單體技能實(shí)現(xiàn)代碼圖單體技能施放效果如下圖所示:圖4-70單體技能施放效果接下來(lái)處理群體攻擊技能。群體攻擊技能與單體攻擊技能的差別在于群體技能有具體制定的范圍,并且要判斷范圍內(nèi)的怪物,其邏輯如下:按下技能鍵修改鼠標(biāo)類型為技能施放圖標(biāo)點(diǎn)擊任意一個(gè)位置設(shè)置施法狀態(tài)(此時(shí)角色無(wú)法移動(dòng))播放技能特效并計(jì)時(shí)計(jì)時(shí)結(jié)束改變狀態(tài)并播放技能動(dòng)畫判斷是否技能接觸到怪物(添加Collider)怪物造成傷害因此在代碼中的表達(dá)方式如下圖所示:圖4-71群體技能實(shí)現(xiàn)代碼圖為了檢測(cè)是否碰撞到怪物,則需要將群體技能特效拖入場(chǎng)景進(jìn)行碰撞范圍設(shè)計(jì),并通過(guò)給該特效添加相應(yīng)的腳本(MagicSphere)來(lái)實(shí)現(xiàn)它的特效功能,之后在群體功能方法(MultiTarget)里進(jìn)行實(shí)例化特效即可(圖4-71群體技能實(shí)現(xiàn)代碼圖中的第369→第372行),其代碼與相關(guān)設(shè)置操作如下圖所示:圖4-72群體技能特效設(shè)置圖4-73群體技能特效設(shè)置群體技能施放效果如下圖所示:圖4-74群體技能施放效果到此即為角色技能的整體設(shè)計(jì)與功能的實(shí)現(xiàn),最后增加處理角色在游戲場(chǎng)景中移動(dòng)時(shí)的環(huán)境碰撞器,其功能主要防止角色在場(chǎng)景中不合理的隨意移動(dòng)(人物移動(dòng)BUG),即穿越房屋、過(guò)河流或是“飛天遁地”等,因此在“Hierarchy”下添加一個(gè)空的游戲物體(Empty),命名為“Colliders”作為環(huán)境碰撞器的儲(chǔ)存位置,新建3DCube作為環(huán)境碰撞器,然后通過(guò)復(fù)制相同的物體然后在各邊界處放置即可,對(duì)于一些可行走的地方,例如橋,則需要添加“MeshCollider”,并更改它的Tag為Ground以實(shí)現(xiàn)在橋上的行走效果,然后在環(huán)境碰撞器的組件中將“MeshFilter”與“MeshRender”移除即可,其主要操作如下圖所示:圖4-75添加環(huán)境碰撞器4.3游戲的整體合并與導(dǎo)出游戲整合環(huán)節(jié)即通過(guò)01_Start(游戲開(kāi)始場(chǎng)景界面)→02_Charactercreation(角色創(chuàng)建界面)→03_Play(游戲主場(chǎng)景界面),即在這三個(gè)Scene之間進(jìn)行切換,在01_Start(游戲開(kāi)始場(chǎng)景界面)中通過(guò)點(diǎn)擊“NewGame”進(jìn)行下一個(gè)場(chǎng)景(02_Charactercreation)的切換,然后玩家在02_Charactercreation(角色創(chuàng)建界面)里通過(guò)輸入角色名字后點(diǎn)擊“OK”按鍵進(jìn)行游戲主場(chǎng)景界面(03_Play)的切換。即在File→BuildSetting中導(dǎo)入相應(yīng)的場(chǎng)景,其操作如下圖所示:圖4-76游戲場(chǎng)景導(dǎo)入然后在場(chǎng)景01_Start中的UIRoot下找到相應(yīng)的“newgame”控件中添加一個(gè)腳本(ButtonContainer)進(jìn)行控制場(chǎng)景的切換功能,其代碼如下圖所示:圖4-77游戲場(chǎng)景02切換代碼圖然后在02_Charactercreation的“OK”按鍵中的腳本(CharacterCreation)里添加一個(gè)OnOkButtonClick()方法進(jìn)行場(chǎng)景03_play的切換,代碼如下圖所示:圖4-78游戲場(chǎng)景03切換代碼圖最后在03_play場(chǎng)景下的GameSetting中添加一個(gè)腳本(GameLoad)控制加載,代碼如下圖所示:圖4-79游戲正式登錄到此為止,整個(gè)游戲設(shè)計(jì)的框架以及功能都已實(shí)現(xiàn),游戲正式登錄效果如下圖所示:圖4-80游戲正式登錄效果

游戲測(cè)試5.1測(cè)試計(jì)劃5.1.1測(cè)試軟件環(huán)境表5-1軟件信息表序號(hào)名稱版本備注1Windows10企業(yè)版64位10.0,版本17134操作系統(tǒng)5.1.2測(cè)試硬件環(huán)境表5-2硬件信息表序號(hào)名稱配置備注1MSI-QE626QD-1077XCN8G內(nèi)存+1TB機(jī)械硬盤2CPUIntelCorei7-6700HQCPU-2.60GHz3顯卡NVDIAGTX960M5.1.3測(cè)試內(nèi)容測(cè)試軟件:Unity3D測(cè)試名稱:游戲場(chǎng)景功能測(cè)試測(cè)試時(shí)間:2020年4月1日內(nèi)容:對(duì)游戲的開(kāi)始、進(jìn)入角色創(chuàng)建場(chǎng)景、切換角色模型、角色名字輸入、進(jìn)入游戲主場(chǎng)景、角色移動(dòng)、NPC交互、任務(wù)系統(tǒng)、藥品商店系統(tǒng)、武器商店系統(tǒng)、功能欄—角色狀態(tài)“Status”、功能欄—背包系統(tǒng)“Bag”、功能欄—裝備系統(tǒng)“Equip”、功能欄—技能系統(tǒng)“Skill”;技能快捷欄、功能欄—退出游戲“Setting”、小地圖、以及游戲場(chǎng)景障礙物功能的測(cè)試。5.2測(cè)試用例5.2.1游戲場(chǎng)景“01_start”功能測(cè)試用例表5-3“01_start”測(cè)試用例表功能用例編號(hào)用例說(shuō)明前置條件輸入預(yù)期的輸出開(kāi)始游戲5.2.1.1顯示游戲界面動(dòng)作游戲正常運(yùn)行點(diǎn)擊Label“PRESSANYKEYTOSTART”跳出“NewGame”和“LoadGame”Button進(jìn)入角色創(chuàng)建場(chǎng)景5.2.1.2跳轉(zhuǎn)游戲場(chǎng)景動(dòng)作游戲正常運(yùn)行;已成功執(zhí)行用例5.2.1.1點(diǎn)擊“NewGame”Button進(jìn)入場(chǎng)景“02_charactercreation”5.2.2游戲場(chǎng)景“02_charactercreation”功能測(cè)試用例表5-4“02_charactercreation”測(cè)試用例表功能用例編號(hào)用例說(shuō)明前置條件輸入預(yù)期的輸出切換角色模型5.2.2.1實(shí)現(xiàn)角色模型切換動(dòng)作游戲正常運(yùn)行并且游戲在場(chǎng)景“02_charactercreation”點(diǎn)擊“Preview”或“Next”ButtonMagician/Swordman角色模型切換角色名字輸入5.2.2.2角色名字字符串顯示游戲正常運(yùn)行并且游戲在場(chǎng)景“02_charactercreation”在輸入框內(nèi)輸入字符串顯示相應(yīng)的字符串進(jìn)入游戲主場(chǎng)景5.2.2.3跳轉(zhuǎn)游戲場(chǎng)景動(dòng)作游戲正常運(yùn)行點(diǎn)擊并且游戲在場(chǎng)景“02_charactercreation”點(diǎn)擊“OK”Button進(jìn)入場(chǎng)景“03_play”5.2.3游戲場(chǎng)景“03_play”功能測(cè)試用例表5-5“03_play”測(cè)試用例表功能用例編號(hào)用例說(shuō)明前置條件輸入預(yù)期的輸出角色移動(dòng)5.2.3.1實(shí)現(xiàn)角色移動(dòng)動(dòng)作游戲正常運(yùn)行點(diǎn)擊并且游戲在場(chǎng)景“03_play”在游戲場(chǎng)景內(nèi)任意地方按下鼠標(biāo)左鍵角色移動(dòng)NPC交互5.2.3.2與NPC進(jìn)行人機(jī)交互游戲正常運(yùn)行點(diǎn)擊并且游戲在場(chǎng)景“03_play”中點(diǎn)擊NPC點(diǎn)擊游戲場(chǎng)景內(nèi)NPC彈出相應(yīng)對(duì)話框任務(wù)系統(tǒng)5.2.3.3與NPC進(jìn)行人機(jī)交互游戲正常運(yùn)行點(diǎn)擊并且游戲在場(chǎng)景“03_play”中點(diǎn)擊NPC點(diǎn)擊“老人”NPC;點(diǎn)擊“Accept”Button;“OK”Button;“Cancel”/“關(guān)閉”Button彈出任務(wù)系統(tǒng)對(duì)話框;接受任務(wù);關(guān)閉任務(wù)系統(tǒng)對(duì)話框藥品商店系統(tǒng)5.2.3.4與NPC進(jìn)行人機(jī)交互游戲正常運(yùn)行點(diǎn)擊并且游戲在場(chǎng)景“03_play”中點(diǎn)擊NPC點(diǎn)擊“女士”NPC;點(diǎn)擊“Buy”Button;輸入購(gòu)買數(shù)量后點(diǎn)擊“OK”Button;“關(guān)閉”Button彈出藥品商店系統(tǒng)對(duì)話框;購(gòu)買藥品;關(guān)閉藥品商店系統(tǒng)對(duì)話框武器商店系統(tǒng)5.2.3.5與NPC進(jìn)行人機(jī)交互游戲正常運(yùn)行點(diǎn)擊并且游戲在場(chǎng)景“03_play”中點(diǎn)擊NPC點(diǎn)擊“男士”NPC;點(diǎn)擊“Buy”Button;輸入購(gòu)買數(shù)量后點(diǎn)擊“OK”Button;“關(guān)閉”Button彈出武器商店系統(tǒng)對(duì)話框;購(gòu)買武器;關(guān)閉武器商店系統(tǒng)對(duì)話框功能欄—角色狀態(tài)“Status”5.2.3.6與功能欄進(jìn)行人機(jī)交互游戲正常運(yùn)行點(diǎn)擊并且游戲在場(chǎng)景“03_play”中點(diǎn)擊功能欄下“Status”Button點(diǎn)擊功能欄下“Status”Button顯示角色狀態(tài)“Status”面板;人物升級(jí)后分配5個(gè)屬性點(diǎn)數(shù);增加相應(yīng)屬性功能欄—背包系統(tǒng)“Bag”5.2.3.7與功能欄進(jìn)行人機(jī)交互游戲正常運(yùn)行點(diǎn)擊并且游戲在場(chǎng)景“03_play”中點(diǎn)擊功能欄下“Bag”Button點(diǎn)擊功能欄下“Bag”Button顯示背包系統(tǒng)“Bag”面板;并可在背包系統(tǒng)里查看所獲得的藥品與裝備功能欄—裝備系統(tǒng)“Equip”5.2.3.8與功能欄進(jìn)行人機(jī)交互游戲正常運(yùn)行點(diǎn)擊并且游戲在場(chǎng)景“03_play”中點(diǎn)擊功能欄下“Equip”Button點(diǎn)擊功能欄下“Equip”Button顯示裝備系統(tǒng)“Equip”面板;并可查看角色所佩戴的裝備功能欄—技能系統(tǒng)“Skill”;技能快捷欄5.2.3.9與功能欄進(jìn)行人機(jī)交互游戲正常運(yùn)行點(diǎn)擊并且游戲在場(chǎng)景“03_play”中點(diǎn)擊功能欄下“Skill”Button點(diǎn)擊功能欄下“Skill”Button;將技能拖放到技能快捷欄;按鍵盤數(shù)字“1-6”使用相應(yīng)技能欄上的技能顯示技能系統(tǒng)“Skill”面板;并可將技能拖放到技能快捷欄;按鍵盤數(shù)字“1-6”輸出技能欄上相應(yīng)的技能功能欄—退出游戲“Setting”5.2.3.10與功能欄進(jìn)行人機(jī)交互游戲正常運(yùn)行點(diǎn)擊并且游戲在場(chǎng)景“03_play”中點(diǎn)擊功能欄下“Setting”Button點(diǎn)擊功能欄下“Setting”Button點(diǎn)擊“OK”Button退出游戲小地圖5.2.3.11與小地圖進(jìn)行人機(jī)交互游戲正常運(yùn)行點(diǎn)擊并且游戲在場(chǎng)景“03_play”中點(diǎn)擊小地圖中“+”和“-”Button查看人物在游戲場(chǎng)景中的俯視位置;點(diǎn)擊“+”和“-”進(jìn)行放大和縮小地圖點(diǎn)擊“+”放大地圖;點(diǎn)擊“-”縮小地圖游戲場(chǎng)景障礙物5.2.3.12碰撞器的檢測(cè)游戲正常運(yùn)行點(diǎn)擊并且游戲在場(chǎng)景“03_play”中嘗試穿越障礙物點(diǎn)擊非游戲移動(dòng)的地面阻止角色移動(dòng)5.3測(cè)試結(jié)果本項(xiàng)目基于Unity3D格斗游戲的開(kāi)發(fā)在設(shè)計(jì)時(shí)借鑒了國(guó)內(nèi)外優(yōu)秀的游戲動(dòng)畫、精美的素材以及新穎實(shí)用的代碼為優(yōu)點(diǎn),確保玩家可以輕松地從游戲開(kāi)始界面到操作各個(gè)模塊的系統(tǒng)。經(jīng)過(guò)測(cè)試,本設(shè)計(jì)中“01_start”/“02_charactercreation”/“03_play”場(chǎng)景內(nèi)所有功能成功實(shí)現(xiàn),游戲可以順利進(jìn)行。本設(shè)計(jì)的主要特點(diǎn)和優(yōu)點(diǎn)歸納如下:本游戲界面簡(jiǎn)潔美觀,操作簡(jiǎn)單方便。游戲整體的操作和角色的控制主要是通過(guò)鼠標(biāo)的點(diǎn)擊,極大程度上方便玩家的使用。本游戲兼容性強(qiáng)??梢栽诓煌南到y(tǒng)上正常運(yùn)行,一定程度上方便用戶使用。本游戲整體功能模塊完善,系統(tǒng)運(yùn)行流暢,新玩家都能有很好地體驗(yàn)。此外,本設(shè)計(jì)也有些不足之處,其主要缺點(diǎn)歸納如下:本游戲設(shè)計(jì)內(nèi)容不足,例如商品系統(tǒng)、武器系統(tǒng)、以及任務(wù)系統(tǒng)的內(nèi)容少,太過(guò)于簡(jiǎn)單,角色狀態(tài)系統(tǒng)以及裝備系統(tǒng)不夠完善等。本游戲設(shè)計(jì)存在角色技能施放速率與定點(diǎn)攻擊目標(biāo)不穩(wěn)定的情況。本游戲設(shè)計(jì)出現(xiàn)角色移動(dòng)停止延遲以及環(huán)境碰撞器的設(shè)計(jì)不密集。經(jīng)過(guò)系統(tǒng)測(cè)試分析,基于Unity3D格斗游戲系統(tǒng)運(yùn)行良好,功能完善,操作簡(jiǎn)單,能滿足玩家的基本需求。

總結(jié)與展望6.1總結(jié)本設(shè)計(jì)主要圍繞RPG游戲做一系列的設(shè)計(jì)和功能開(kāi)發(fā)拓展,主要包括了一下幾個(gè)部分:游戲開(kāi)始場(chǎng)景界面的設(shè)計(jì)與載入、角色創(chuàng)建界面的設(shè)計(jì)、角色移動(dòng)控制的實(shí)現(xiàn)、任務(wù)系統(tǒng)、物品系統(tǒng)、狀態(tài)系統(tǒng)、藥品系統(tǒng)、裝備系統(tǒng)、技能系統(tǒng)、主角狀態(tài)信息界面與小地圖的實(shí)現(xiàn)、裝備購(gòu)買系統(tǒng)和經(jīng)驗(yàn)條以及環(huán)境碰撞器的實(shí)現(xiàn)、怪物系統(tǒng)的實(shí)現(xiàn)、角色攻擊系統(tǒng)的實(shí)現(xiàn)以及角色技能攻擊系統(tǒng)等的實(shí)現(xiàn)。本設(shè)計(jì)優(yōu)點(diǎn)在于界面渲染的整潔美觀、邏輯性強(qiáng)、可支配性高、操作簡(jiǎn)單快捷等,進(jìn)一步加強(qiáng)了游戲的整體效果。經(jīng)過(guò)這段時(shí)間的學(xué)習(xí)和努力,確實(shí),在此次設(shè)計(jì)中我遇到了非常非常多的問(wèn)題,同時(shí)也確確實(shí)實(shí)地學(xué)習(xí)到了很多專業(yè)知識(shí)上新穎實(shí)用的東西,以下是我的總結(jié):游戲設(shè)計(jì)理念架構(gòu)一定要先擬定好。要好好想想自己要做一個(gè)怎么樣的游戲,選擇游戲類型特別重要,進(jìn)而要考慮此類游戲的基本系統(tǒng)框架,比如此游戲有哪些模塊、功能、素材和游戲設(shè)計(jì)流程的復(fù)雜程度進(jìn)行統(tǒng)一斟酌,繪制好各類模塊和流程后要多參照流程圖或者交互圖,這樣可以使后續(xù)的工作得以順利進(jìn)行。過(guò)程刪減法。這是一個(gè)我在做這個(gè)設(shè)計(jì)中比較受益的方法,在進(jìn)行游戲設(shè)計(jì)的整體過(guò)程中,一定要把之前已經(jīng)完成的任務(wù)模塊進(jìn)行一一刪減,這樣可以讓自己在后續(xù)的設(shè)計(jì)減輕負(fù)擔(dān),因?yàn)橛螒蛟O(shè)計(jì)的邏輯性需求相當(dāng)高,所以一定要做好前期的預(yù)備工作,做完一個(gè)模塊刪減一個(gè)模塊,這樣可以使得整體的設(shè)計(jì)完整而簡(jiǎn)潔。養(yǎng)成良好的自我編碼習(xí)慣。自己將整個(gè)項(xiàng)目做下來(lái)會(huì)發(fā)現(xiàn),編碼的時(shí)候會(huì)出現(xiàn)各種各樣的問(wèn)題,比如版本不兼容、代碼塊過(guò)時(shí)、標(biāo)點(diǎn)符號(hào)的誤用、公開(kāi)或封裝類的方法運(yùn)用不當(dāng)?shù)榷紩?huì)使得在整體的設(shè)計(jì)中出現(xiàn)各種各樣的BUG。所以在做編碼的同時(shí)也要擬定一系列可能出現(xiàn)問(wèn)題的方案,因而可以增強(qiáng)自己對(duì)整體代碼塊的把控能力,從而把各種不必要的失誤率降到最低。不懼BUG。當(dāng)自己的設(shè)計(jì)遇到各種BUG無(wú)法運(yùn)行時(shí),一定要沉著穩(wěn)定,不要急躁氣餒,根據(jù)編譯工具所提示的錯(cuò)誤列一一進(jìn)行排除式的更正。其實(shí)在做任何的設(shè)計(jì)過(guò)程中,你會(huì)發(fā)現(xiàn),自己才是最好的老師,多動(dòng)手去做,多思考多查閱資料,你會(huì)發(fā)現(xiàn)一切難題都會(huì)被一一解決。總而言之,這次游戲的設(shè)計(jì)與實(shí)現(xiàn)給我?guī)?lái)了太多專業(yè)知識(shí)上的領(lǐng)悟與理解,將自己在大學(xué)四年里所學(xué)的專業(yè)知識(shí)在畢業(yè)設(shè)計(jì)里盡情的展現(xiàn)讓我感到成就感滿滿。6.2展望 我的畢業(yè)設(shè)計(jì)實(shí)現(xiàn)至今,即使主要的功能模塊都已經(jīng)按照自己的想法和思路得以實(shí)現(xiàn),但是由于個(gè)人的能力和時(shí)間有限,還存在著特別多的漏洞問(wèn)題等的殘存,例如技能系統(tǒng)的施放流暢性、角色移動(dòng)、角色格斗時(shí)的流暢性以及場(chǎng)景環(huán)境碰撞器的設(shè)計(jì)等都存在各類問(wèn)題需要進(jìn)一步的修改和完善。希望自己在今后科普學(xué)習(xí)更多新的專業(yè)的相關(guān)知識(shí)講諸如此類問(wèn)題一并解決。參考文獻(xiàn)周頔.《Unity3DPlayMaker游戲設(shè)計(jì)與實(shí)現(xiàn)》.南京:電子工業(yè)出版社.2019吳雁濤.《Unity3D平臺(tái)AR與VR開(kāi)發(fā)快速上手》.北京:清華大學(xué)出版社.2017羅培羽.《Unity3D網(wǎng)絡(luò)游戲?qū)崙?zhàn)-(第2版)》.北京:機(jī)械工業(yè)出版社.2018李偉波.《軟件工程》.武漢:武漢大學(xué)出版社.2006金璽曾.《Unity3D手機(jī)游戲開(kāi)發(fā)》[M].北京:清華大學(xué)出版社.2013(美)PhllCo.游戲關(guān)卡設(shè)計(jì)[M].機(jī)械工業(yè)出版社.2006鄭人杰.《實(shí)用軟件工程》.北京:清華大學(xué)出版社.2003張海藩.《軟件工程導(dǎo)論》.北京:清華大學(xué)出版社.2008《計(jì)算機(jī)網(wǎng)絡(luò)》.美國(guó).JamesF.Kurose,KeithW.Ross.機(jī)械工業(yè)出版社.2018《IT項(xiàng)目管理》.美國(guó).KathySchwalbe.機(jī)械工業(yè)出版社.2017

致謝大學(xué)四年轉(zhuǎn)眼即逝,留下的那些美好回憶至今歷歷在目。如今已到畢業(yè)季,大學(xué)里一切精彩的瞬間都將在畢業(yè)論文呈現(xiàn)后畫上了一個(gè)深刻的句號(hào)。學(xué)海無(wú)涯苦作舟,回想起我在大學(xué)的這四年里,那些刻苦學(xué)習(xí),積極向上,參加各種各樣的活動(dòng)與比賽,每個(gè)階段都收獲到了自己所追求的東西,也由衷地感謝大學(xué)四年來(lái)老師們的諄諄教導(dǎo),細(xì)心栽培,再次向各位老師說(shuō)一句,謝謝您!其次,我還要感謝我自己。在別人玩游戲,睡懶覺(jué)的時(shí)候,我默默地在學(xué)習(xí),一直堅(jiān)定地追求著自己的目標(biāo),時(shí)刻沒(méi)有偷懶。感謝自己時(shí)時(shí)刻刻的堅(jiān)持,感謝自己的每一次努力,才有了現(xiàn)在論文末尾篇章里侃侃而談各種技術(shù)知識(shí)的我,謝謝您!除此之外,我還要感謝我的家人。家人們一直默默地在背后支持著我的學(xué)業(yè),支持著我所追求的一切,寬容地接受了我所有的優(yōu)缺點(diǎn),一直給予我無(wú)限的溫暖的愛(ài),才讓我得以在浩瀚的知識(shí)海洋中,不斷地追求著更好的自己,超越自己,謝謝您們!最后,我要感謝我的老師們。沒(méi)錯(cuò),是您們不斷地給我灌輸知識(shí),讓我從各種專業(yè)技術(shù)入門到精通,您們孜孜不倦地指導(dǎo)著我不斷向前。在此,我特表要感謝我的指導(dǎo)老師張薇老師,謝謝您對(duì)我的畢業(yè)設(shè)計(jì)和畢業(yè)論文做各種專業(yè)性的指導(dǎo),這個(gè)過(guò)程中,是您的細(xì)心、耐心和愛(ài)心推動(dòng)著我不斷完善我的畢業(yè)論文,您給予我的幫助為我四年的大學(xué)時(shí)光添加了一道最美麗的風(fēng)景。您開(kāi)闊的思維方式,強(qiáng)有力的邏輯性,讓我從各種專業(yè)知識(shí)零基礎(chǔ)飛躍出來(lái),讓我在這種學(xué)習(xí)氛圍下吸取著知識(shí)的精華,同時(shí)由衷地感謝您抽空指導(dǎo)我,不厭其煩地回答我各種問(wèn)題,張薇老師,謝謝您。最后,我也要感謝大眾網(wǎng)絡(luò)平臺(tái)上的各位朋友,謝謝您們給我提供各種寶貴的素材資源,謝謝您們給我解答各種專業(yè)代碼塊上的問(wèn)題,讓我有機(jī)會(huì)在此次游戲設(shè)計(jì)中更進(jìn)一步,使我更加了解和拓展我對(duì)Unity3D以及C#語(yǔ)言的了解與領(lǐng)悟,從而使我更加堅(jiān)定地去追求更加精湛的專業(yè)知識(shí),謝謝你們!最后也要向閱讀和審閱本文的所有老師表示衷心的感謝!

ExcelXP的八則快速輸入技巧如果我們?cè)谟肊xcelXP處理龐大的數(shù)據(jù)信息時(shí),不注意講究技巧和方法的話,很可能會(huì)花費(fèi)很大的精力。因此如何巧用ExcelXP,來(lái)快速輸入信息就成為各個(gè)ExcelXP用戶非常關(guān)心的話題,筆者向大家介紹幾則這方面的小技巧。1、快速輸入大量含小數(shù)點(diǎn)的數(shù)字如果我們需要在ExcelXP工作表中輸入大量的帶有小數(shù)位的數(shù)字時(shí),按照普通的輸入方法,我們可能按照數(shù)字原樣大小直接輸入,例如現(xiàn)在要在單元格中輸入0.05這個(gè)數(shù)字時(shí),我們會(huì)把“0.05”原樣輸入到表格中。不過(guò)如果需要輸入若干個(gè)帶有小數(shù)點(diǎn)的數(shù)字時(shí),我們?cè)侔凑丈厦娴姆椒ㄝ斎氲脑?,每次輸入?shù)字時(shí)都需要重復(fù)輸入小數(shù)點(diǎn),這樣工作量會(huì)變大,輸入效率會(huì)降低。其實(shí),我們可以使用ExcelXP中的小數(shù)點(diǎn)自動(dòng)定位功能,讓所有數(shù)字的小數(shù)點(diǎn)自動(dòng)定位,從而快速提高輸入速度。在使用小數(shù)點(diǎn)自動(dòng)定位功能時(shí),我們可以先在ExcelXP的編輯界面中,用鼠標(biāo)依次單擊“工具”/“選項(xiàng)”/“編輯”標(biāo)簽,在彈出的對(duì)話框中選中“自動(dòng)設(shè)置小數(shù)點(diǎn)”復(fù)選框,然后在“位數(shù)”微調(diào)編輯框中鍵入需要顯示在小數(shù)點(diǎn)右面的位數(shù)就可以了。以后我們?cè)佥斎霂в行?shù)點(diǎn)的數(shù)字時(shí),直接輸入數(shù)字,而小數(shù)點(diǎn)將在回車鍵后自動(dòng)進(jìn)行定位。例如,我們要在某單元格中鍵入0.06的話,可以在上面的設(shè)置中,讓“位數(shù)”選項(xiàng)為2,然后直接在指定單元格中輸入6,回車以后,該單元格的數(shù)字自動(dòng)變?yōu)椤?.06”,怎么樣簡(jiǎn)單吧?2、快速錄入文本文件中的內(nèi)容現(xiàn)在您手邊假如有一些以純文本格式儲(chǔ)存的文件,如果此時(shí)您需要將這些數(shù)據(jù)制作成ExcelXP的工作表,那該怎么辦呢?重新輸入一遍,大概只有頭腦有毛病的人才會(huì)這樣做;將菜單上的數(shù)據(jù)一個(gè)個(gè)復(fù)制/粘貼到工作表中,也需花很多時(shí)間。沒(méi)關(guān)系!您只要在ExcelXP中巧妙使用其中的文本文件導(dǎo)入功能,就可以大大減輕需要重新輸入或者需要不斷復(fù)制、粘貼的巨大工作量了。使用該功能時(shí),您只要在ExcelXP編輯區(qū)中,依次用鼠標(biāo)單擊菜單欄中的“數(shù)據(jù)/獲取外部數(shù)據(jù)/導(dǎo)入文本文件”命令,然后在導(dǎo)入文本會(huì)話窗口選擇要導(dǎo)入的文本文件,再按下“導(dǎo)入”鈕以后,程序會(huì)彈出一個(gè)文本導(dǎo)入向?qū)?duì)話框,您只要按照向?qū)У奶崾具M(jìn)行操作,就可以把以文本格式的數(shù)據(jù)轉(zhuǎn)換成工作表的格式了。3、快速輸入大量相同數(shù)據(jù)如果你希望在不同的單元格中輸入大量相同的數(shù)據(jù)信息,那么你不必逐個(gè)單元格一個(gè)一個(gè)地輸入,那樣需要花費(fèi)好長(zhǎng)時(shí)間,而且還比較容易出錯(cuò)。你可以通過(guò)下面的操作方法在多個(gè)相鄰或不相鄰的單元格中快速填充同一個(gè)數(shù)據(jù),具體方法為:首先同時(shí)選中需要填充數(shù)據(jù)的單元格。若某些單元格不相鄰,可在按住Ctrl鍵的同時(shí),點(diǎn)擊鼠標(biāo)左鍵,逐個(gè)選中;其次輸入要填充的某個(gè)數(shù)據(jù)。按住Ctrl鍵的同時(shí),按回車鍵,則剛才選中的所有單元格同時(shí)填入該數(shù)據(jù)。4、快速進(jìn)行中英文輸入法切換一張工作表常常會(huì)既包含有數(shù)字信息,又包含有文字信息,要錄入這樣一種工作表就需要我們不斷地在中英文之間反復(fù)切換輸入法,非常麻煩,為了方便操作,我們可以用以下方法實(shí)現(xiàn)自動(dòng)切換:首先用鼠標(biāo)選中需要輸入中文的單元格區(qū)域,然后在輸入法菜單中選擇一個(gè)合適的中文輸入法;接著打開(kāi)“有效數(shù)據(jù)”對(duì)話框,選中“IME模式”標(biāo)簽,在“模式”框中選擇打開(kāi),單擊“確定”按鈕;然后再選中輸入數(shù)字的單元格區(qū)域,在“有效數(shù)據(jù)”對(duì)話框中,單擊“IME模式”選項(xiàng)卡,在“模式”框中選擇關(guān)閉(英文模式);最后單擊“確定”按鈕,這樣用鼠標(biāo)分別在剛才設(shè)定的兩列中選中單元格,五筆和英文輸入方式就可以相互切換了。5、快速刪除工作表中空行刪除ExcelXP工作表中的空行,一般的方法是需要將空行都找出來(lái),然后逐行刪除,但這樣做操作量非常大,很不方便。那么如何才能減輕刪除工作表中空行的工作量呢?您可以使用下面的操作方法來(lái)進(jìn)行刪除:首先打開(kāi)要?jiǎng)h除空行的工作表,在打開(kāi)的工作表中用鼠標(biāo)單擊菜單欄中的“插入”菜單項(xiàng),并從下拉菜單中選擇“列”,從而插入一新的列X,在X列中順序填入整數(shù);然后根據(jù)其他任何一列將表中的行排序,使所有空行都集中到表的底部。刪去所有空行中X列的數(shù)據(jù),以X列重新排序,然后刪去X列。按照這樣的刪除方法,無(wú)論工作表中包含多少空行,您就可以很快地刪除了。6、快速對(duì)不同單元格中字號(hào)進(jìn)行調(diào)整在使用ExcelXP編輯文件時(shí),常常需要將某一列的寬度固定,但由于該列各單元格中的字符數(shù)目不等,致使有的單元格中的內(nèi)容不能完全顯示在屏幕上,為了讓這些單元格中的數(shù)據(jù)都顯示在屏幕上,就不得不對(duì)這些單元格重新定義較小的字號(hào)。如果依次對(duì)這些單元格中的字號(hào)調(diào)整的話,工作量將會(huì)變得很大。其實(shí),您可以采用下面的方法來(lái)減輕字號(hào)調(diào)整的工作量:首先新建或打開(kāi)一個(gè)工作簿,并選中需要ExcelXP根據(jù)單元格的寬度調(diào)整字號(hào)的單元格區(qū)域;其次單擊用鼠標(biāo)依次單擊菜單欄中的“格式”/“單元格”/“對(duì)齊”標(biāo)簽,在“文本控制”下選中“縮小字體填充”復(fù)選框,并單擊“確定”按鈕;此后,當(dāng)你在這些單元格中輸入數(shù)據(jù)時(shí),如果輸入的數(shù)據(jù)長(zhǎng)度超過(guò)了單元格的寬度,ExcelXP能夠自動(dòng)縮小字符的大小把數(shù)據(jù)調(diào)整到與列寬一致,以使數(shù)據(jù)全部顯示在單元格中。如果你對(duì)這些單元格的列寬進(jìn)行了更改,則字符可自動(dòng)增大或縮小字號(hào),以適應(yīng)新的單元格列寬,但是對(duì)這些單元格原設(shè)置的字體字號(hào)大小則保持不變。7、快速輸入多個(gè)重復(fù)數(shù)據(jù)在使用ExcelXP工作表的過(guò)程中,我們經(jīng)常要輸入大量重復(fù)的數(shù)據(jù),如果依次輸入,無(wú)疑工作量是巨大的?,F(xiàn)在我們可以借助ExcelXP的“宏”功能,來(lái)記錄首次輸入需要重復(fù)輸入的數(shù)據(jù)的命令和過(guò)程,然后將這些命令和過(guò)程賦值到一個(gè)組合鍵或工具欄的按鈕上,當(dāng)按下組合鍵時(shí),計(jì)算機(jī)就會(huì)重復(fù)所記錄的操作。使用宏功能時(shí),我們可以按照以下步驟進(jìn)行操作:首先打開(kāi)工作表,在工作表中選中要進(jìn)行操作的單元格;接著再用鼠標(biāo)單擊菜單欄中的“工具”菜單項(xiàng),并從彈出的下拉菜單中選擇“宏”子菜單項(xiàng),并從隨后彈出的下級(jí)菜單中選擇“錄制新宏”命令;設(shè)定好宏后,我們就可以對(duì)指定的單元格,進(jìn)行各種操作,程序?qū)⒆詣?dòng)對(duì)所進(jìn)行的各方面操作記錄復(fù)制。8、快速處理多個(gè)工作表有時(shí)我們需要在ExcelXP中打開(kāi)多個(gè)工作表來(lái)進(jìn)行編輯,但無(wú)論打開(kāi)多少工作表,在某一時(shí)刻我們只能對(duì)一個(gè)工作表進(jìn)行編輯,編輯好了以后再依次編輯下一個(gè)工作表,如果真是這樣操作的話,我們倒沒(méi)有這個(gè)必要同時(shí)打開(kāi)多個(gè)工作表了,因?yàn)槲覀兺瑫r(shí)打開(kāi)多個(gè)工作表的目的就是要減輕處理多個(gè)工作表的工作量的,那么我們?cè)撊绾螌?shí)現(xiàn)這樣的操作呢?您可采用以下方法:首先按住“Shift"鍵或“Ctrl"鍵并配以鼠標(biāo)操作,在工作簿底部選擇多個(gè)彼此相鄰或不相鄰的工作表標(biāo)簽,然后就可以對(duì)其實(shí)行多方面的批量處理;接著在選中的工作表標(biāo)簽上按右鍵彈出快捷菜單,進(jìn)行插入和刪除多個(gè)工作表的操作;然后在“文件”菜單中選擇“頁(yè)面設(shè)置……”,將選中的多個(gè)工作表設(shè)成相同的頁(yè)面模式;再通過(guò)“編輯”菜單中的有關(guān)選項(xiàng),在多個(gè)工作表范圍內(nèi)進(jìn)行查找、替換、定位操作;通過(guò)“格式”菜單中的有關(guān)選項(xiàng),將選中的多個(gè)工作表的行、列、單元格設(shè)成相同的樣式以及進(jìn)行一次性全部隱藏操作;接著在“工具”菜單中選擇“選項(xiàng)……”,在彈出的菜單中選擇“視窗”和“編輯”按鈕,將選中的工作表設(shè)成相同的視窗樣式和單元格編輯屬性;最后選中上述工作表集合中任何一個(gè)工作表,并在其上完成我們所需要的表格,則其它工作表在相同的位置也同時(shí)生成了格式完全相同的表格。高效辦公Excel排序方法"集中營(yíng)"排序是數(shù)據(jù)處理中的經(jīng)常性工作,Excel排序有序數(shù)計(jì)算(類似成績(jī)統(tǒng)計(jì)中的名次)和數(shù)據(jù)重排兩類。本文以幾個(gè)車間的產(chǎn)值和名稱為例,介紹Excel2000/XP的數(shù)據(jù)排序方法。一、數(shù)值排序1.RANK函數(shù)RANK函數(shù)是Excel計(jì)算序數(shù)的主要工具,它的語(yǔ)法為:RANK(number,ref,order),其中number為參與計(jì)算的數(shù)字或含有數(shù)字的單元格,ref是對(duì)參與計(jì)算的數(shù)字單元格區(qū)域的絕對(duì)引用,order是用來(lái)說(shuō)明排序方式的數(shù)字(如果order為零或省略,則以降序方式給出結(jié)果,反之按升序方式)。例如圖1中E2、E3、E4單元格存放一季度的總產(chǎn)值,計(jì)算各車間產(chǎn)值排名的方法是:在F2單元格內(nèi)輸入公式“=RANK(E2,$E$2:$E$4)”,敲回車即可計(jì)算出鑄造車間的產(chǎn)值排名是2。再將F2中的公式復(fù)制到剪貼板,選中F3、F4單元格按Ctrl+V,就能計(jì)算出其余兩個(gè)車間的產(chǎn)值排名為3和1。如果B1單元格中輸入的公式為“=RANK(E2,$E$2:$E$4,1)”,則計(jì)算出的序數(shù)按升序方式排列,即2、1和3。需要注意的是:相同數(shù)值用RANK函數(shù)計(jì)算得到的序數(shù)(名次)相同,但會(huì)導(dǎo)致后續(xù)數(shù)字的序數(shù)空缺。假如上例中F2單元格存放的數(shù)值與F3相同,則按本法計(jì)算出的排名分別是3、3和1(降序時(shí))。2.COUNTIF函數(shù)COUNTIF函數(shù)可以統(tǒng)計(jì)某一區(qū)域中符合條件的單元格數(shù)目,它的語(yǔ)法為COUNTIF(range,criteria)。其中range為參與統(tǒng)計(jì)的單元格區(qū)域,criteria是以數(shù)字、表達(dá)式或文本形式定義的條件。其中數(shù)字可以直接寫入,表達(dá)式和文本必須加引號(hào)。仍以圖1為例,F(xiàn)2單元格內(nèi)輸入的公式為“=COUNTIF($E$2:$E$4,">"&E2)+1”。計(jì)算各車間產(chǎn)值排名的方法同上,結(jié)果也完全相同,2、1和3。此公式的計(jì)算過(guò)程是這樣的:首先根

溫馨提示

  • 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)論