ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 게임 서비스 만들기
    Programing/XNA 2009. 3. 30. 00:00

    XNA에서는 게임컴포넌트를 생성하여 여러 가지 항목들을 놀리적으로 분리시킬 수 있게 하여 코드 관리를 쉽게 하였다.
    하지만 만약 여러 게임컴포넌트가 동일한 기능들에 접근해야 할 경우나 다른 게임컴포넌트 긴응에 접근해야 할 경우는 문제가 될 수 있다.

    예를 들어 입력처리 게임컴포넌트가 있고, 게임플레이어 컴포넌트가 있다고 가정하면, 이 플레이어는 키를 입력받을때 마다 입력 처리기 컴포넌트로 접근을 해야된다.

    이를 위해서 입력처리 게임컴포넌트는 게임 서비스로 등록 시켜주는 것이 좋은 코딩이다.

    Game 개체는 여러 가지 서비스들을 가지고 있는데 대표적으로 GraphicsDevice가 그것이다.

    GraphicsDeviceManager graphics = (GraphicsDeviceManager)Game.Services.GetService(
                    typeof(IGraphicsDeviceManager));

    위 코딩은 그래픽장치의 게임 서비스를 얻어오는 구문이다.
    게임컴포넌트들은 언제나 Game 개체를 인자로 전달받으므로 모든 게임컴포넌트는 게임이 가지는 모든 게임 서비스들에 접근할 수 있다.
    바로 위의 구문이 그것의 예인거다.

    그렇다면 게임 서비스를 만드는 방법은 무엇일까?

    일단 게임 서비스를 만드는 첫 번째는 인터페이스를 만드는 것이다.
    게임 서비스는 특정 인터페이스를 하나만 가질 수 있는데 게임 서비스를 반환해 달라는 요청을 받을 때 어떤 개체를 반환해야 하는지 알기 위해서 이다.
    예를 들어 입력에 관련한 게임 서비드를 등록하기 위해서는 아래와 같은 인터페이스를 하나 생성할 수 있다.

    public interface IInputHandler { };

    이 인터페이스 안에는 속성, 메서드, 이벤트등등이 들어갈 수 있다.

    인터페이스를 만들었다면 이젠 인터페이스로 부터 게임컴포넌트를 상속받아야 한다.


    public class InputHandler : Microsoft.Xna.Framework.GameComponent, IInputHandler


    이젠 마지막으로 게임의 서비스 컬렉션에 이 서비스를 추가하는 것이다.
    예를 들면 아래와 같다.

    game.Services.AddService(typeof(IInputHandler), this);

    추가하고자 하는 개체의 인터페이스 형식과 실제 개체를 매개변수로 전달하는 것이다.

    위의 과정으로 간단하게 게임서비스를 만들고 등록할 수 있다.




    'Programing > XNA' 카테고리의 다른 글

    SpriteBatch.Draw 메서드  (0) 2009.04.10
    ElapsedGameTime, ElapsedRealTime  (0) 2009.04.09
    XNA 카메라 설정  (0) 2009.04.02
    VertexPositionNormalTexture 구조체  (0) 2008.09.09
    XNA 프레임워크의 로직 흐름  (0) 2008.08.19
    Matrix Methods  (0) 2008.08.19
    XNA 이펙트  (0) 2008.08.13
Designed by Tistory.