728x90
- 주제
>>C#을 이용해 텍스트 게임 만들기 및 오류 해결3
- 오류 발생 및 해결
<오류>
인벤토리 - 장착 관리에서 아이템에 해당하는 번호를 선택하면, 장착 또는 장착 해제가 가능하게 만들고 싶었다.
상점에서 처음으로 아이템 하나를 구매하여 아이템의 해당 번호(1번)를 눌렀더니, 오류가 발생했다.
살펴보니 상점에서 '5. 모자'를 처음으로 구매하면,
boughtDic 딕셔너리에는 Key값 5로 아이템정보가 저장된다.
처음 구매한 아이템은 인벤토리 - 장착관리 [아이템 목록]에 1번으로 추가된다.
<상점>
choose = 5;
boughtDic.Add(5, "모자");
<인벤토리 - 장착 관리>
choose = 1;
AddOnOffData(1);
public void AddOnOffData(1)
{
if (boughtDic.TryGetValue(1, out string one)) -->오류발생(boughtDic 딕셔너리에는 Key값 1 없음)
{
if (!onDic.ContainsKey(a))
{
onDic.Add(a, one); //장착(onDic에 추가)
}
else
{
onDic.Remove(a); //미장착(onDic에서 제거)
}
}
}
<해결>
boughtValueList 리스트를 사용하여 문제를 해결하였다.
boughtValueList 리스트는 상점에서 몇 번째에 해당하는 아이템을 구매하던,
구매한 순서대로 아이템정보를 추가한다.
첫 구매시, boughtValueList[0] = "모자"
두번째 구매시, boughtValueList[1] = "모자"
ex) 상점에서 처음으로 5. 모자를 구매. 인벤토리-장착 관리에서 1. 모자 선택(장착 시도)
<상점>
choose = 5;
boughtDic.Add(5, "모자");
boughtValueList.Add( "모자" );
boughtValueList[0] = "모자";
<인벤토리 - 장착 관리>
choose = 1;
AddOnOffData(1);
onDic.Add(1, boughtValueList[0]);
//구매정보 리스트
List<string> boughtValueList = new List<string>();
//장착목록(장착번호,장착정보) 딕셔너리
Dictionary<int, string> onDic = new Dictionary<int, string>();
//장착 및 해제된 아이템정보 추가
public void AddOnOffData(int a)
{
if (!onDic.ContainsKey(a))
{
onDic.Add(a, boughtValueList[a - 1]); //onDic에 추가(장착)
}
else
{
onDic.Remove(a); //onDic에서 제거(미장착)
}
}
728x90
반응형
'유니티' 카테고리의 다른 글
Day 14 - 커밋 컨벤션 설정 & README.md 작성 (0) | 2024.04.29 |
---|---|
Day 13 - C# (제너릭, out & ref 키워드) (0) | 2024.04.28 |
Day 11 - 텍스트 게임 만들기(오류 해결 과정2) (0) | 2024.04.26 |
Day 10 - 텍스트 게임 만들기(오류 해결 과정) (2) | 2024.04.25 |
Day 9 - C# 문법(클래스, 상속, 가상메서드 및 오버라이딩, 추상클래스) (0) | 2024.04.24 |