string keyword="START LastTeamProject";
1. Last Team Project
사실 최종 프로젝트를 시작한날은 저번주였지만..그동안 TIL을 못써서 많이 밀렸었다ㅜㅠ
오픈월드 RPG를 만들기로 했고 기획회의를 거치며 틀을 잡아갔다.
나는 일반 몬스터 부분을 맡았다.
(1) 몬스터데이터관리
엑셀에서 Json파일로 변환된 이 데이터들을 정리해야한다.
<DataManager>
[Serializable]
public class MonsterInfo
{
public string name;
public int level;
public float exp;
public bool AtkStance;
public float HP;
public float Damage;
public float Daf;
public float DmgSpeed;
public float CriDamage;
public float Speed;
public float AtkSpeed;
public float Range;
}
>>Json상의 변수 이름과 동일하게 적어 넣은 클래스 생성.
[Serializable]
public class MonsterDataBase //->실제데이터
{
public List<MonsterInfo> FieldMonster;
public Dictionary<string, MonsterInfo> fieldMonDic = new();
//몬스터리스트를 딕셔너리에 추가
public void Initialize()
{
foreach (MonsterInfo fieldMonster in FieldMonster)
{
fieldMonDic.Add(fieldMonster.name, fieldMonster);
}
}
//이름으로 몬스터정보 반환
public MonsterInfo GetMonsterInfoByKey(string name)
{
if (fieldMonDic.ContainsKey(name))
{
return fieldMonDic[name];
}
return null;
}
}
>>데이터들을 리스트와 딕셔너리로 변환하여 가지고 있는다.
public class DataManager : MonoBehaviour
{
public static DataManager Instance;
public MonsterDataBase monsterDatabase;
private void Awake()
{
if (Instance == null)
{
Instance = this;
}
DontDestroyOnLoad(this.gameObject);
TextAsset fieldMonData = Resources.Load<TextAsset>("Json/FieldMonster_Data");
monsterDatabase = JsonUtility.FromJson<MonsterDataBase>(fieldMonData.text);
monsterDatabase.Initialize();
}
>>DataManager가 Json파일을 불러오고 데이터들을 알 수 있게 처리
<MonsterManager>
public DataManager dataManager;
// Start is called before the first frame update
void Start()
{
dataManager = DataManager.Instance;
}
// Update is called once per frame
void Update()
{
}
public MonsterInfo GetMonsterInfoByKey(string name)
{
return dataManager.monsterDatabase.GetMonsterInfoByKey(name);
}
>>DataManager에서 몬스터 정보를 가져오는 함수를 리턴하는 메소드를 만들어준다.
<FieldMonster>
[field: Header("Reference")]
[field: SerializeField] public MonsterInfo myInfo;
public MonsterManager monsterManager;
public string monsterName;// to do 나자신의 이름 가져오게 하기
private void Start()
{
myInfo = monsterManager.GetMonsterInfoByKey(monsterName);
}
>>FieldMonster가 MonsterManager에 자기자신의 정보만 요청하게 만들어 준다.
>>유니티에서 PlatypusA라는 MonsterName을 입력하면 정보를 가져오는것을 볼 수 있다.
마무리
데이터매니저, 몬스터매니저, 몬스터 스크립트간의 관계를 따져가며 필요한 정보를 획득할수 있게 하는데
이해가 잘 안되서 시간이 너무 많이 걸렸다ㅠㅠ
MonsterName부분을 직접 입력하지 않고 알아서 입력해주는 코드도 짜봐야겠다.
.
.
.
with 우산속 용이
'개발자_뉴비일지' 카테고리의 다른 글
내일배움캠프 Unity 45일차 TIL - START TeamProject04 (0) | 2024.02.28 |
---|---|
내일배움캠프 Unity 43일차 TIL - null (0) | 2024.02.26 |
주말TIL _03 (1) | 2024.02.26 |
내일배움캠프 Unity 41일차 TIL - Stack (0) | 2024.02.21 |
내일배움캠프 Unity 35일차 TIL - START TeamProject03 (0) | 2024.02.14 |