MINECRAFT數(shù)據(jù)包-優(yōu)化
本章無任何高深的技術性問題,僅分享自己的一些經(jīng)驗與建議
在數(shù)據(jù)包編寫過程中,難免會出現(xiàn)一些問題:
【A】函數(shù)、進度、配方或標簽文件的命名
【B】數(shù)據(jù)包內文件夾的使用
【C】數(shù)據(jù)包編寫的內容出現(xiàn)重復,有時復制粘貼的效率太低
【D】數(shù)據(jù)包的性能過低
(更多問題等待大家補充)
下面優(yōu)先解決這4個問題
A
以下面這個數(shù)據(jù)包為例

這個function文件夾中有幾個文件夾與幾個獨立的文件,他們的命名規(guī)律也顯而易見
即:根據(jù)函數(shù)內容與功能進行命名
如game文件夾就是關于數(shù)據(jù)包內游戲的玩法
這樣命名的好處是便于閱讀與分類,防止在編寫數(shù)據(jù)包的過程中“自我混淆”,缺點是有時名稱字符可能過多,調用函數(shù)時會造成不便
所以,我們在編寫時盡量避免使用文件名過長,必要時可以縮寫、簡寫,如以多個單詞首字母來命名。(為文件夾命名時也是一樣的)
B & C
問題B與C常??梢怨餐鉀Q。當數(shù)據(jù)包編寫需要出現(xiàn)重復(或整體結構相同)的內容時,可以先將文件歸類至文件夾中,在構造完一個完整的結構后再通過整體的復制粘貼,最后針對不同點進行修改與針對性的命名,達到提高編寫效率的目的。

D
關于數(shù)據(jù)包的性能一直是一個非常重要的問題,它涉及到編寫者的習慣與數(shù)學邏輯
在這里只提幾點,就當是拋磚引玉
【1】盡可能少地將命令寫入無條件循環(huán)(下以loop.mcfunction為例)
loop.mcfunction文件每個游戲刻都會執(zhí)行,執(zhí)行的命令越多,性能就低,最明顯的后果是游戲卡頓,甚至可能損壞存檔。
所以,盡量將命令邏輯寫的更簡單,省去不必要的命令,可以多寫注釋來幫助理清邏輯,尋找最簡寫法;還可以將執(zhí)行內容與目的相同的命令放入一個函數(shù)文件中,以整體的執(zhí)行提高性能
【2】使用目標選擇器時盡可能避免使用大量的@e、@a或其中的type選項
以@e為例,使用時游戲需要遍歷每個實體來尋找滿足條件的目標,這樣做將降低性能
可以使用標簽來幫助選擇,減少@e的使用次數(shù)。
【3】使用完標簽后可以將其移除
這是數(shù)據(jù)包中常見的一次性標簽,目的是幫助選擇實體并減少內存與性能的浪費,在前面幾章選擇目標時就有使用過。
【4】部分復雜條件的檢測可以通過進度來完成
這樣做可以避免在execute命令疊大量的語句與檢測條件。進度的檢測與執(zhí)行非常特殊,它將提高數(shù)據(jù)包的性能。
(若描述或方法有誤,歡迎批評指正)
最后,希望這篇文章能夠幫助大家養(yǎng)成數(shù)據(jù)包編寫時的良好習慣