궁금한 점
- 아이템에 대한 json 파일을 작성하려는데
- 아이템 탐색
- 동일한 카테고리의 아이템이 아니라면 변수차이로 오류나지 않을까?
- 클래스의 상속이 떠오르기도 하고
- 그럼 json파일을 분리해서 여러개로 쓰고 싶은데
- json파일을 카테고리별로 구분해서 별도 파일로 만들지 않는다면 아이템을 어떤 기준으로 구분할 수 있을까?
- 파싱해서?
- 아니면 아래처럼 id를 카테고리화해서
- id로 가져와야하는거 아님?
- ㅇㅇ아마
- 근데 그러면 id를 카테고리화해서 장비인지, 어떤 부위인지 알아내는게 맞지 않나?
- 동일한 카테고리의 아이템이 아니라면 변수차이로 오류나지 않을까?
- 아이템 탐색
분석.?
- atk 일부러 빠뜨렸을 때 반응
- 존재하지 않는 def라는 변수를 삽입했을 때
- def는 디폴트도 안뜨고 정상 작동
소결론
위와 같이 있는 데이터를 빠뜨리면 오류, 없는 데이터를 변수로 받으려하면 🐶무시.
그렇다면
json을 아이템이라는 이름으로 전부 묶어내고
각각의 필드를 차이를 주며,
스크립트에서 가져오려 할 때 변수를 적절히 사용해준다면?
{
"items": [
{
"id" : 10001,
"name" : "BF_Sword",
"atk" : 10
},
{
"id" : 10011,
"name" : "ChainVest",
"def" : 3
}
]
}
미련 남는데 아래처럼 작성될 수는 없는거임?
{
"item":[
{
"category": "equipment",
"detail": [
{
"id": 10001,
"name": "BF_Sword",
"atk": 10,
"def": 0,
},
{
"id": 10011,
"name": "chainVest",
"atk": 0,
"def": 5
}
]
},
{
"category": "medicine",
"detail": [
{
"id": 10101,
"name": "potion",
"heal": 10
},
{
"id": 10101,
"name": "poison",
"heal": -10
}
]
}
]
}
public enum EquipPart
{
Helmet,
Armor,
Shoes,
Gloves,
Weapon
}
[System.Serializable]
public class EquipInfo
{
public uint id;
public string name;
public int atk;
public int def;
}
[System.Serializable]
public class EquipData
{
public EquipInfo[] equipment;
}
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static EquipData;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
private void Awake()
{
if(Instance == null)
Instance = this;
}
void Start()
{
TextAsset textAsset = Resources.Load<TextAsset>("Json/ItemDataBase");
EquipData equipArray = JsonUtility.FromJson<EquipData>(textAsset.text);
foreach (EquipInfo equip in equipArray.equipment)
{
Debug.Log(equip.id);
Debug.Log(equip.name);
Debug.Log(equip.atk);
Debug.Log(equip.def);
Debug.Log("=============");
}
}
}
다른 아이템과 간섭하여 오류 만들지 않고 정상 작동함- 는줄 알았네…..
{
"equip": [
{
"id": 10001,
"name": "BF_Sword",
"atk": 10,
"def": 0
},
{
"id": 10011,
"name": "chainVest",
"atk": 0,
"def": 5
}
],
"medicine": [
{
"id": 10101,
"name": "potion",
"heal": 10
},
{
"id": 10101,
"name": "poison",
"heal": -10
}
]
}
- 아이템에 대한 데이터를 json으로 작성하려는데
- itemjson에서 추가, 제거 등 유지 보수를 하려면 카테고리를 나누어야 할 것 같은데
- 위의 예시에서 특정 category를 가져올 수 있는 방법?
- 아니면 모든 아이템들을 일렬로 나열?
- 하면 다른 카테고리 애들과 오류를 어캐 컨트롤함?
- 아니면 모든 아이템들을 일렬로 나열?
- 위의 예시에서 특정 category를 가져올 수 있는 방법?
- itemjson에서 추가, 제거 등 유지 보수를 하려면 카테고리를 나누어야 할 것 같은데
- 오류 케이스 1 - 단일 최상위 항목
{
"equip": [
{
"id": 10001,
"name": "BF_Sword",
"atk": 10,
"def": 0
},
{
"id": 10011,
"name": "chainVest",
"atk": 0,
"def": 5
}
],
}
{
"medicine": [
{
"id": 10101,
"name": "potion",
"heal": 10
},
{
"id": 10101,
"name": "poison",
"heal": -10
}
]
}
자
정리해보자
얼추 데이터 어캐 짤지는 알려주셨고
데이터 구조가 잡혔으니
상속~어쩌고는
내가 캐싱할 때 변수어쩌고해서 처리하면 ㅇ
배열 만들어지면 게임매니전지 어딘지 아무튼 배열을 여기다가 캐싱해두고
필요할때 id로 탐색하면 되겠지?
id규칙
그 전에
id를 string으로 주네
10000시작
ㅇ, 아이템이면 0, 카테고리, 소분류, 항목
MyClass foundElement = myArray.FirstOrDefault(element => element.MyField == targetValue);
Uploaded by N2T