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

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

學(xué)習(xí)《GmaeFramework框架——FlappyBird》記錄

2023-08-17 21:48 作者:臨逸LY  | 我要投稿

學(xué)習(xí)了自然妙有貓仙人(http://t.csdn.cn/DkLst)的FlappyBird基于GmaeFramework(https://github.com/EllanJiang/GameFramework)的教程受益很大。 現(xiàn)記錄一下學(xué)習(xí)過程中的思考。避免以后自己忘記了,后續(xù)再拿出來看看。其實寫的這些問題都是花了我很多時間的總結(jié)。(CSDN地址:http://t.csdn.cn/WiyPS)

我根據(jù)教程自己學(xué)著做了一個FlappyBird,新添加了一個暫停按鈕。
GitHub項目地址:https://github.com/LinYi6/GameFramework-My_FlappyBird


一、關(guān)于流程的一些記錄

GmaeFramework主要還是基于流程的,不同場景是對流程的切換,然后在流程里面實現(xiàn)功能。比如點擊開始游戲時從ProcedureMenu切換到ProcedureMain流程,游戲結(jié)束選擇返回主菜單時又從ProcedureMain切換到ProcedureMenu。這里有一點要注意,在出現(xiàn)游戲結(jié)束界面時,游戲還在ProcedureMain流程里,并沒有切換流程,我們可以看到游戲界面的背景和管道還在生成和運動。


所以當(dāng)小鳥死亡時,積分界面腳本收到小鳥死亡事件,然后它打開了游戲結(jié)束界面,此時積分界面的腳本會執(zhí)行OnPause(),會清除當(dāng)前積分,并更改顯示文本,同時OnPause()利用gameObject.SetActive(false);隱藏積分界面。


當(dāng)游戲結(jié)束界面選擇重新開始時,積分界面默認執(zhí)行OnResume(),利用gameObject.SetActive(true);顯示積分界面,ProcedureMain一直在執(zhí)行OnUpdate()里的東西。


當(dāng)在游戲結(jié)束界面選擇返回主菜單時ProcedureMain流程執(zhí)行了OnLeave(),把積分界面UI關(guān)閉了,切換至ProcedureMenu流程。


以上幾點值得注意。如果不清楚可以自己在疑惑的地方打Debug.Log(),看看輸出信息就知道其中執(zhí)行順序了。一開始可能感覺比較亂。


二、關(guān)于一些函數(shù)的提醒

在流程rocedureBase基類里有OnEnter()、OnInit()、OnOpen()、OnLeave()、OnUpdate()、OnDestroy()函數(shù)

在UIFormLogic基類里有 OnOpen()、 OnUpdate()、OnShow()、OnPause()、OnResume()、OnClose()函數(shù)

在EntityLogic基類里有OnHide()、OnUpdate()、OnHide()、OnShow()函數(shù)

這些函數(shù)得看看源代碼,里面有解釋,感覺會混淆,多用用,多體會體會


三、slider動態(tài)value值問題

slider這個滑條UI感覺比較坑。寫的函數(shù)需要用到value值時,我們在按鈕或滑條類想調(diào)用函數(shù)名時要先把腳本掛載到物體上,然后在UI的OnClick或OnValueChange處選擇掛載了腳本的物體,這樣就可以選擇函數(shù)名了。但是sliderUI需要注意,我們?nèi)绻胍@得滑動改變的value值并動態(tài)傳遞給函數(shù)里的value參數(shù)時,需要在sliderUI界面選擇dynamic 值的函數(shù)名。否則value傳參一直是固定的0,除非我們手動改。


例如:

比如下面這幾行代碼,我們想讓上面slider滑動時的值動態(tài)的傳遞給OnMusicButtonChange函數(shù)的value變量。

我們得先讓把上面代碼腳本掛載到SettingForm這個預(yù)制體上。然后在slider界面“值改變時”選擇這個預(yù)制體。

這樣我們就可以選擇這個OnMusicButtonChange函數(shù)了,但是一定要記得選上面的Dynamic float,不能選擇下面的Static Parameters,不然value值傳遞不到給OnMusicButtonChange,就是一個定值了!

