로그라이크 4

[유니티/C#] 퀘스트 시스템 만들기

이번에 만든것은 퀘스트 시스템이다. 이전에 구조를 잡아놓았던 DataClasses를 활용해 만들었다. 이전글 https://jinsso.tistory.com/10 [유니티/C#] 데이터를 관리하는 클래스 만들기 이전에 데이터를 csv에서 읽어와 저장하는 코드를 작성했었다. 하지만 기능 구현에 중점을 두고 코드를 짜다보니 보기에도, 사용하기에도 별로고 유지보수에도 별로 좋지 못했다. 이번에는 csv로 jinsso.tistory.com 이전의 스킬 시스템 구축 요청을 받았을 때의 경험이 있어서 이번에는 비교적 쉽게 만들 수 있었다. 정리를 하면 1) 1단계 퀘스트 3개를 랜덤으로 가져온다 2) 가져올 때 이전에 가져온 항목과 QuestID가 동일하면 다시 뽑는다 3) 3개가 확정이 되었다면 UI에 적용한다 ..

[유니티/C#] 데이터를 관리하는 클래스 만들기

이전에 데이터를 csv에서 읽어와 저장하는 코드를 작성했었다. 하지만 기능 구현에 중점을 두고 코드를 짜다보니 보기에도, 사용하기에도 별로고 유지보수에도 별로 좋지 못했다. 이번에는 csv로 불러온 데이터들을 관리하는 클래스를 만들었다. 이전에 만들어 둔 코드들을 해당 클래스로 옮김으로써 재사용성과 유지보수성을 높이고자 했다. 우선 데이터를 총괄하는 "DataClasses" 클래스를 만든다. public class DataClasses { // 데이터를 저장할 클래스들의 리스트 생성 public List PassiveSkillData = new List(); public List Quest_NormalData = new List(); // 데이터에 이미지 경로가 지정되어 있다면, 경로상의 이미지를 불러와..

[유니티/C#] 클래스에서 원하는 조건의 랜덤 항목 뽑아오기

팀의 기획자가 "랜덤으로 스킬을 3가지 뽑아달라" 고 요청했다. 이런 흐름으로, 원하는 조건에 맞는 스킬을 뽑아올 수 있어야 했다. 이전에 작성한 글에서 csv파일을 읽어와 Skill 클래스에 저장했으니, 저장한 Skill들을 바탕으로 정보를 비교해 가져오기만 하면 된다. . . . . 하지만 생각보다 로직을 짜기 힘들어서 고생 깨나 했다. public List GetRandomSkills(Dictionary friendshipDic, List skillList, int count) { // 랜덤으로 선택된 스킬을 임시 저장할 리스트 List chosenSkills = new List(); // count 개수만큼 스킬을 선택할 때까지 반복 while (chosenSkills.Count < count) ..

[유니티/C#] DataTable의 모든 행 읽어오기

원래는 간단한 테이블만 사용해서, 코드도 간단하게 만들어서 사용하고 있었다. 그런데 게임 기획이 바뀌고 데이터를 저장해야할 일이 많아져서, 기존에 사용하던 코드로 작업을 진행했다가는 돌이킬 수 없을것 같은 예감이 들었다. 아래에는 개편된 코드를 대략적으로 적어보려고 한다. 우선, 스킬들을 관리하기 위한 클래스를 작성했다. public class Skill { public int Skill_ID { get; set; } public int GodID { get; set; } public string SkillName { get; set; } public int SkillLevel { get; set; } public int SkillGroupID { get; set; } public int PriorSki..