999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Unity3D在基本游戲框架下客戶端研究與實現

2015-09-27 02:33:53梁成
現代計算機 2015年25期
關鍵詞:動畫游戲管理

梁成

(西華大學計算機與軟件工程學院,成都 610039)

基于Unity3D在基本游戲框架下客戶端研究與實現

梁成

(西華大學計算機與軟件工程學院,成都610039)

0 引言

隨著信息技術的不斷發展,人們對于娛樂項目的要求越來越挑剔。在計算機硬件技術快速發展下,游戲作為一種新興娛樂行業,正經歷著蓬勃發展,在良好的人機交互下給玩家帶來的越來越愉悅的體驗。同時游戲也在商業,教育等領域日益影響著人們的社會生活。圖1所示數據為網易游戲數據控對近年來游戲在商業上的表現進行的統計。

圖1 中國大陸游戲市場總量和增長率

從大多數游戲研發來看,大體上要經歷以下三個階段,其階段如圖2所示。

在游戲策劃階段,擁有新穎的游戲想法決定是否在市場可以占有一席之地。

在游戲制作階段,良好的人機交互和有趣的玩法是增加玩家數的法寶。

最后一個階段是投放市場,宣傳是關鍵。

圖2 一款游戲經歷的過程

目前,國內外針對Unity3D引擎在游戲開發中的技術進行不同程度的研究,2012年王樹斌[1]簡單介紹了Unity開發游戲流程和技術,2014年張敏[2]通過Unity實現了一個保齡球游戲,并沒有對腳本進行有效的組織和管理。本文主要探討的是游戲制作階段,通過學習Unity游戲引擎的基礎上,在基本游戲框架模型和腳本通用管理方式下,實現了一個游戲客戶端。

1 Unity介紹

Unity是由Unity Technologies開發的一個讓玩家輕松創建諸如三維視頻游戲、建筑可視化、實時三維動畫等類型互動內容的多平臺的綜合型游戲開發工具,是一個全面整合的專業游戲引擎。圖3所示為Unity3D平臺的界面。

圖3 Unity3D平臺界面

Unity3D一款跨多平臺的游戲引擎,目前最新版本的Unity已經支持包括Android、iOS、Samsung TV等在內的14個平臺。除了多平臺以及簡潔便用的界面特性之外,Unity3D還自帶了豐富的資源,如CharacterController、地形系統、屬性查看器、材質編輯器、天空盒,以及常用的腳本等。而在素材方面,Unity3D還內置了一個Asset Store,在這里面可以找到需要的一些模型、紋理圖等。正是由于其這些強大的功能,國內排名前20的游戲公司都把Unity作為他們的游戲開發引擎[3]。圖4所示為Unity3D所支持的平臺。

圖4 Unity3D支持平臺

2 基本游戲框架及通用管理方式

基本游戲框架類似于一種簡單MVC(Model View Controller,模型-視圖-控制器)。按照MVC業務劃分:Model(模型)在應用程序中主要用于處理數據邏輯,通常情況下模型對象負責的任務就是在數據庫中進行數據的存取。View(視圖)是應用程序中處理數據的顯示。Controller(控制器)主要用于處理用戶交互的部分。基本游戲框架繼承了MVC中主要的分層,便于整個游戲的層次劃分,提高開發效率,其框架如圖5所示。

圖5 基本游戲框架

服務器:主要用于用戶之間數據交互和用戶的數據存儲。編寫服務器是一項很艱巨,很費時的任務,一般的大公司都建立自己的服務器。那對于我們這些獨立開發者來說,BaaS(Backend as a Service)便是不錯的選擇,其專為移動應用開發者提供整合云后端的服務。目前市場較為流行的BaaS有LeanCloud、Bmob、Amazon EC2等,這些云端服務器一般都提供了限免費訪問量以及便捷易懂的API。移動應用后端云服務的好處是幫助開發者簡化工作,程序員們只需一心一意做產品,而不需要過多考慮后端的服務器程序。做移動開發將會變得更輕松、更容易。

Network層:主要用于客戶端與服務器的數據交換,把用于的請求提交給服務器,再把服務器還回來的數據提交客戶端。最新版本Unity3D自帶的Network組件以及Asset Store里面的TNet組件均可以勝任。

