Skip to content

音符

本頁介紹譜面基本構成:音符。

注意事項

本頁部分兼容等級見字段描述

JSON 示例

json
{
  "Type": 1,
  "XPosition": 0.0,
  "YOffset": 0.0,
  "StartBeat": 0.0,
  "EndBeat": 1.0,
  "Alpha": 255,
  "SpeedMultiplier": 1.0,
  "Width": 1.0,
  "IsFake": false,
  "VisibleTime": 999999.0000,
  "HitSoundData": null,
  "Above": true,
  "HitSoundPath": null
}

結構規範

唯一標識符字段名類型描述默認值兼容等級加入版本
1Typeenum音符類型NoteType.Tap01
2XPositionfloat相對於判定線中心的X軸位置-01
3YOffsetfloat音符相對於判定線中心的Y軸偏移021
4StartBeatfloat音符開始拍數-01
5EndBeatfloat音符結束拍數,若類型不是 NoteType.Hold 則與 StartBeat 相同-01
6Alphabyte音符不透明度25521
7SpeedMultiplierfloat音符速度倍率1.021
8Widthfloat音符寬度倍率121
9IsFakebool是否為假音符false11
10VisibleTimefloat音符可見時間,單位為秒99999921
11HitSoundDatabyte[]?音符自定義擊打音效數據,null代表不自定義null31
12Abovebool是否在判定線上方,true代表在上方,false代表在下方true01
100HitSoundPathstring?音符自定義擊打音效路徑,兼容用字段,不可與HitSoundData同時使用null31

行為規範

  • 分段解釋

Type

  • Type 字段定義了音符類型,枚舉如下:
枚舉值描述對應數值
NoteType.Tap普通音符0
NoteType.Hold長按音符1
NoteType.Flick滑動音符2
NoteType.Drag拖動音符3

IsFake

  • 本字段定義了音符是否為假音符,假音符不能被打擊。
  • Hold 音符的本字段為 true,則始終顯示為未打擊狀態,反之,在miss後會減小不透明度。
  • 本字段為 true 的音符在 EndBeat 後會立即消失,沒有打擊特效,沒有打擊音效。

HitSoundData

  • 本字段可以存儲音符的自定義擊打音效數據,通常為 WAV 或 OGG 格式。
  • HitSoundData 字段可以為 null,表示沒有自定義擊打音效。
  • 未被打擊的音符不會播放自定義擊打音效。
  • 本字段不能和HitSoundPath同時使用。

HitSoundPath

  • 本字段可以存儲音符的自定義擊打音效相對於譜面根目錄的路徑,如 sound/hit.wav 就是在 sound 文件夾下的 hit.wav 文件。
  • 本字段可以為 null,表示沒有自定義擊打音效。
  • 未被打擊的音符不會播放自定義擊打音效。
  • 本字段不能和HitSoundData同時使用。

YOffset

  • 本字段定義了音符相對於判定線中心的 Y 軸偏移,正值表示在判定線上方,負值表示在判定線下方。
  • 本字段可以影響打擊特效的位置。

proto 段落

protobuf
syntax = "proto3";
package PhiCommonChart.ChartStructs;


message Note {
   NoteType Type = 1;
   float XPosition = 2;
   float YOffset = 3;
   float StartBeat = 4;
   float EndBeat = 5;
   uint32 Alpha = 6;
   float SpeedMultiplier = 7;
   float Width = 8;
   bool IsFake = 9;
   float VisibleTime = 10;
   bytes HitSoundData = 11;
   bool Above = 12;
   string HitSoundPath = 100;
}

enum NoteType {
  Tap = 0;
  Hold = 1;
  Flick = 2;
  Drag = 3;
}