코드에 순환 의존성이 있으며 해결 방법을 모르겠습니다.C# :이 순환 종속성을 해결하는 방법은 무엇입니까?
나는 게임을 개발 중이다. NPC에는 사고, 감지 및 행동을 담당하는 세 가지 구성 요소가 있습니다. 이러한 구성 요소는 모델에 액세스하기 위해 NPC 컨트롤러에 액세스해야하지만 컨트롤러는 이러한 구성 요소를 필요로합니다. 따라서, 둘 다 그들의 생성자에서 인수로서 서로를 취한다.
ISenseNPC sense = new DefaultSenseNPC(controller, worldQueryEngine);
IThinkNPC think = new DefaultThinkNPC(sense);
IActNPC act = new DefaultActNPC(combatEngine, sense, controller);
controller = new ControllerNPC(act, think);
은 (위의 예는. 조금 단순화 매개 변수가 있습니다) 아무것도 할 수 없습니다 act
및 think
없이
, controller
, 그래서 나는 그들없이 초기화하는 것을 허용하지 않습니다. 반전은 기본적으로 마찬가지입니다. 어떻게해야합니까?
public class ControllerNPC {
// ...
public override void Update(long tick)
{
// ...
act.UpdateFromBehavior(CurrentBehavior, tick);
CurrentBehavior = think.TransitionState(CurrentBehavior, tick);
}
// ...
}
DefaultSenseNPC
은 아무것도 충돌하는 것 있는지 확인 controller
를 사용하여 : 세계에서 그 상태를 업데이트 할 think
및 act
를 사용하여
ControllerNPC
public class DefaultSenseNPC {
// ...
public bool IsCollidingWithTarget()
{
return worldQuery.IsColliding(controller, model.Target);
}
// ...
}
자신 만의 솔루션을 개발 했습니까? – Budda