五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

RPGMakerMV探秘09-菜單場景

2020-11-09 23:45 作者:狂奔小菜雞  | 我要投稿

????????今天開新坑,熟悉一下菜單場景,菜單場景就是我們進入游戲后,右鍵(取消鍵)或雙指觸摸彈出的場景,RPGMakerMV原始的菜單場景如下:

原始菜單

????????菜單場景的窗口大致分為三塊,目錄窗口、狀態(tài)窗口及金幣窗口。我們選中不同的命令會呼出不同的場景。

????????菜單場景一般是在Scene_Map里呼出的,Scene_Map過于復雜,以后再研究。今兒我們就先看看Scene_Menu。

????????

????????可以看出Scene_Menu繼承自Scene_MenuBase,Scene_MenuBase也是所有菜單類型場景的基類,Scene_MenuBase主要負責創(chuàng)建背景、創(chuàng)建幫助窗口,再就是菜單上角色的切換,這也是其最重要的功能。

????????Scene_Menu就比較清晰,從create方法中,我們可以清晰的看到它創(chuàng)建了三個窗口。

????????其中createCommandWindow方法是不是有點眼熟,沒錯,我們在分析Scene_Title的時候也碰到過類似的方法。? ????

創(chuàng)建命令窗口

????????上面幾行代碼是不是就很熟悉了,但是我們仔細看,這里創(chuàng)建的窗口是用的Window_MenuCommand,而Scene_Title中用的是Window_TitleCommand,我們知道這兩個命令窗口都是Window_Command派生的,他們比較核心的一塊就是創(chuàng)建命令列表,也就是

makeCommandList方法,這兩者在實現(xiàn)上還是有一點區(qū)別的。? ?????

創(chuàng)建命令列表

????????左側(cè)是Scene_Menu的,右側(cè)是Scene_Title的。Scene_Title比較清晰簡單,直接就添加了三行命令。而Scene_Menu就稍微復雜了一些,對不同的命令進行了分類,然后按照類別進行創(chuàng)建。因為每個類別都有一些各自的判斷條件和特性。

????????

金幣及狀態(tài)窗口

????????金幣及狀態(tài)窗口使用不同的窗口模板創(chuàng)建。

????????大概的了解了原始的菜單場景,接下來,我們使用插件對菜單場景進行一些改造。類似對標題場景的改動,我們把文字的命令用圖片代替,然后在場景上加一些自定義的數(shù)據(jù)及背景,讓菜單場景更加生動。

????????本次使用MOG_SceneMenu.js插件,MOG_SceneMenu.js提供了一個全新的菜單樣式。

????????單獨引入MOG_SceneMenu.js時,菜單提示了一個錯誤。

error1
error2

????????出問題的就是1331行代碼,開始很疑惑,為什么Window_MenuCommand在1355行已經(jīng)定義了updateScrollRoll方法,卻在1331行調(diào)用時,拋出來異常。結(jié)果調(diào)試發(fā)現(xiàn),對象的構(gòu)造函數(shù)確定后,如果再添加屬性或者對象,需要在對象的prototype上添加,這里涉及一個JS核心知識點--原型鏈。我對原型鏈的理解還停留在初級階段,這里就不展開講了。但是我在此前的項目中也使用過這個插件,并沒有發(fā)生異常,所以就想一定在某個其他插件定義了這個方法。于是找到了MOG_MenuCursor.js插件。

Window_Selectable.prototype.updateScrollRoll

????????雖然我們找到了updateScrollRoll,但是還有疑惑,這個方法明明定義在Window_Selectable的prototype上,跟Window_MenuCommand怎么扯上關(guān)系了呢?接著往下看。在rpg_windows中有關(guān)于Window_MenuCommand的定義。

????????Window_MenuCommand繼承自Window_Command,而Window_Command繼承自Window_Selectable,js在尋找屬性或者對象時,會根據(jù)原型鏈,一層層的向上搜索,直到找到為止,所以這里直接找到了Window_Selectable.prototype的updateScrollRoll。

? ? ? ? 這里我直接把相關(guān)代碼拷貝到了MOG_SceneMenu.js,并且注釋了兩斷Window_MenuCommand.updateScrollRoll。

