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의 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 Action을 통하여 해당하는 오브젝트들이 Callback을 받아 특정 상황이 됬을 때 똑같은 동작을 수행하도록 작성해줄수 있다.
장점으로는 각각 동작이 다른 경우에 그에 맞도록 수정을 해준다거나 할 수 있지만, 양이 많아질수록 관리가 복잡해진다.(Missing or Null)
직접 버튼이랑 UI에 메서드를 다 달아주는 것보다 Interface나 컴포넌트를 활용해서 Type으로 찾아오는 편이 더 활용도가 높을 수도 있다.
동일한 동작을 수행한다면 양이 몇개가 되든 상관없이 Interface를 상속받은 객체를 List형태로 저장해놓고 필요할 때 순회하며 실행시키면 편하게 만들 수 있다.