03/20 본캠프 #60

guno park·2024년 3월 20일
0

본캠프

목록 보기
60/77

게임 진행 데이터 관리하기

데이터 관리 초안

   public class Information
    {
        public enum DayTimeenum
        {
            Evening,
            Afternoon,
            Night
        }

        private DayTimeenum DayTime;

        public DayTimeenum dayTime
        {
            get { return DayTime; }
            set { DayTime = value; }
        }

        private int Date;

        public int date
        {
            get { return Date; }
            set { Date = value; }
        }

        private int Position;

        public int position
        {
            get { return Position; }
            set { Position = value; }
        }
        //position은 주소로 하고 DB 만들기

//TODO : 최초 세팅 때 설정해주고, 이어하기 할 때는 로드하기.
        public Information()
        {
            DayTime = DayTimeenum.Evening;
            Date = 0;
            //Position = "집 주소"; DB상 주소를 얘기함. 집주소 아니면 사건현장?
        }

        public void OnLoadSetting() //로드할 때에 맞춰서 세팅
        {
            //dayTime =  DataManager.Instance.~~~.Player.Information.dayTime;
            //date =  DataManager.Instance.~~~.Player.Information.Date; 이런 느낌.
        }
    } 

게임을 진행하면서 관리해야할 데이터들의 타입을 만들었다.
Information은 내부에 시간데이터의 enum값, 날짜, 시간대, 위치에 관한 정보를 가지고 있고, 내부에서만 수정가능하도록 프로퍼티를 설정하여 캡슐화 해주었다.

enum 회전시키기

현재 enum의 count가 3인 경우라서 %3을 나눠서 나머지를 사용하는 방식으로 enum을 회전시켰다.

 int daytime = (int)Playerinformation.dayTime + 1;
        if (daytime ==3)
            DateChange();
Playerinformation.dayTime = (Information.DayTimeenum)(daytime % 3);

enum은 int로 파싱할 수 있기에, 정수형으로 바꿔 +1 해주었을 때 enum값의 길이보다 넘어간다면 Date++해주고, 나머지를 구해 enum으로 다시 변환해준다.

많은 동작을 동시에 처리하는 방법에 대하여

Event 사용

Event Action을 통하여 해당하는 오브젝트들이 Callback을 받아 특정 상황이 됬을 때 똑같은 동작을 수행하도록 작성해줄수 있다.

장점으로는 각각 동작이 다른 경우에 그에 맞도록 수정을 해준다거나 할 수 있지만, 양이 많아질수록 관리가 복잡해진다.(Missing or Null)

Interface 상속을 통한 GetTypeofObject

직접 버튼이랑 UI에 메서드를 다 달아주는 것보다 Interface나 컴포넌트를 활용해서 Type으로 찾아오는 편이 더 활용도가 높을 수도 있다.

동일한 동작을 수행한다면 양이 몇개가 되든 상관없이 Interface를 상속받은 객체를 List형태로 저장해놓고 필요할 때 순회하며 실행시키면 편하게 만들 수 있다.

0개의 댓글