Ssssong += Dev

[리듬게임] 리듬게임 에디터 제작 - 4 본문

개발/리듬게임에디터

[리듬게임] 리듬게임 에디터 제작 - 4

ssong_dev 2022. 6. 17. 14:23

ThrowBall! 만드느라 잠시 넣어놨던 리듬게임 다시 꺼내서 뚝딱거리고 있다.

 

에디터에서 찍은 노트를 세이브/로드 할 수 있는 기능을 추가하였다.

에디터에서 노트를 저장하면 플레이 화면에서도 노트 정보를 가져올 수 있다.

 

Json 파일에 노트 정보를 저장하고 있다.

이런 식으로 음악 이름, 저장 시간, 난이도, 라인간격, bpm, 그리고 각 라인에 찍혀 나올 정보가 기록된다.

{
    "musicName": "Scherzo Waltz",
    "dataTime": "20220617135058",
    "difficulty": "Normal",
    "lineGap": 50.0,
    "bpm": 240,
    "leftDial": [
        "4;startLine",
        "13;endLine"
    ],
    "leftNormal": [
        "6"
    ],
    "rightNormal": [
        "2"
    ],
    "rightDial": [
        "2;startLine",
        "12;endLine"
    ]
}

 

라인 간격을 유동적으로 바꿀 수 없는 것과 에디터에서 음악 재생에 따라 스크롤 내려가는 것이 다소 버벅인다는 것을 제외하고는

에디터로써의 기능은 거의 완성된 듯 하다. 

+ 소리 끄고 작업하고 있어서 놓쳤는데 back 눌렀을 때도 음악이 계속 재생중인 것....

 

오늘 델리게이트를 공부해서 세이브/로드 함수에 적용해보았다.

 

public delegate void FileSetting(DataType dataType);

public void JsonSave(FileSetting fileSetting, DataType dataType, string fileName)
{
    fileSetting(dataType);

    path = Path.Combine(Application.dataPath, "SaveFile/" + fileName + ".json");
    string json = JsonUtility.ToJson(dataType, true);
    File.WriteAllText(path, json);
}

public void JsonLoad(FileSetting fileSetting, DataType dataType, string fileName)
{
    path = Path.Combine(Application.dataPath, "SaveFile/" + fileName + ".json");
    string loadJson = File.ReadAllText(path);
    dataType = JsonUtility.FromJson<NoteListData>(loadJson);

    fileSetting(dataType);
}

 

fileSetting 부분에서 원하는 데이터를 기록하고 읽어오는 것을 처리하고 있다.