의 인스턴스의 이름 난이에 stucked있어 : (XNA, 비주얼 기본 2010) 메인 클래스
내가 (예를 들어) 모든 벽의 목록 GAME1라는 메인 클래스가 두 번째 클래스의 공. 볼 클래스에서 충돌 감지를하고 있습니다. Game1 클래스의 벽 목록에 액세스해야하지만 어떻게 Game1 클래스의 인스턴스가 아직 없는지 알 수 없으며 이름을 알 수 없습니다.희망 설명이 충분합니다.
의 인스턴스의 이름 난이에 stucked있어 : (XNA, 비주얼 기본 2010) 메인 클래스
내가 (예를 들어) 모든 벽의 목록 GAME1라는 메인 클래스가 두 번째 클래스의 공. 볼 클래스에서 충돌 감지를하고 있습니다. Game1 클래스의 벽 목록에 액세스해야하지만 어떻게 Game1 클래스의 인스턴스가 아직 없는지 알 수 없으며 이름을 알 수 없습니다.희망 설명이 충분합니다.
Game1
클래스는 Program
클래스로 인스턴스화됩니다. 볼 클래스를 생성하는 동안 생성자의 볼에 게임을 전달할 수 있습니다. 당신은 벽의 목록을 전달하려는 경우
public class Ball
{
Game1 myGame;
public Ball(Game1 _theGame)
{
myGame = _theGame;
}
}
public class Game1 : Game
{
Ball ball;
public override LoadContent()
{
// construct the ball with THIS.
ball = new Ball(this);
}
}
는, 어쩌면 어떤 종류의 WallManager
라는 클래스를 고려하고 대신 전체 게임의, 당신의 공 클래스에 THAT를 전달합니다.
편집 :
또는 클래스가 GameComponent
경우, 당신은 구성 요소의 Game
을 요청할 수 있습니다. 하지만 이것은 게임의 구성 요소에 볼 인스턴스를 추가하고 업데이트 기능을 제공해야하기 때문에 좋지 않습니다. 그리고 게임을 게임에 던져야합니다 1.
예 :
class Game1 : Game
{
Ball ball;
public override LoadContent()
{
ball = new Ball();
this.Components.Add(ball);
}
}
class Ball: GameComponent
{
public override Update()
{
// ugly example
List<Wall> walls = ((Game1)this.Game).Walls;
}
}
Marnix, 답장을 보내 주셔서 감사합니다. 첫 번째 솔루션이 작동합니다. 정말 기쁩니다. 인사말 : 체코 공화국 –
내 대답이 마음에 들면 수락 버튼을 눌러이 질문을 닫을 수 있습니다. – Marnix
에 인스턴스가없는 경우 다음에 액세스 할 수 없습니다 인스턴스 멤버. 만약 그 클래스의 인스턴스가 하나 이상 존재하지 않는다면 멤버는'Shared'이어야합니다.이 경우에는 Game1.Walls를 사용하여이리스트에 접근 할 수 있습니다. –