먼저 막연하게 보일 수도있는 질문을 사과하겠습니다.하지만 좀 더 구체적으로 묻는 경험이 없습니다.C# 2D 게임에서 객체의 구조
저는 C#에서 2D 어드벤처 게임 (you-click-on-an-object-and-happen-happen sort)을 수행하기위한 엔진을 구축하고 있습니다. 당신이 상상할 수 있듯이, 당신이 물건과 상호 작용할 때 다른 일이 일어날 수 있습니다. 그것이 문이라면, 다른 방에 들어가기를 기대합니다. 사람이라면, 당신은 그들과 이야기하기를 시작할 것입니다. 제 생각은이 행동을 성취하는 것입니다. 이 같은 대표로 :
나는 그것의 클래스에 포함되지 어떤 행동과 특별한 개체를 만들려면 때문에 나는이 솔루션 기품 찾을public abstract class GameObject {
public delegate void onAction();
public onAction Click;
}
public class Door : GameObject {
public Door() {
Click = new onAction(ChangeRoom);
}
private void ChangeRoom() {
//code to change room here
}
}
public class Person : GameObject {
public Person() {
Click = new onAction(StartTalking);
}
private void StartTalking() {
//code to display dialogue here
}
}
, 나는 단순히이 작업을 수행 할 수 있습니다
specialObject.Click += new onAction(SpecialMethod);
그러나 이것은 또한 복잡한 일입니다. 내 엔진이 엔진 자체를 변경하지 않고 다른 데이터를로드하여 다른 게임을 수행 할 수 있기를 원합니다. 따라서 엔진 내부의 SpecialMethod를 하드 코딩하는 것은 옵션이 아니며 데이터의 일부 여야합니다. 일반 객체의 경우 직렬화를 통해 모두 수행 할 수 있지만 읽은 내용은 대리자와 관련하여 문제가됩니다. 그것을 할 수있는 방법을 제안 해 주시겠습니까?
피고 : 아직 개념 수준에 있고 위의 코드가 아직 구현되지 않았기 때문에 최상의 결과를 얻을 수있는 솔루션을 제안 할 수 있으며 심지어 대리인을 완전히 피할 수 있습니다.
는
규칙 엔진을 설명하는 것처럼 들리네. http://martinfowler.com/bliki/RulesEngine.html – Jodrell
이 질문을 http://gamedev.stackexchange.com/ – Luca
에 게시 할 수 있습니다. @luca에 감사드립니다. 링크. 언뜻보기에는 분명하지만,이 포럼은 나보다 조금 더 프로 보입니다. –