Unity場景轉(zhuǎn)換——麥?zhǔn)濉睹允u2》游戲框架

——水平有限,僅個(gè)人記錄,出現(xiàn)錯(cuò)誤也難免
場景層級(jí)
這種場景處理方式我感覺可以用在很多項(xiàng)目中,本文主要還是記錄這種優(yōu)秀的場景處理方法
Persistent:主場景:
控制類腳本存放位置(需要持久化出現(xiàn)在場景,不會(huì)因?yàn)閳鼍扒袚Q造成丟失(雖然可以DontDestroyOnLoad,但是一個(gè)不方便,不便拓展;一個(gè)是不能保證加載順序正確(個(gè)人理解))包括像Canvas下的panel的切換,TransintionManager,CurSorManager檢測特定tag的碰撞體(當(dāng)然也不限于此功能,包括切換鼠標(biāo)sprite等)都可以放在主場景中。
H1、H2場景間切換


注意點(diǎn)
導(dǎo)入MTool.dll:防止用string類出現(xiàn)在場景中未設(shè)置或設(shè)置錯(cuò)誤的情況
注意加入CanvasgGroup的時(shí)候,當(dāng)alpha為0時(shí)設(shè)置Block Raycasts為false(代碼實(shí)現(xiàn)),防止遮擋鼠標(biāo)點(diǎn)擊
先將腳本TransintionManager掛載,然后修改為單例模式

UnityEngine.dll里的Singleton<T>
當(dāng)腳本實(shí)例被加載時(shí)會(huì)調(diào)用Awake函數(shù);Awake函數(shù)在所有的游戲?qū)ο蟊怀跏蓟戤呏蟛艜?huì)被調(diào)用;在腳本實(shí)例的整個(gè)生命周期中,Awake函數(shù)僅執(zhí)行一次。Awake函數(shù)的執(zhí)行與否與腳本實(shí)例的狀態(tài)(啟用或禁用)并沒有關(guān)系,而是與腳本實(shí)例所綁定的游戲?qū)ο蟮臓顟B(tài)有關(guān)。
TransintionManager繼承Unity自帶的Singleton<TransitionManage>要是不先掛在對(duì)象上,也不會(huì)自動(dòng)生成實(shí)例
自己寫單例模板:(可自動(dòng)生成,無需掛載)
注釋掉需要實(shí)例化的字段和代碼部分:也能運(yùn)行實(shí)現(xiàn)場景切換但是暫時(shí)覺得這種實(shí)現(xiàn)拓展性太差

代碼展示
具體代碼解釋參考原視頻,我也只是稍微總結(jié)了一下。原視頻鏈接:
【《迷失島2》游戲框架開發(fā)01:實(shí)現(xiàn)場景轉(zhuǎn)換|Unity教程】 https://www.bilibili.com/video/BV19a411i7Tw/?share_source=copy_web&vd_source=1a4aca8365c4306cd29bfe65b5aa448a

CurSorManager鼠標(biāo)點(diǎn)擊管理
?TransitionManager類
Teleport 類

這個(gè)需要掛載在每個(gè)場景里,注意Tag設(shè)置