원래 초기엔 스탯을 0으로 하여 작업을 시작하였다.
public class Player
public JobType job { get; set; }
public Player()
{
level = 1;
exp = 0;
str = 0; // 힘
dex = 0; // 민첩
inte = 0; // 지능, int대신 e를 추가
luk = 0; // 행운
damage = 20;
defense = 5;
hpMax = 100;
mpMax = 100;
hp = hpMax;
mp = mpMax;
nowTown = TownName.Elinia;
gold = 1000;
inventory = new Inventory();
}
초기엔 이렇게 진행했었다. 이 이후
이후 본격적으로 시작하면서 직업별로 초기 스탯을 다르게 하고자 1레벨 공통 2, 전사는 str 4, 도적은 dex 4, 마법사는 int 4로 구상하였다.
처음엔 Player() 안에 switch / case 로 작성했는데, 전사로 선택했더니 오! 오류없이 바로 성공했다.
switch (job)
{
case JobType.Warrior:
str = 4;
dex = 2;
inte = 2;
luk = 2;
break;
case JobType.Rogue:
str = 2;
dex = 4;
inte = 2;
luk = 2;
break;
case JobType.Wizard:
str = 2;
dex = 2;
inte = 4;
luk = 2;
break;
}
오! 오류가 없을리가
왜 자꾸 마법사가 힘을 쓸려고 하냐고....
아무리 캐릭터를 도적, 마법사로 생성하고 레벨을 올려봐도 전사 스탯으로 적용되어 생성되었다.
오류의 원인은 job은 이미 값을 받고있어서 0으로 처리되어 전사만 받고있던 것이었다.
그리하여 아얘 새로운 메서드를 만들어주었다.
public void SetJob(JobType _job)
{
job = _job;
switch (job)
{
case JobType.Warrior:
str = 4;
dex = 2;
inte = 2;
luk = 2;
break;
case JobType.Rogue:
str = 2;
dex = 4;
inte = 2;
luk = 2;
break;
case JobType.Wizard:
str = 2;
dex = 2;
inte = 4;
luk = 2;
break;
}
}
job은 이미 Player가 가지고 있는 변수로 새로운 매게변수를 만들어주기 위해 _job으로 해주었으며
public class UserCreateScene
private void SelectJob()
if (!int.TryParse(command, out int intCommand))
continue;
switch(intCommand)
{
case 1:
isJobCheck = true;
GameManager.Instance.player.job = JobType.Warrior;
// 새로 만든 SetJob을 추가해주었음
GameManager.Instance.player.SetJob(JobType.Warrior);
break;
case 2:
GameManager.Instance.player.job = JobType.Rogue;
// 새로 만든 SetJob을 추가해주었음
GameManager.Instance.player.SetJob(JobType.Rogue);
isJobCheck = true;
break;
case 3:
GameManager.Instance.player.job = JobType.Wizard;
// 새로 만든 SetJob을 추가해주었음
GameManager.Instance.player.SetJob(JobType.Wizard);
isJobCheck = true;
break;
}
유저 생성하는 씬에 SetJob 메서드를 추가해주었다.
파일이 크다보니 그 안에서 처리하는 순서도 복잡하고, 여러 상황으로 인해 제대로 적용이 안되고있었던걸로 확인되며 그로인해 코드를 작성하면서 다시한번 매개변수와 저장의 개념 등을 공부하게 되었는데, 참 신기하면서도 어렵다!
근데 또 적용되니까 뿌듯하면서도 재미있다..!
- UserCreateScene은 다른분이 담당하셔서 추가가 가능한지 여쭤보고 수정하였으며, 추가된 코드로 인해 GameManager.Instance.player.job = JobType.직업명; 이부분은 추후 삭제하셨다고 한다.
'C# > Study' 카테고리의 다른 글
[C#] TextRpg 팀 프로젝트 중, 직업 / 스탯 별 공격력 적용 (0) | 2025.02.13 |
---|---|
[C#] TextRpg 팀 프로젝트 중, 특정한곳 입장 시 아이템 충전 (0) | 2025.02.12 |
[C#] 이것저것, 함수 / 선언 / 변수 / 배열 (0) | 2025.02.11 |
[C#] C# 문법 1주차 숙제풀이 (0) | 2025.02.07 |