unityで音ゲーを作りたいのでJsonとcsvを比較する
ゲーム制作を始めてから、いつか音ゲーを作りたいな~と思っていたので挑戦してみる。
【Unity】音ゲーの仕組みを学び「〇〇の達人」をUnityで作る パート1 #C # - Qiita
このサイトを丸パクリ参考にJsonを読み込むGameManagerを作成した。MiniJsonとJsonNodeを使ってるけどJsonUtilityの方がメジャーなのか…?
音ゲーの作り方を調べたらcsvを使う方法もあるらしいので譜面を読み込む関数をcsv版にしたものも作成した。
Sample,100
5000,1
5250,1
5500,2
5750,1
6000,2
6250,2
6500,2
6750,1
7000,1
csvの中身。リンク先のJsonとだいたい同じ、はず。
void LoadScore()
{
Notes = new List<GameObject>();
NoteTimings = new List<float>();
csvFile = Resources.Load(filePath) as TextAsset;
StringReader reader = new StringReader(csvFile.text);
string line = reader.ReadLine();
csvDatas = line.Split(',');
Title = csvDatas[0];
BPM = int.Parse(csvDatas[1]);
while (reader.Peek() != -1)
{
line = reader.ReadLine();
csvDatas = line.Split(',');
float timing = float.Parse(csvDatas[0]);
string type = csvDatas[1];
GameObject Note;
if(type == "1")
{
Note = Instantiate(type1, SpawnPoint.position, Quaternion.identity);
}
else if(type == "2")
{
Note = Instantiate(type2, SpawnPoint.position, Quaternion.identity);
}
else
{
Note = Instantiate(type1, SpawnPoint.position, Quaternion.identity);
}
Note.GetComponent<NotesController>().setParameter(type, timing);
Notes.Add(Note);
noteTimings.Add(float.Parse(csvDatas[0]));
}
}
GameManagerのLoadChart()をこれに変更した版。csvの読み込みはこちらを参考にした。
https://qiita.com/toma09to/items/0c9aca040ca3278d868e
Jsonの方のリンクのコードと仕組みは同じ。(コメント書く癖つけたい)
1. タイプとタイミングを取得
2. タイプに応じたノーツを初期位置に生成
3. 生成したノーツにタイプとタイミングを設定
4. 生成したノーツをノーツのリストに、タイミングをタイミングのリストに追加
ここまでの感じでの比較
Jsonはtypeとtimingをそのまま持ってこれる(?)けどcsvの方は配列の何番目かをこっちが把握する必要がある。今はtypeとtimingだけだけど新しい情報をノーツに与えようとすると、csv1行を配列に入れてる関係でプログラムの書き換えが必要かも。今のところはJson派。
これからどうしよう
レーンを増やすとかやろうかな。ロングノーツも作りたいけど難しいことが保証されていて怖い。
この記事が気に入ったらサポートをしてみませんか?