Server層:主要用于存儲整個游戲的數據,負責與服務器交換數據。

Game層:主要為UI層提供需要的數據。

UI層:主要功能是直接對用戶展示,這個層就是我們用戶能看到的一些數據及界面。

GameThread:主要職責是用于修改及操作Game層和Server層的數據。

在Unity中,大多數動作都是可以通過添加Unity自身攜帶的組件來完成的,例如碰撞檢測、天空盒、粒子特效等。但是對于組件之間的關聯、通信,以及帶有極強邏輯性的動作,簡單的添加組件是無法達到預期的目標的。例如在游戲動畫狀態的切換時,可以通過設置其過渡參數來控制,從而控制玩家什么時候該跑,什么狀態下進行走,但是這些控制條件也必須通過腳本來實現。Unity為解決這些問題,讓開發者集中在游戲邏輯上面,提供一套比較完整的腳本系統及相應的API,通過這些API我們可以更好地去操作和組織我們的游戲邏輯。有了功能之后,需要考慮的是如何去高效、方便、易理解地去管理和組織我們的腳本。

“Manager of Manager”方式是指將同類型的行為或者操作組織起來統一管理,其也符合Unity中層級思想和面向對象的編程思想。例如我們想管理整個游戲的音樂音效的時候,我們可以建立AudioManager腳本。通過AudioManager來管理場景內的背景音樂管理器(BackgroundMusicManager)和背景音效管理器(BackgroundAudioEffectManager),然后我們在需要播放音樂音效的地方去調用這些腳本里面的方法即可,這樣管理更加有效,更加讓人理解。

3 客戶端的實現

為了更好說明這兩種思想,我們實現一個類似于跑酷游戲的客戶端,下面我們采用模塊化進行說明。在整個游戲里面,我們將其分成四個功能模塊,它們分別實現不同的功能,在大多數的游戲公司也是采用模塊化來分工完成的。其模塊如圖6所示。

圖6 模塊

我們都知道音樂會給人一種舒適感,引起人們的興趣。在游戲中背景音樂音效是必不可少的,一方面可以增加游戲可玩性,給用戶有種持續玩的興趣。另一方面增加游戲真實感,以達到玩家和游戲場景人物的融合。目前Unity支持許多格式的音樂音效,開發者可以根據場景所需要的添加對應的音樂音效[4]。在添加之前,我們需要添加兩個組件,一個類似于人的耳朵——AudioListener,另外一個就是類似于人的嘴巴——AudioSource,其中AudioSource用于添加音頻片段。這里我們為了方便管理,建立了一個AudioManager,用于管理整個游戲中的音樂音效,只要在需要的地方進行調用相應的函數即可。最新版的Unity改善之前音頻系統,新增加了AudioMixer(音頻混合器),其整合所有的音頻片段,讓玩家聽到AudioMixer整合出來的音頻片段。

可以想象在游戲中如果缺少動畫,我們玩家扮演的角色將處于靜止,周圍的AINPC也將處于靜止,這樣的情況對于FPS、RPG等游戲類型是多么可怕的景象,所以說動畫系統是整個游戲的靈魂也不為過。在Unity中提供了一整套動畫系統,我們可以利用其進行動畫制作,也可以從外部軟件導入動畫,通過新版本的Unity中AnimatorController進行動畫狀態之間的控制。在大多數3D游戲角色都帶有若干種動畫狀態,例如本文設計的游戲中的角色,包含跳、左右轉、下蹲以及死亡在內的五種動畫,這些動畫狀態之間的切換是通過Unity動畫系統中的狀態機進行控制的,在操作的時候需要設置觸發參數,Unity為我們提供了Float、Int、Bool以及Trigger四種參數,利用這些參數我們可以輕松地去實現各個狀態的融合,使動作看起來更加的逼真、協調[5-6]。

