적의 난이도를 직접 세팅하는 경우, 난이도에 따라 EnemyAi의 각 변수들의 값을 조정해 만들 것이다.
Sctriptable Object를 통해 난이도에 맞는 변수들의 값을 적고, 게임 시작시 변수를 EnemyAi 변수값에 Setup하는 방식으로 처리할 것이다.
적 난이도 ScriptableObject
using UnityEngine;
[CreateAssetMenu(menuName = "Scriptable/EnemyAIData",fileName = "Enemy AI")]
public class EnemyAIData : ScriptableObject
{
public float behaviourRandomness;
public float positionRandomness;
public float thinkDelay;
}
스크립터블 오브젝트를 먼저 말들어 준다. 난이도에 따라 바뀔 변수는 총 3개로, 행동 랜덤값, 위치 랜덤값, 생각시간이다.

프로젝트 폴더에서 Scriptable Object를 만들어 준이후 3개의 데이터에 각 난이도에 맞게 적절히 변수의 값을 조정한다.
EnemyAI
[SerializeField] List<EnemyAIData> aiData = new List<EnemyAIData>(); // 적의 난이도 레벨 리스트
private EnemyAIData enemyData; // 적의 난이도 레벨
// {
// StartCoroutine(ThinkBehaviour());
// }
private void Start()
{
GameManager.Instance.gameStart += LevelSetUp;
GameManager.Instance.gameStart += StartMyCoroutine;
}
void LevelSetUp()
{
enemyData = aiData[GameManager.Instance.enemyLevel - 1];
Debug.Log(enemyData);
thinkDelay = enemyData.thinkDelay;
behaviourRandomness = enemyData.behaviourRandomness;
positionRandomness = enemyData.positionRandomness;
}
private void OnDisable()
{
GameManager.Instance.gameStart -= LevelSetUp;
GameManager.Instance.gameStart -= StartMyCoroutine;
}
데이터 셋업의 경우 LevelSetUp이라는 함수를 통해 데이터의 값을 넣는다.
GameManager에서 게임 시작시 호출되는 gameStart 델리게이트에 SetUp 함수를 넣어 작성한다.

각 난이도에 따른 스크립터블 오브젝트를 사용하기 위해서 List를 만들고, GameManager의 enemyLevel의 값을 사용해서 순서에 맞는 데이터를 사용하게끔 한다.
완성본

'GameDev > Cubidom' 카테고리의 다른 글
| Cubidom 게임 재시작하기 (0) | 2026.03.23 |
|---|---|
| Cubidom 게임 종료 UI (0) | 2026.03.20 |
| Cubidom 적 난이도 선택 (0) | 2026.03.19 |
| Cubidom 게임 시작 시스템 (0) | 2026.03.18 |
| Cubidom 카메라 컨트롤 (0) | 2026.03.16 |