Java 게임 엔진의 기본 사항을 다루면서 Event Manager 시스템에 추가 할 수있는 시점에 도달했습니다.
나는 알고있다, 이론적으로 , 이벤트 관리자가해야 할 일 :에 객체가 특정 이벤트에 대해 "등록"을 허용하고, 이벤트 관리자가 이벤트를 통지됩니다 때마다 "등록"리스너에 이벤트를 방송. 내가 겪고있는 것은 그것을 구현하는 방법입니다.
온라인에서 이벤트 시스템을 처음부터 구현하는 것에 대해 아무것도 찾을 수 없었 으므로이 경우 모범 사례가 무엇인지, 내가 해야 하고 하지 않아야 할 것에 대한 정보를 찾고 있습니다.
예를 들어, 각 게임 오브젝트마다 EventManager
필드 가 있어야 합니까? 모든 게임 오브젝트가 하나의 추상 상위 클래스에서 상속되므로 모든 게임 오브젝트간에 공유되는 이벤트 관리자 인스턴스가 하나만 있도록 정적 참조를 사용할 수 있어야한다고 생각합니다. 애플릿을 사용하여 이미 각 객체를 렌더링하는 데 사용하는 비슷한 작업을 수행합니다.
필자는 구독 가능한 각 이벤트에 대해 일종의 컬렉션을 유지 관리해야한다고 가정합니다. 필요에 따라 게임 개체를 목록에서 추가 및 제거합니다. 브로드 캐스트해야하는 이벤트 대기열을 만드는 것이 가능해야한다고 생각합니다.이 경우 "EventManager.Update ()"를 메인 게임 루프에 추가하고 Update()
메소드가 마지막에 발생한 이벤트를 브로드 캐스트 할 수 있습니다. 각 프레임의. 마지막으로 각 객체에는 HandleEvent(Event e)
적절한 구문 분석 및 응답 이 가능한 방법 이 있습니다 .
이것이 그러한 시스템을 구현하기위한 적절한 방향으로 들리나요, 아니면 궤도에서 벗어나거나 명백한 것을 놓치고 있습니까?