- 致编者:请牢记我们的域名wiki.mcbe-dev.net!
- 致编者:欢迎加入本Wiki的官方交流QQ群或Discord服务器!
- 基岩版1.19.31现已发布!(了解更多)
- Inner Core现已支持Xbox模组联机!(了解更多)
- 如果您是第一次来到本Wiki,欢迎注册一个账户
- 点击顶部的“编辑”或“编辑源代码”按钮即可编辑当前页面
- 请知悉:在不登录时也可以编辑和新建页面,但是您当前的IP地址会记录在编辑历史中
教學:製作附加包/聲音
引言[編輯]
聲音(Sound) 包含了遊戲中所能聽到的由各種音訊檔所播放出的內容,例如遊戲背景音樂、生物音效、方塊音效、環境音效等。
接下來我們將幫助您:
- 了解聲音的檔案結構
- 修改已有聲音
- 加入自訂聲音
在此之前请先下载官方的 示例资源包 ,它能方便您接下来的操作
檔案結構[編輯]
- 資源包資料夾
- manifest.json:清單檔案
- sounds.json:聲音的 遊戲事件對應 管理檔案
- sounds:聲音主資料夾
- music_definitions.json:音樂註冊檔案
- sound_definitions.json:聲音註冊檔案
- wiki.ogg:自訂聲音檔案
- music
- game
- calm1.ogg:需要修改的聲音
- game
聲音目前支援三種檔案格式 .wav
.ogg
.fsb
,您需要明確 音樂 和 音效 是不同的,而 聲音 是它們的總稱。
此處我們修改的聲音是最典型的 音樂
注意:如果您修改了上述的任何一个文件,都需要重启游戏客户端才能起效。/reload 和 重启世界 是无效的。
開始[編輯]
聲音定義[編輯]
接下來您需要開啟 sound_definitions.json
如果沒有,請先建立一個
接下來我們來觀察這個檔案的基本格式:
{
"format_version": "1.14.0", //格式版本
"sound_definitions": { //声音定义区
"example.wiki": { //名称
"category": "neutral", //类型
"sounds": ["sounds/wiki"] //声音路径
}
}
}
可以看到它有兩個頂級屬性(這裏將關鍵字譯作屬性),分別是 format_version
和 sound_definitions
,顯而易見,format_version 就是版本格式,不需要我們多説了,我們來看另一個頂級屬性 sound_definitions ,在上的例子中,它下面有一個 example.wiki,我們稱它為短名,它並非一個 命名空間 ,但是它可以在 music_definitions.json 和 sounds.json 引用,也可以使用 /playsound 播放,但現在它還會跟遊戲中的事件繫結,也沒有一個有效的命名空間。
接下來我們看看下面這些屬性(都在同一位置):
- category:型別,型別由播放引擎內部使用,以決定如何播放每個聲音
型別 | 含義 | 注意 |
---|---|---|
weather | 天氣 | |
block | 方塊 | |
bucket | 鐵桶 | |
bottle | 瓶子 | |
ui | 用户界面 | 播放時不受空間限制(即沒有最大/最小距離選項) |
player | 玩家 | |
hostile | 敵對生物 | |
music | 音樂 | |
record | 唱片 | |
neutral | 其他 | |
<any_string> | 任何字串 | 自訂你自己的聲音型別 |
- max_distance:最大距離(浮點值),在此距離後達到最低音量,型別錯誤時忽略此選項
- min_distance:最小距離(浮點值),在此距離後,音量開始衰弱,型別錯誤是忽略此選項
- sounds:管理此聲音的一些特殊屬性
接下來我們重點介紹 sounds
這個屬性下的內容:
從上面那個json例子可以看出 sounds 有一種簡單的寫法,僅包含聲音路徑,我們接下來介紹複雜的寫法:
{
"format_version": "1.14.0",
"sound_definitions": {
"example.wiki": {
"category": "neutral",
"sounds": [
{
"name": "sounds/wiki",
"is3D": false,
"stream": true,
"volume": 1.0,
"load_on_low_memory": true,
"pitch": 1.0,
"interruptible": true,
"weight": 1
},
"sounds/wiki2" //如没有,请创建一个
]
}
}
}
觀察上面的 json 範例,我們便能發現兩個要點:
- sounds 下的屬性既可以為字串,也可以為物件。當為字串時,直接代表路徑;當為物件時,則可以加入其他內容 路徑 成為 name 屬性 的 值
- sounds 下面有多個屬性時,隨機抽取一個屬性對應的路徑下的音樂播放
那麼 sounds 下面物件中的屬性有哪些作用呢,接下來讓我向您介紹:
- name:必要的,用於表示音樂路徑
- stream:流線播放(布爾值),將這個聲音修改為 緩存播放 的形式,即一次提取少部分音樂播放,而不是整段音樂直接提取到記憶體中,從而使用較少的記憶體。可以提高效能
- volume:強度(浮點數),用來定義在遊戲嘗試播放聲音之前,聲音可以在多遠的距離內。預設情況下,在引擎嘗試播放聲音之前,收聽者必須距離聲源<= 16個方塊(也就是為1.0的情況)
- load_on_low_memory:強載入到記憶體(又稱 低記憶體載入 ,布爾值),即使在記憶體低的情況下也強制播放音樂
- pitch:音調(浮點數) (預設為1.0)
- is3D:立體聲(又稱 3D音樂 ,布爾值),是否採用立體聲播放( music 和 ui 不使用)
- weight:權重(整數值),目前權重佔總權重的百分之比,就表示着有多少的概率被選中播放,上面 例子 中,wiki 的播放概率是50%,wiki2 的播放概率是50%
這樣我們就成功的學會定義聲音了
修改已有聲音[編輯]
修改已有聲音很簡單
在Minecraft中,音訊檔儲存於sounds
資料夾內。透過修改sounds
資料夾內對應的.ogg
音訊檔,便可以變更原版音樂。
具體方法也很簡單,首先,在與manifest.json
同層的地方,建立一個名字為sounds
的資料夾,將準備好的音訊檔改名為 你想要修改的原版音訊檔名,後綴改為.ogg
即可。
要注意的是不同的音訊檔放在不同的資料夾內,如add_candle1.fsb
就放在/sounds/block/cake/
路徑下。
定義音樂[編輯]
定義音樂需要修改 music_definitions.json 檔案,我們來看一下它的基本格式:
{
"game": {
"event_name" : "music.game",
"min_delay": 600, //最小延迟
"max_delay": 1200 //最大延迟
}
可惜的是,遊戲現在還不允許自訂音樂
繫結遊戲事件[編輯]
如果我們想讓聲音自動執行,我們可以將它們加入到 sounds.json 檔案中。這將把聲音定義直接繫結遊戲事件。
我們可以看一下基本格式:
{
"entity_sounds": {
"entities": {
"wiki:elephant": { //命名空间
"volume": 1,
"pitch": [0.9, 1.0],
"events": {
"step": {
"sound": "elephant.step", //短名
"volume": 0.18,
"pitch": 1.1
},
"ambient": {
"sound": "elephant.trumpet", //短名
"volume": 0.11,
"pitch": 0.9
}
}
}
}
}
}