最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

unity 2D游戲開(kāi)發(fā)教程2:(常用的3種單例模式深度解析)

2023-06-07 21:22 作者:zhouhongjoe  | 我要投稿


教案如下:

課程知識(shí)點(diǎn): ??

1:普通單例模式

一個(gè)Scenes里面類似GUIManager(UI管理類),InputManager(按鍵管理類)只會(huì)有一個(gè),創(chuàng)建后會(huì)被經(jīng)常在別的代碼里面被使用,所以這類對(duì)象經(jīng)常是會(huì)用單例模式來(lái)封裝后,方便我們隨時(shí)拿到對(duì)象來(lái)隨時(shí)使用。

下面是2種使用方式,我們先來(lái)寫下普通單例模式代碼。

?? --用法1:在畫面中不創(chuàng)建單例對(duì)象GameObject,用到的時(shí)候在自動(dòng)創(chuàng)建單例對(duì)象,執(zhí)行方法

?? --用法2:在畫面中提前創(chuàng)建單例對(duì)象GameObject,用到時(shí)候拿到這個(gè)單例對(duì)象執(zhí)行方法

?

2:持久化單例模式(項(xiàng)目最先創(chuàng)建的對(duì)象永久使用)

?? 普通的單例模式有缺點(diǎn)

?? --缺點(diǎn)1(這個(gè)缺點(diǎn)并不重要):從Scene1 跳轉(zhuǎn)到 Scene2的時(shí)候,Scene1里面的單例對(duì)象會(huì)被銷毀,Scenes2里面會(huì)被創(chuàng)建,浪費(fèi)性能。

?? ??解決上面問(wèn)題需要利用Unity的DontDestroyOnLoad(GameObject)方法,讓指定對(duì)象在頁(yè)面切換時(shí)候不要摧毀,我們來(lái)寫下這個(gè)模式的單例類,然后做個(gè)新的場(chǎng)景來(lái)演示一下

?? --缺點(diǎn)2(主要缺點(diǎn)):我們?cè)陂_(kāi)發(fā)項(xiàng)目的時(shí)候會(huì)創(chuàng)建很多Scene,最明顯的例子就是GameManager。 每個(gè)關(guān)卡畫面都是要用到這個(gè)Manager。但是對(duì)于游戲來(lái)說(shuō),GameManager是所有畫面都要統(tǒng)一用一個(gè)的,而不是一個(gè)Scene一個(gè),不然會(huì)出現(xiàn)問(wèn)題(例如Level1開(kāi)發(fā)時(shí)候GameManager里面生命值我用3在測(cè)試開(kāi)發(fā),Level2開(kāi)發(fā)時(shí)候GameManager里面生命值我用2在測(cè)試開(kāi)發(fā),當(dāng)Level1跳轉(zhuǎn)到Level2的時(shí)候如果不寫代碼特殊處理,會(huì)導(dǎo)致生命值莫名奇妙減少了)

??? 我們來(lái)寫一下這個(gè)單例類

??? 解決這個(gè)問(wèn)題的情況的話,就需要用到我們的,持久化單例模式(項(xiàng)目從頭到尾都用保持用這一個(gè)單例對(duì)象)

?

?

3:持久化單例模式(項(xiàng)目最新創(chuàng)建的對(duì)象保留)

?? ?和上面持久化單例模式(項(xiàng)目最先創(chuàng)建的對(duì)象永久使用)對(duì)比,

相同點(diǎn):Scene跳轉(zhuǎn)不會(huì)刪除

不同點(diǎn):但是當(dāng)Scene1 跳轉(zhuǎn)到 Scene2的時(shí)候,Scene2有相同類的單例對(duì)象時(shí)候,會(huì)用Scene2的這個(gè)對(duì)象替換到Scene1帶過(guò)來(lái)的對(duì)象,和上面的類型正好相反

我們來(lái)寫一下這個(gè)單例類,

?? ?使用場(chǎng)景:項(xiàng)目中的每個(gè)畫面會(huì)有 BackgroundMusic 來(lái)播放背景音樂(lè),你每個(gè)場(chǎng)景可以設(shè)置新的音樂(lè)。BackgroundMusic使用這個(gè)模式的單例在配合Start()方法【對(duì)象創(chuàng)建第一次的時(shí)候調(diào)用的特性】就可以實(shí)現(xiàn)切換場(chǎng)景背景音樂(lè)不中斷的效果,等有新的背景音樂(lè)在替換播放新的背景音樂(lè),代碼舉例子



unity 2D游戲開(kāi)發(fā)教程2:(常用的3種單例模式深度解析)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
永靖县| 玉田县| 昌黎县| 安仁县| 隆昌县| 乳山市| 织金县| 瓮安县| 紫阳县| 察雅县| 林芝县| 奇台县| 垣曲县| 中西区| 锡林郭勒盟| 武定县| 汾阳市| 建瓯市| 利川市| 温州市| 大城县| 长葛市| 沈阳市| 宁乡县| 南通市| 五峰| 嘉兴市| 于田县| 吉林省| 盐城市| 昌吉市| 南皮县| 连山| 化德县| 中西区| 松桃| 安平县| 呼伦贝尔市| 右玉县| 肃南| 镇康县|