추리게임을 가장한 비주얼 노벨이다보니 장소 이동에 따라 변경되어야 할 것들이 많이 있다.
장소와 시간대를 기준으로 하여 Canvas를 구성하여 하이어라키에 모두 올려놓자는 얘기도 있었지만, 그렇게 하면 로딩할 때 손해가 많다는 점을 생각하여 기존에는 없던 상태로 진행하다가 필요에 따라 Load하고, 한 번 만들어지면 파괴하지 않고 재사용하는 방향으로 진행했다.
현재는 리소스 부분이 아직 부족하여 실제로 구성하지는 못 하였고, 생각나는 데로 메서드만 구성해보았는데 걔중에서 오래 생각했거나 중요하다고 생각하는 부분을 정리해본다.
private void OnEnable()
{
interactList = gameObject.GetComponentsInChildren<INteractableObject>();
}
처음에는
Transform.interactList = FindObjectsOfType<INteractableObject>();
를 사용했지만, 이렇게 사용하면 전체 하이어라키창을 검색한다고 한다.
따라서 하위 오브젝트만 탐색하기 위해서는 자식 오브젝트의 컴포넌트를 가져와 저장한 다음. 그 오브젝트의 gameObject에 접근하는 것이 편하다.
평소에 AddListener만 사용했지만, 이번에는 Canvas를 여러개 사용함에 따라 RemoveListener도 사용할 예정이다.
interactList[i].GetComponent<Button>().onClick.AddListener(()
=> 사용할 메서드(매개변수 : out에 있는 데이터를 가지고 있는 스크립트에서 꺼내쓸 것));
지난번에 만든 DialogueManager의 StartDialogue가 string으로 매개변수를 받기때문에 그에 맞게 리스너를 구독시켜야 한다.