RPGMakerMV探秘08-插件分析1(添加鳴謝)
????????在RPGMakerMV探秘07-游戲標題界面中,我們對標題界面有了一個初步的認識,本文通過一個插件實例,來鞏固下標題界面。
????????本文將使用MOG_Credits.js插件進行分析,這是一個在標題界面中提供“鳴謝”命令的插件。
????????插件的使用方法我們就不贅述了,我們主要看下插件的代碼。

????????寫代碼是個技術活,同時也是個藝術活兒。一份好的說明文檔,一段詳細的注釋或者良好的代碼風格,能夠讓使用者或者自己賞心悅目,對于代碼的邏輯也能相對較快的分析出來。
????????閑話少說,上圖看到是注釋部分,一般包括插件描述、基本參數(shù)描述、幫助信息、資源路徑及版本信息等。從上面這一段描述我們就能清楚的了解到,插件的作用,使用方法等。當然這不是一個強制性的約束,每個人都有自己的風格,但是我們最好能形成自己的風格,提高代碼的可閱讀性。
????????接下來進入正題:

????????我們在使用插件的時候,經(jīng)常都會設置一些參數(shù)。而這些插件的相關參數(shù)就會隨著插件的啟用存儲在plugins.js中。plugins.js中的數(shù)據(jù)是完全由RPGMaker生成的,沒有特殊情況,不會主動去編輯這個文件。每個啟用的插件都會生成一條json串,其中一個對象parameters就存儲了開發(fā)者設置的關于該插件的參數(shù)。而上文的代碼便是讀取參數(shù)值。
????????在RPGMakerMV探秘07-游戲標題界面中,我們知道在標題界面命令窗口中新加一個目錄,需要做三件事,1、commandList中新加命令
????????????????????????????????2、commandWindow中新加事件處理
????????????????????????????????3、事件處理的具體操作內(nèi)容
????????下面我們根據(jù)這三條分別看下對應代碼: ????

????????commandList是由Window_TitleCommand的makeCommandList創(chuàng)建的,這里重寫這個方法,加上我們自己的命令。但是在這之前調(diào)用了原來的makeCommandList,因為這里面還創(chuàng)建了包括了“開始游戲”、“繼續(xù)游戲”等命令。這里還使用了上文中我們讀取到的參數(shù)。

????????commandWindow的重寫與commandList大同小異,都是調(diào)用父類方法,然后新增自己的改動。不影響原始功能,又實現(xiàn)了自己的定制化需求。

????????該部分為先關閉了命令窗口,然后用場景管理器SceneManager的push操作切換到了Scene_MCredits場景中。push操作我們可以去rpg_managers.js中去看實現(xiàn),將現(xiàn)場景壓入棧中,然后使用goto切換場景,如果需要切回來,則可以使用pop將棧頂?shù)谝粋€場景彈出,回到原場景。
????????RPGMaker的原始場景都定義在rpg_scene.js中,Scene_MCredits并不屬于原始場景,這個場景是開發(fā)者自定義的,接下來的代碼便是Scene_MCredits場景的定義。? ????

????????首先創(chuàng)建了Scene_MCredits的構造函數(shù),構造函數(shù)基本沒做什么。通過Object.create實現(xiàn)對Scene_MenuBase的繼承,Scene_MenuBase是菜單類場景的父類,具體要繼承哪個父類,需要根據(jù)自己場景所需實現(xiàn)的功能而定,同事時也需要了解rpg_scene中各個場景的一些基礎功能。如果再往上追溯,他們都有共同的基類Scene_Base(其實Scene_Base也是繼承Stage),這里就不再展開。

????????這里我們看到了一個熟悉的方法create,上一篇文章我們在分析Scene_Title的切換過程時,我們提到過create方法。在重寫的create方法中,新增了自己的需求createPictureCredit。
而該方法的具體實現(xiàn)就是在場景中添加各種資源,例如資源文件、場景中位置、資源透明度等。 ??? ?

????????該部分pressAnyKey是對觸摸及按鍵的檢測,供下方的update調(diào)用。同樣我們從上篇文章知道了周期調(diào)用函數(shù)update的作用。他會在場景生命周期內(nèi),不停的進行調(diào)用。在不停調(diào)用的情況下:
this.pictureCredit[1].opacity?+=?1;//透明不斷改變
this.pictureCredit[1].y?-=?this._creditsSpeed;//圖片位置不斷上移
????????如果觸發(fā)按鍵檢測,pop到標題界面。
????????如果圖片超出畫面,pop到標題界面。
????????如果設置了背景圖片,設置為不可見。
????????通過周期函數(shù)update的調(diào)用,一個完整的“鳴謝”場景便“動”了起來,還能接收玩家的操作。
????????以上便是MOG_Credits.js的分析,通過插件的使用,再配合代碼的分析,能夠更快了解插件的運作機制。
????????下篇我們再利用插件把標題界面做得更“酷炫”一點,同樣基于代碼分析。
????????
注:以上分析均為作者興趣出發(fā),自學有感,對于js的認知還存在不足或者偏差,如有錯誤,歡迎指正。
????????