四、圖層數(shù)值大小提醒

圖層的順序很重要,值越大,越靠前,大值圖層會覆蓋小值圖層。如果生成某個精靈看不到,有可能是圖層被覆蓋了,需要把它的圖層值改大一點。


五、背景音樂記錄

關(guān)于播放背景音樂這個事,是根據(jù)我們在Assets/GameMain/DataTables/配置的兩個數(shù)據(jù)表(Musicte.txt、Scene.txt)來的。我們發(fā)現(xiàn)他們對應(yīng)的編號和名稱都是保持一致的。因為方便下面切換流程代碼對編號的獲取來播放背景音樂。

Music.txt如下

Scene.txt如下

下面是\Assets\GameMain\Scripts\Procedure\Builtin\ProcedureChangeScene.cs里的代碼,我們主要看 m_BackgroundMusicId = drScene.BackgroundMusicId;這一句代碼,他表示通過場景來獲得背景音樂編號。


然后通過GameEntry.Sound.PlayMusic(m_BackgroundMusicId);來播放對應(yīng)場景的對應(yīng)背景音樂的。

這樣我們就可以根據(jù)Music.txt和Scene.txt來放置不同場景下的音樂??蚣艹绦蜃詣訋臀覀儾シ帕?。如果不想播放可以查看音樂控制腳本:\Assets\GameMain\Scripts\Sound\SoundExtension.cs,里面有很多關(guān)于背景音樂的操作。

更多音樂音效的操作函數(shù),可以看Assets\GameFramework\Scripts\Runtime\Sound\SoundComponent.cs


六、在打包AB資源時出現(xiàn)的問題

在打包過程中,首先在AssetBundle Editor里左側(cè)AssetBundle List(0)下方選擇Add手動添加資源文件名。如果是有父級目錄的,需要用“/”來添加,比如UI/UIForms,這樣就會得到下面這個效果,同時要在UIForms前打勾再選擇Packed。

下圖給UIForms選擇了Packed。

其他同理直接點Add,輸入右側(cè)對應(yīng)的包名就行了。我們可以看到,左右兩側(cè)的List名稱是一樣的。添加好后再給左側(cè)每個包添加資源。選擇名稱一樣的,然后選擇“<<”箭頭就可以把右側(cè)的加到左側(cè)了。

添加完了直接Save就行,它會在Configs目錄下生成AssetBundleCollection.xml這個文件。

還有個問題就是我遇到了,就是在AssetBundle Builder界面,我的電腦屏幕顯示界面不全,就像下面這樣。

解決方法是在\Assets\GameFramework\Scripts\Editor\AssetBundleBuilder\AssetBundleBuilder.cs,這個腳本第28行window.minSize = window.maxSize = new Vector2(666f, 570f);,直接修改new Vector2(666f, 700f)第二個參數(shù)就行。修改數(shù)值按自己電腦顯示為主,看得見就行 。下面是效果圖

終于可以了,設(shè)置好了上面的信息后,點擊Save,會生成AssetBundleBuilder.xml,然后我們點擊Start Build AssetBundles 慢慢等待就行了。生成完成后我們在StreamingAssets目錄會自動添加剛剛生成的AB包資源,StreamingAssets這是單機狀態(tài)下的資源目錄。

更改物體BuildIn下的編輯器資源模式的勾,運行成功就是成功打包了!

以上先記錄這么多,其他后續(xù)再補充。


學(xué)習(xí)《GmaeFramework框架——FlappyBird》記錄的評論 (共 條)

分享到微博請遵守國家法律
舞阳县| 林州市| 克东县| 罗江县| 托克托县| 日土县| 同德县| 麦盖提县| 江口县| 高要市| 宝山区| 泰和县| 延津县| 永吉县| 宝应县| 太湖县| 南丰县| 广东省| 垣曲县| 红桥区| 漾濞| 象州县| 吉水县| 潮安县| 抚松县| 孝义市| 迁西县| 湾仔区| 高邑县| 房山区| 中江县| 富蕴县| 唐海县| 余江县| 镇远县| 射洪县| 无极县| 屏东市| 江安县| 南江县| 平南县|