新聞中心
此特性為基巖版獨(dú)有。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了邵陽(yáng)免費(fèi)建站歡迎大家使用!
目錄
- 1 總指南
- 2 定義文件
- 3 函數(shù)
- 4 命令
- 5 模型
- 6 聲音
- 7 UI
- 7.1 修改UI示例
- 7.1.1 示例1: 減少變量
- 7.1.2 示例2: 繼承
- 7.1.3 示例3: 修改子控件
- 7.1.4 示例4: 修改數(shù)組
- 7.1 修改UI示例
- 8 世界
- 8.1 生物
- 8.2 紅石
- 8.3 常加載區(qū)域
- 9 參見
此處提供的指南是為了使創(chuàng)作者得到為Minecraft創(chuàng)作內(nèi)容時(shí)的較好體驗(yàn)的一種最佳操作。它將有助于確保作品可以工作,并且在應(yīng)對(duì)游戲中的變化時(shí)具有高效性和彈性。
總指南[ ]
- 從世界和包的目錄中移除所有與內(nèi)容無(wú)關(guān)的文件。
- 不要在包中存放包,或存放Windows或Photoshop文件。它們中的任意一種都會(huì)在讀取、導(dǎo)入或加載內(nèi)容時(shí)導(dǎo)致出錯(cuò)。
- 在發(fā)布之前從內(nèi)容中移除任何未使用的資源。
- 這能夠保證在將內(nèi)容縮減到最小的同時(shí)減少內(nèi)容驗(yàn)證失敗的可能性。
- 此外,如果原版文件被修改,這樣做對(duì)你的內(nèi)容來(lái)說(shuō)不會(huì)造成意外的更改。
- 不同的平臺(tái)有不同的路徑長(zhǎng)度限制。算上包或世界的路徑,平臺(tái)會(huì)計(jì)算導(dǎo)入到Minecraft里的目錄長(zhǎng)度。如果長(zhǎng)度超出限制,包會(huì)導(dǎo)入失敗并且會(huì)變成無(wú)效狀態(tài)。正因如此,我們建議:
- 保持路徑長(zhǎng)度為70字符或更少,即從包或世界模板的根目錄到一個(gè)文件的最長(zhǎng)路徑長(zhǎng)度應(yīng)該只能有70字符長(zhǎng)。
- 路徑中的每一部分(目錄或文件名)必須小于60字符。否則,一些平臺(tái)將無(wú)法識(shí)別這一部分。
- 資源包或行為包的目錄名應(yīng)該小于10字符長(zhǎng)。這樣可以使創(chuàng)作者可以寫更長(zhǎng)的文件或子目錄名。例如,
bp_mw有如下目錄:MyWorld/behavior_packs/bp_mw
定義文件[ ]
- 例如
blocks.json、mobs.json、sound_definitions.json以及其他位置的定義文件包含了原版中所有元素的定義。請(qǐng)確保你的包只包含那些需要更改的元素和字段。這意味著:不要直接復(fù)制/粘貼所有原來(lái)的定義,然后只更改需要更改的那一段,而是僅需要保留文件中需要更改的那一段。游戲會(huì)自動(dòng)將這些更改與原版的文件合并。- 如果需要更改的之外的某些部分也被留在了文件中,而原版的方塊或生物在游戲版本更新時(shí)發(fā)生了更改,那么那一段就會(huì)造成內(nèi)容里不必要的變更。
以下文件不應(yīng)該改寫,除非你有意更改此內(nèi)容。它們還沒(méi)有獲得官方的支持,但是如果你的修改可行,也可以在至少同版本正常運(yùn)行。 因此無(wú)法保證所做的更改會(huì)正常工作或在未來(lái)依舊能工作。
credits/end.txtfont/emoticons.jsontexts/language_names.jsonitems_client.jsonitems_offsets_client.json- shaders目錄里的任何文件
注:shaders文件夾內(nèi)文件為HLSL或GLSL語(yǔ)言編寫
函數(shù)[ ]
- 使用子目錄來(lái)創(chuàng)建命名空間,以避免多個(gè)行為包的函數(shù)文件之間的沖突。如果一個(gè)函數(shù)的路徑(以/functions/subdirectory開頭)與另一個(gè)包一個(gè)函數(shù)的路徑完全吻合,那么在包棧中靠近頂部的包會(huì)覆蓋其他的包。
- 為了減少你的函數(shù)在特定平臺(tái)上無(wú)法工作的概率,請(qǐng)用使用小寫字母且不留空格的方式來(lái)命名你的目錄和函數(shù)文件,例如/functions/awesome_pack/level1_function.mcfuntion。
- 請(qǐng)謹(jǐn)慎地使用遞歸。盡管遞歸是支持的,當(dāng)遞歸很深的時(shí)候它依舊會(huì)導(dǎo)致一些性能問(wèn)題。
- 在你行為包清單文件的“min_engine_version”之后輸入你當(dāng)前開發(fā)所處的游戲版本,例如"min_engine_version" : [1,8,0] 。
- 這樣你就可以控制使用哪個(gè)版本的命令來(lái)保證向后兼容性。
- 如果你的命令方塊只運(yùn)行函數(shù),那么修改他們就會(huì)變得簡(jiǎn)單很多。更重要的是,如果你發(fā)布了一個(gè)包含函數(shù)文件的新的行為包,那么使用那個(gè)行為包的世界也會(huì)在新包應(yīng)用時(shí)立馬得到更新。
- 最后一個(gè)關(guān)鍵點(diǎn)是說(shuō)明性的:當(dāng)前的基巖版尚未支持條件分支(例如execute (if unless)),但是它可能會(huì)在未來(lái)加入到游戲中。
命令[ ]
- 請(qǐng)避免每刻都執(zhí)行命令。尤其重要的是不要每刻都執(zhí)行大量的命令。
- 盡量不要在每刻執(zhí)行超過(guò)30條命令。
- 如果需要頻繁執(zhí)行命令,可以考慮把它們放到一個(gè)時(shí)鐘循環(huán)里,這樣它們可以每5+刻執(zhí)行一次。
- 如上面所說(shuō),如果你設(shè)置了偏置時(shí)鐘使得命令在不同的刻上執(zhí)行,那么就可以平衡你的工作并獲得更佳的性能。
- 獲知你內(nèi)容的性能是否是由于命令過(guò)多而表現(xiàn)不佳的一個(gè)簡(jiǎn)單方法就是使用commandblocksenabled游戲規(guī)則來(lái)關(guān)閉所有命令方塊的執(zhí)行。
- 請(qǐng)盡可能地不要使用長(zhǎng)時(shí)命令(例如覆蓋區(qū)域很大的/clone或/fill)。如果可以的話,請(qǐng)把它分開并在不同的刻執(zhí)行。
- 不要在目標(biāo)選擇器中使用物品的本地化名字,例如/testfor @e[name=beacon]。
- 如果玩家來(lái)自不同語(yǔ)言區(qū),那么物品的名字可能會(huì)改變而后命令將無(wú)法工作。
模型[ ]
- 具有許多微小部件的模型在低端設(shè)備和某些GPU上性能可能會(huì)很差。請(qǐng)?jiān)诩?xì)節(jié)與性能之間推敲出適當(dāng)?shù)钠胶狻?/li>
聲音[ ]
- 在流上只播放長(zhǎng)時(shí)聲音,例如背景音樂(lè)。
- 可以獲得游戲內(nèi)更佳的性能。
- 一些平臺(tái)在同一時(shí)間只能打開一定數(shù)目的文件,在流上播放所有的聲音可能會(huì)因內(nèi)容過(guò)多而導(dǎo)致游戲崩潰。
- 短時(shí)聲音(例如音效)在內(nèi)存上加載會(huì)有最佳性能。
- 使用一些小技巧來(lái)縮小你的文件,例如從開頭和結(jié)尾移出所有的靜音部分
- 有一個(gè)標(biāo)識(shí)load_on_low_memory可以用于聲音的定義里。這個(gè)標(biāo)識(shí)默認(rèn)設(shè)為false,這意味著如果此時(shí)計(jì)算機(jī)內(nèi)存較低,它就不會(huì)再載入任何聲音。如果對(duì)于某個(gè)特定的聲音來(lái)說(shuō),它必須得到載入,那么就把這個(gè)標(biāo)識(shí)設(shè)為true。請(qǐng)權(quán)衡利用這一特性。
- 基巖版音效文件為FSB格式,如果條件有限,可以轉(zhuǎn)碼成OGG格式后直接重命名成FSB文件。
UI[ ]
- 所有UI的修改都是有風(fēng)險(xiǎn)的。如果原版的界面以某種形式被修改,那么使用這個(gè)界面的內(nèi)容就有可能崩潰。UI系統(tǒng)是以一種有助于我們能靈活地通過(guò)JSON文件修改界面的方式設(shè)計(jì)的。任何對(duì)UI的JSON文件的更改(在一個(gè)自定義的資源包里)都會(huì)和原版的文件合并。如果合并過(guò)程不正確則游戲可能會(huì)進(jìn)入一種不佳狀態(tài)。
- 重新繪制UI貼圖,即修改他們所使用的紋理,這樣風(fēng)險(xiǎn)就會(huì)小很多,并且能做出一些更漂亮的元素。
- 重新編輯元素的尺寸以及移動(dòng)它們風(fēng)險(xiǎn)更大,但是在大多數(shù)情況下還是可行的。
- 改變一個(gè)界面中的元素本身具有破壞性的高度風(fēng)險(xiǎn)。
修改UI示例[ ]
下面是一些示例,它們介紹了如何在不完全復(fù)制整個(gè)界面的前提下修改一個(gè)UI定義文件。下面以附魔臺(tái)界面文件(enchanting_screen_pocket.json)的一部分為例。
示例1: 減少變量[ ]
不要包含那些無(wú)需更改的變量。例如,如果"color"和"shadow"是要更改的,那么就不要把其他的變量復(fù)制/粘貼到這里。只需要聲明那些需要替換的變量就可以完成簡(jiǎn)單的所需要的更改。
不佳的復(fù)制/粘貼法:
"generic_label": {
"type": "label",
"color": "$pocket_title_text_color",
"anchor_from": "center",
"anchor_to": "center",
"shadow": false
},
更好的例子:
"generic_label": {
"color": "$pocket_title_text_color",
"shadow": false
},
示例2: 繼承[ ]
無(wú)需重新聲明正在修改的控件所繼承自的控件。僅聲明正在修改的控件名即可。在下面的代碼中,"common.button"就可以跳過(guò)不寫:
不佳的例子:
"enchanting_confirm_button@common.button": {
較好的例子:
"enchanting_confirm_button": {
示例3: 修改子控件[ ]
以同一個(gè)按鈕為例,如果只需要修改該控件的子控件中的一些特定的變量,例如,default控件。僅修改一個(gè)控件的子控件請(qǐng)使用control_name/child_name語(yǔ)法。所以與之這樣寫:
"enchanting_confirm_button@common.button": {
"controls": [
{
"default@enchanting_pocket.confirm_default_control": {
"type": "image",
"texture": "textures/ui/button_borderless_light" //Added fancy button texture to default control
}
}
]
},
不如這樣寫:
"enchanting_confirm_button/default": {
"texture": "textures/ui/button_borderless_light" //Added fancy button texture to default control
},
示例4: 修改數(shù)組[ ]
這個(gè)示例將展示如何修改一個(gè)控件中的數(shù)組。例如:添加一個(gè)新的控件作為子控件或從一個(gè)控件的綁定中移除一個(gè)綁定。就該例來(lái)說(shuō),有一個(gè)叫"modifications"特殊的變量。對(duì)modifications數(shù)組里的每一條記錄,可以指定一個(gè)特定的數(shù)組去修改、操作并輸出結(jié)果。
以"enchanting_book_panel"為例,如果需要在"controls"數(shù)組里添加一個(gè)控件,就可以添加一個(gè)modifications數(shù)組,數(shù)組中指定了"array_name": "controls"、"operation": "insert_front"和"value",其中最后一個(gè)中可以填入新的控件,新控件就會(huì)如同被放到了controls 數(shù)組里一樣。下面的例子展示了上面所說(shuō)的內(nèi)容以及偏移量的更改。
"enchanting_book_panel": {
"offset": [ -4, 1],
"modifications": [
{
"array_name": "controls",
"operation": "insert_front",
"value": [
"panel_outline@beacon_pocket.panel_outline": { "layer": 0 }
]
}
]
}
要從"player_level_label"子控件中移除"#player_level_color"綁定,可以進(jìn)行如下操作:
"enchanting_book_panel/player_level_label": {
"offset": [ 0, 10 ],
"layer": 3,
"color": "$experience_text_color"
"modifications": [
{
"array_name": "bindings",
"operation": "remove",
"where": {
"binding_name": "#player_level_color"
}
}
]
}
世界[ ]
生物[ ]
- 不要一次生成過(guò)多的實(shí)體。根據(jù)設(shè)備的不同,如果在同一時(shí)間有過(guò)多的實(shí)體更新,性能可能會(huì)很差。
紅石[ ]
只要有可能,就一定不要讓紅石元件在區(qū)塊邊界處交互。
- 游戲是有能力處理大部分這種情況的,然而,的確有些例子表明當(dāng)區(qū)塊的加載和紅石元件更新發(fā)生矛盾時(shí),的確會(huì)引起一些元件失去它們狀態(tài)并破壞電路直到它們被重新放置。
- 紅石元件包括所有可以產(chǎn)生、傳遞或消耗紅石信號(hào)的方塊,例如:
- 按鈕
- 命令方塊
- 比較器
- 發(fā)射器
- 漏斗
- 拉桿
- 偵測(cè)器
- 活塞
- 鐵軌:激活型、探測(cè)型和充能型
- 紅石線
- 中繼器
- 以及其他
常加載區(qū)域[ ]
- 不要過(guò)度使用常加載區(qū)域。
- 這對(duì)低內(nèi)存設(shè)備尤其重要。
- 如果可以,在不使用常加載區(qū)域時(shí)請(qǐng)卸載它們。
- 這可以使得設(shè)備回收一些內(nèi)存,也可以為所需要的新的常加載區(qū)域騰出空間。
參見[ ]
- 附加包
- 基巖版附加包文檔
- 基巖版實(shí)體文檔
- 基巖版動(dòng)畫文檔
- 基巖版粒子文檔
- 基巖版Molang文檔
- 基巖版模式文檔
教程(作下劃線標(biāo)記的教程為中文獨(dú)有教程) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
文章題目:創(chuàng)新互聯(lián)MinecraftWiki教程:總指南[]
本文鏈接:http://www.dlmjj.cn/article/djoehih.html


咨詢
建站咨詢
