2013-05-01 6 views
0

spriteBatch()가 나와 "클릭"하지 않으므로 내 머리카락을 찢을 준비가되었습니다. 나는이 정확한 상황에서 나의 사용을 다루는 온라인을 찾을 수 없다. 나는 믿을 수 없을만큼 간단한 것을 놓치고 있다고 믿게한다.다른 클래스의 Xna spriteBatch

놀랍게도 플레이어, 물리학 등을 제어하는 ​​XNA 프로젝트의 플레이어가 있는데, 한 번에 한 단계 씩 진행합니다. 첫 단계 : 레벨에서 플레이어를 그립니다. 레벨 코드는 훌륭하게 작동합니다. 걱정할 필요가 없습니다. 하지만 나는 선수를 끌 수 없습니다.

필자가 페인트로 그린 스프라이트에 대한 기본적인 Texutre2D 텍스처가 있습니다. this 튜토리얼로가는, 난 그냥 다음을 수행 할 수 있어야한다 :

public void LoadContent() 
    { 
     spriteBatch = new SpriteBatch(GraphicsDevice); 
     playerSprite = Level.Content.Load<Texture2D>("player/pory"); 

    } 

public void Draw() 
    { 
     graphics.GraphicsDevice.Clear(Color.Beige); 

     // Draw the sprite. 
     spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend); 
     spriteBatch.Draw(playerSprite, Position, Color.White); 
     spriteBatch.End(); 

    } 

그리고 그것은 단지 작동합니다. 하지만. 나는이 플레이어 클래스에서 몇 가지를 놓치고있다. 1) LoadContent()에서 GraphicsDevice이 존재하지 않고 그냥 만들 수 없기 때문에 new SpriteBatch()을 만들 수 없습니다. Game.cs에 나타나며 게임 자체를 의미하는 this으로 초기화됩니다. 괜찮아. 하지만 Game.GraphicsDevice도 참조 할 수 없습니다.

기본적으로 전체 문제입니다. 그 밖의 모든 것은이 때문입니다. 나는 그 길을 찾을 수 없다. 아무도 시도하고 이것을 할 수있는 적절한 방법을 알고 있습니까? 이 기능을 제대로 사용하기 위해 내가 누락 된 부분을 정확하게 찾을 수없는 것 같습니다.

+0

이 코드는 Player.cs의 일부이며, 프로젝트 내에있는 자체 파일입니다. – Eric

+0

정확한 문제 때문에 귀하의 드로어 코드가 플레이어 클래스에 있어서는 안됩니다. 모든 렌더링 코드는이 목적을 위해 설계된 클래스를 사용해야합니다. 이 클래스는 하나의 인스턴스와 this.GraphicsDevice와 같은 필요한 객체에 대한 참조 만 가져야합니다. – ClassicThunder

답변

1

가장 쉬운 방법은 Game 클래스 내에 생성 할 때 Player 클래스에 GraphicsDevice 및 SpriteBatch 인스턴스를 생성자에서 전달하는 것입니다.

player = new Player(graphicsDevice, spriteBatch);