Shared JSON parsing for rhythm game song data with JSON.NET support
npm install com.amanotes.rhythmjsonPackage: com.amanotes.rhythmjson
Version: 2.2.0
JSON parsing library for rhythm game song data with synchronous and asynchronous parsing support.
---
- š® Synchronous and asynchronous parsing
- šÆ JSON.NET based with Unity fallback
- šØ Backward compatible variant/variants handling
- š WebGL compatible with auto fallback
- š§ HexToColor utility
- š Custom metadata parser support
---
š View on Notion
Complete documentation: Docs/RhythmJson-API.md
---
Add the package to your Unity project via Packages/manifest.json:
``json`
{
"dependencies": {
"com.amanotes.rhythmjson": "2.2.0"
},
"scopedRegistries": [
{
"name": "npmjs",
"url": "https://registry.npmjs.org/",
"scopes": [
"com.amanotes.rhythmjson"
]
}
]
}
---
`csharp
RhythmJson data = RhythmJson.Parse(jsonString);
Debug.Log($"Song: {data.songMeta.songName}, Notes: {data.notes.Count}");
RhythmJson.ParseAsync(jsonString, (data) => {
Debug.Log($"Loaded {data.notes.Count} notes");
});
string json = RhythmJson.Serialize(data, prettyPrint: true);
`
Access custom metadata from JSON without pre-registration:
`csharp
// Define your custom meta class
public class MyGameMeta
{
public string customField;
public int customValue;
}
// Parse JSON
var data = RhythmJson.Parse(jsonString);
// Retrieve typed custom meta by key
var myMeta = data.GetMeta
if (myMeta != null)
{
Debug.Log($"Custom: {myMeta.customField}");
}
`
---
RhythmJson
- Purpose: Main data container for song data
- Key methods: Parse(), ParseAsync(), Serialize(), GetMetasongMeta
- Key properties: , gameMeta, notes
SongNote
- Purpose: Individual note data
- Key properties: time, lane, type, variants, metasFindMeta()
- Key methods:
SongMeta
- Purpose: Song metadata
- Key properties: songName, bpm, audioOffset, nLanes
NoteMeta
- Purpose: Note metadata with type parsing
- Key properties: key, value, intValue, floatValue, color`
---
- Unity 2021.3+
- com.unity.nuget.newtonsoft-json: 3.0.0
---
See CHANGELOG.md