游戲雖然有屬于自己的獨特邏輯,但是這些邏輯也必須符合物理世界的規律。在游戲中不能出現角色穿墻而過,踏地而落的情況,那碰撞檢測在游戲中起到關鍵性作用了。通過碰撞檢測可以使我們的游戲效果更加的逼真。Unity提供Rigidbody、CharacterControlloer、Collider以及Trigger在內物理碰撞器和觸發器,其實質就是一些包圍盒算法[7],這些都需要綁定到主角或者相應的物體上,以便發生碰撞的時候檢測到。本文通過碰撞檢測來實現主角的物品拾取,判斷是否和周圍的障礙發生碰撞,然后決定其生死。

內存管理是每個開發者必須考慮的,內存使用率過高導致游戲本身運行變慢,出現卡頓現象,那帶來的后果就是給用戶體驗差,導致游戲生命周期變短。Unity提供了很多內存管理方式,以便對對象的動態加載以及和動態回收,方便有效地利用內存。本文介紹兩種資源管理,AssetBuddle打包及對象池,本文使用后者。

AssetBuddle是專門為Unity Pro付費提供的功能,它可以將游戲場景中的對象或者資源文件轉化為二進制封裝在AssetBuddle中,以便動態的加載。雖然這種辦法很強勁,但對于沒有個人預算的開發者并不建議,原因是其會產生一定的成本。這里我們推薦一種比較好的內存管理——對象池。圖7所示為對象池的結構。

圖7 對象池

對象池指的是在激活對象時,它從池中提取。在停用對象時,它放回池中,等待下一個請求。在C#中建立對象池實質就是集合的混用,集合可以用于動態增加或者減少,這樣就方便對象池中的對象的獲取和放入。在Unity創建對象池腳本之后,需要實例化。實例化有很多種辦法,這里推薦兩種辦法。其一是創建一個Prefab,然后在需要的地方進行實例化。Prefab好處就是當我需要修改一類游戲物體屬性時,我們不必一一的去操作,只需要去修改這類物體的Prefab即可,然后Apply一下即可應用到所有這類物體上,其大大方便了開發者。再則就是到Resources文件下進行加載,Unity為開發者提供了很多命名文件,開發者只需要將游戲物體或者資源放入這些文件中,然后調用API即可使用。本文實現的功能使用是第一種,通過提前創建需要的Prefab,然后再在場景中進行實例化。

4 實驗結果與分析

本文通過對現有游戲開發常見的框架和腳本管理的研究,實現了一個簡單的游戲客戶端,所需要的開發環境為Unity3D和其自帶編譯器MonoDevelop。

圖8(a)顯示的本客戶端使用的動畫狀態機,通過不同操作改變參數從而實現各個狀態的之間的狀態切換。圖8(b)所示是對腳本的管理。圖8(c)所示是通過碰撞檢測對玩家和金幣或者墻壁碰撞進行檢測,當主角碰到金幣之后,金幣自動回收,然后設置錢Active為false。當主角碰到墻壁時,觸發狀態機切換狀態為死亡狀態。

圖8 效果圖

5 結語

本文通過學習Unity3D游戲引擎各個組件的基礎上,通過對目前游戲開發框架和腳本管理方式的研究,實現了一個簡單的游戲客戶端開發。實現了游戲主角的動畫狀態切換、物品拾取,以及音頻音效的管理等功能,一方面體現出Unity3D游戲開發平臺的強大性,另一方面體現使用合理的管理方式對游戲開發的重要性。本文游戲還可以進一步進行擴展功能,例如登錄注冊,金幣積分累計等功能,在資源材質方面還可以進步通過Shader來進一步美化。

[1]王樹斌.淺析Unity3D開發游戲流程及常用技術[J].電腦知識與技術,2012.

[2]張敏.基于Unit 3D的游戲的設計與實現[J].計算機光盤軟件與應用,2014.

[3]趙海峰.基于Unity3D的游戲開發與設計[D].山東:山東科技大學,2014.

[4]楊娜,李杰,廖金巧.基于Unity3D的三維生態莊園游戲設計與實現[J].現代計算機,2015.

[5]宣雨松.Unity3D游戲開發[M].北京:Unity3D游戲開發,2012.

[6]路朝龍.Unity權威指南[M].北京:中國青年出版社,2014.5.

[7]林巧民,林萍,王汝芬.3D游戲開發中的碰撞檢測算法研究[J].計算機技術與發展,2010.

Game Development;Basic Framework;General Management Mode;Client

