教學:製作附加包/聲音

出自Minecraft基岩版开发Wiki
聲音
系列教學
所屬系列
難易度
初級
前置知識
實踐裝置
WindowsAndroid
所需軟體
  • 假日創作者功能
  • 自訂生態域

引言[編輯]

聲音(Sound) 包含了遊戲中所能聽到的由各種音訊檔所播放出的內容,例如遊戲背景音樂、生物音效、方塊音效、環境音效等。
接下來我們將幫助您:

  • 了解聲音的檔案結構
  • 修改已有聲音
  • 加入自訂聲音
 在此之前请先下载官方的 示例资源包 ,它能方便您接下来的操作

檔案結構[編輯]

  •  資源包資料夾
    •  manifest.json:清單檔案
    •  sounds.json:聲音的 遊戲事件對應 管理檔案
    •  sounds:聲音主資料夾
      •  music_definitions.json:音樂註冊檔案
      •  sound_definitions.json:聲音註冊檔案
      •  wiki.ogg:自訂聲音檔案
      •  music
        •  game
          •  calm1.ogg:需要修改的聲音

聲音目前支援三種檔案格式 .wav .ogg .fsb ,您需要明確 音樂音效 是不同的,而 聲音 是它們的總稱。
此處我們修改的聲音是最典型的 音樂

 注意:如果您修改了上述的任何一个文件,都需要重启游戏客户端才能起效。/reload 和 重启世界 是无效的。

開始[編輯]

聲音定義[編輯]

接下來您需要開啟 sound_definitions.json 如果沒有,請先建立一個
接下來我們來觀察這個檔案的基本格式:

{
	"format_version": "1.14.0",   //格式版本
	"sound_definitions": {    //声音定义区
		"example.wiki": {   //名称
			"category": "neutral",  //类型
			"sounds": ["sounds/wiki"]   //声音路径
		}
	}
}

可以看到它有兩個頂級屬性(這裡將關鍵字譯作屬性),分別是 format_versionsound_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
					}
				}
			}
		}
	}
}

參考[編輯]

  1. 官方文件:Introduction to Resource Packs
  2. 官方文件:Creating and Adding Custom Sounds to Minecraft
  3. 官方文件:Introduction to Sounds
  4. 我的世界wiki:聲音
  5. 我的世界wiki:sounds.json