????????暫時沒有看出對已引用插件的影響,對于新手最好不要對插件進行結(jié)構(gòu)性的改動,我這里只是做一種嘗試,沒有把握的情況下還是直接引用MOG_MenuCursor.js。

????????根據(jù)插件將對應的資源放到相應目錄下,菜單場景變成了如下的樣子:

MOG菜單場景

????????跟軟件自帶的菜單場景相比,用圖片替代文字、添加更多的游戲元素到菜單,讓菜單更加的生動,多樣化。

????????整個插件的代碼量還是比較可觀,我也不知道該以什么方式展開。所以后面的解析主要以應用為主,輔以代碼講解。

????????首先我們看到場景中有8個命令圖標,我們使用插件參數(shù)只能修改他們的起始位置,如果我們想要修改更多的東西,實現(xiàn)更多的排列方式,可以修改如下代碼:?

command

????????_compos數(shù)組是命令圖標的坐標。scMenu_ComX、scMenu_ComY是第一個圖標的初始位置,后面的圖標根據(jù)算法,計算相應的坐標。h變量是一個交替變換的值,這樣就形成了兩行的高低差,如果我們想把命令圖標顯示在左側(cè)兩列,將h變量及i變量對換,并且調(diào)整scMenu_ComX、scMenu_ComY,便可以達到下面的效果。? ?

MOG菜單場景(列)

????????當然你也可以根據(jù)自己的素材,按需調(diào)整。

????????接下來,我們再看另一部分調(diào)整,人物立繪上層的人物狀態(tài)信息,圖中只顯示了HP、MP,而插件也只支持顯示這兩項,那么我們?nèi)绻腼@示角色的TP、EXP該怎么做呢?

????????首先需要改動素材,將信息顯示圖層及顯示條制作出來,本人PS菜雞,素材制作大家自行腦補。大概就是在原圖上再加兩個框,顯示條可以調(diào)整下色調(diào)。

????????既然HP、MP已經(jīng)做出來了,想象中TP和EXP原理應該差不多,沒有太多基礎(chǔ)的情況下,我們就依葫蘆畫瓢。先在參數(shù)中把TP、EXP的顯示條、數(shù)字、最大值數(shù)值的基礎(chǔ)位置信息設(shè)置好。

TP、EXP參數(shù)

????????接下來找到加載資源部分,將TP、EXP的資源加載進來。? ?

loadBitmaps

????????如果我們添加TP,那么我們需要創(chuàng)建TP的進度條,TP當前值數(shù)字,TP的最大值這幾個要素。而這三個要素都是隨著實際的數(shù)值變化而變化的,那么都需要放到周期函數(shù)update中。

createTPMeter
createNumber
updateMeter

????????通過以上的改造,我們便在狀態(tài)信息中添加了TP顯示條及數(shù)字信息。以上代碼多處可復用HP、MP的,所以很多公共的方法我們可以不用再去實現(xiàn)。當然,我們也看到了很多重復的代碼,作為初學者的我們,學會修改,等熟練之后再考慮代碼的執(zhí)行效率和代碼的復用率。

????????

newMenu

????????這個坑就先填到這里吧,剩下的EXP的展示,大家可以嘗試自己做一下。

????????




注:以上分析均為作者興趣出發(fā),自學有感,對于js的認知還存在不足或者偏差,如有錯誤,歡迎指正。






? ? ? ??


RPGMakerMV探秘09-菜單場景的評論 (共 條)

分享到微博請遵守國家法律
寿宁县| 璧山县| 东乌珠穆沁旗| 浦江县| 迁安市| 云梦县| 木里| 雅江县| 信丰县| 宁河县| 读书| 木兰县| 大城县| 手游| 伊川县| 沧州市| 华安县| 漳浦县| 奎屯市| 龙海市| 裕民县| 建水县| 五家渠市| 灵武市| 游戏| 富民县| 石家庄市| 安顺市| 盐津县| 成武县| 桦南县| 高台县| 东兴市| 林州市| 安泽县| 永清县| 福州市| 荆州市| 博野县| 吴川市| 潼南县|