Research and Development of Client in the Framework of the Basic Game Based on Unity3D

LIANG Cheng
(School of Computer and Software Engineering,Xihua University,Chengdu 610039)

1007-1423(2015)25-0078-05

10.3969/j.issn.1007-1423.2015.25.020

梁成(1989-),男,重慶開縣人,在讀研究生,研究方向為游戲理論與虛擬現實

2015-07-09

2015-08-20

對于大多數人來說游戲開發是一項很神秘的工作,為了揭開這層神秘的面紗,通過研究現有游戲開發,總結游戲開發中的基本游戲框架和腳本通用管理方式。利用Unity3D平臺,在基本游戲框架和通用管理方式下實現游戲客戶端的設計與開發,從而讓更多的游戲愛好者了解游戲的開發過程。

游戲開發;基本框架;通用管理方式;客戶端

For most people,game development is a very mysterious work,in order to uncover the layer of mystery,studies the existing game development,summaries the basic game framework and scripting common management.Uses Unity3D platform,under the basic game framework and common management approach to achieve the client's game design and development,so that more game enthusiasts can understand the game development process.

猜你喜歡
動畫游戲管理
棗前期管理再好,后期管不好,前功盡棄
今日農業(2022年15期)2022-09-20 06:56:20
做個動畫給你看
動畫發展史
我的動畫夢
文苑(2019年22期)2019-12-07 05:28:56
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
我是動畫迷
學生天地(2016年9期)2016-05-17 05:45:06
“這下管理創新了!等7則
雜文月刊(2016年1期)2016-02-11 10:35:51
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
主站蜘蛛池模板: 精品一区二区久久久久网站| 国产玖玖视频| AV无码无在线观看免费| 老司机久久99久久精品播放| 白浆视频在线观看| 中国成人在线视频| 国产十八禁在线观看免费| 午夜影院a级片| 免费女人18毛片a级毛片视频| 波多野结衣亚洲一区| 久久精品电影| 国产小视频a在线观看| 成年A级毛片| 99国产精品国产高清一区二区| 呦女精品网站| 国产麻豆精品在线观看| 一级片免费网站| 国产黄视频网站| 国产精品免费露脸视频| 欧美亚洲另类在线观看| 99热国产在线精品99| 国产亚洲一区二区三区在线| 国产中文在线亚洲精品官网| 亚洲VA中文字幕| 最新精品久久精品| 2018日日摸夜夜添狠狠躁| 97久久精品人人| 日本高清免费不卡视频| 欧美精品在线视频观看| 欧美日本在线播放| 91在线一9|永久视频在线| 一级做a爰片久久免费| 在线观看国产精美视频| 国产超碰一区二区三区| 在线观看欧美国产| 白浆视频在线观看| 91精品专区| 亚洲无码免费黄色网址| 99无码中文字幕视频| 国产亚洲精品自在线| 一边摸一边做爽的视频17国产| 日本在线欧美在线| 91精品视频网站| 国产白浆一区二区三区视频在线| 日韩精品免费在线视频| 波多野结衣亚洲一区| 蜜臀AVWWW国产天堂| 午夜啪啪网| 日韩色图在线观看| 美臀人妻中出中文字幕在线| 亚洲中文字幕国产av| 国产成人亚洲综合A∨在线播放| 国产在线观看精品| 五月天香蕉视频国产亚| 五月天天天色| 国产日韩精品欧美一区喷| 久久综合亚洲色一区二区三区 | 久久午夜夜伦鲁鲁片不卡| 亚洲AV一二三区无码AV蜜桃| 天天干天天色综合网| 午夜福利网址| 亚洲精品无码人妻无码| 久久精品66| 又污又黄又无遮挡网站| 爱做久久久久久| 91视频首页| 色妞www精品视频一级下载| 欧美日韩一区二区在线免费观看| 99视频国产精品| 亚洲精品国产综合99| 青青操国产| 日韩国产高清无码| av天堂最新版在线| 在线亚洲精品自拍| 久久公开视频| 三级毛片在线播放| 秋霞一区二区三区| 亚洲国产天堂在线观看| 中国黄色一级视频| 成人午夜视频网站| 亚洲天堂区| 一本大道无码日韩精品影视|