[스테이지 구조 설계]
● 스테이지별 웨이브 구성 및 몬스터 스폰 데이터를 정적으로 정의
● 스테이지 → 웨이브 → 몬스터 구성을 계층적으로 관리
■ StageInfo 클래스
● 하나의 스테이지에 대한 정보를 저장한다.
○ stageKey: 스테이지의 고유 번호
○ waves: 해당 스테이지의 웨이브 배열
public class StageInfo
{
public int stageKey;
public WaveData[] waves;
}
■ WaveData 클래스
● 하나의 웨이브에 어떤 몬스터들이 나오고 보스가 있는지를 정의한다.
○ monsters: 몬스터들의 스폰 정보
○ hasBoss: 보스의 유무
○ bossType: 등장 보스의 종류 (예시: Orc_Shaman)
public class WaveData
{
public MonsterSpawnData[] monsters;
public bool hasBoss;
public string bossType;
}
■ MonsterSpawnData 클래스
● 어떤 몬스터를 몇 마리 소환할지 정의한다.
○ monsterType: 몬스터 종류 (예시: Goblin)
○ spawnCount: 등장 수
public class MonsterSpawnData
{
public string monsterType;
public int spawnCount;
}
■ StageData 클래스
● StageInfo들을 담는 정적 데이터 저장소
● 런타임 중 변경되지 않는 불변 데이터(readonly)로 선언됨
● 새로운 스테이지를 하드코딩으로 추가 가능
● StageData.Stage[x]를 통해 직접 접근 가능
public static readonly StageInfo[] Stages = new StageInfo[]
{
//스테이지 0 정보
new StageInfo(0, new WaveData[]
{
//웨이브 1: Goblin 1마리, 보스 없음
new WaveData(new MonsterSpawnData[]
{
new MonsterSpawnData("Goblin", 1),
}, false, ""),
//웨이브 2: Goblin 3마리, 보스 없음
new WaveData(new MonsterSpawnData[]
{
new MonsterSpawnData("Goblin", 3),
}, false, ""),
//웨이브 3: Goblin 6마리, 보스 있음 (Orc_Shaman)
new WaveData(new MonsterSpawnData[]
{
new MonsterSpawnData("Goblin", 2),
new MonsterSpawnData("Goblin", 2),
new MonsterSpawnData("Goblin", 2),
}, true, "Orc_Shaman")
}
),
//스테이지 1 정보
new StageInfo(1, new WaveData[]
{
//웨이브 1: Goblin 5마리, 보스 없음
new WaveData(new MonsterSpawnData[]
{
new MonsterSpawnData("Goblin", 5),
}, false, ""),
//웨이브 2: Goblin 10마리, 보스 없음
new WaveData(new MonsterSpawnData[]
{
new MonsterSpawnData("Goblin", 10),
}, false, ""),
//웨이브 3: Goblin 30마리, 보스 있음 (Orc_Shaman)
new WaveData(new MonsterSpawnData[]
{
new MonsterSpawnData("Goblin", 10),
new MonsterSpawnData("Goblin", 10),
new MonsterSpawnData("Goblin", 10),
}, true, "Orc_Shaman")
}
),
};
'내일 배움 캠프 > 뭐하지' 카테고리의 다른 글
| 오브젝트 풀링 (0) | 2025.06.04 |
|---|---|
| 게임 데이터 저장과 로드 (0) | 2025.06.04 |
| 커스텀 에디터 (0) | 2025.06.04 |
| Cinemachine (0) | 2025.06.04 |
| 렌더링 파이프라인 (10) | 2025.06.01 |