2017-01-23 1 views
2

방금 ​​MonoGame을 시작했습니다. 프로그램을 실행할 때마다 자산이 아닌 파일로 오류를로드 할 수 없습니다. 나는 웹을 검색해 왔고 내 문제에 대해서는 아무 것도 발견하지 못했다. 도와주세요!Monogame : 비 콘텐츠 파일로 자산을로드 할 수 없습니다.

using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Graphics; 
using Microsoft.Xna.Framework.Input; 

namespace MoveDemo 
{ 

public class MainGame : Game 
{ 
    GraphicsDeviceManager graphics; 
    SpriteBatch spriteBatch; 
    Texture2D mainmenu; 

    public MainGame() 
    { 
     graphics = new GraphicsDeviceManager(this); 
     Content.RootDirectory = "Content"; 
    } 


    protected override void Initialize() 
    { 

     base.Initialize(); 
    } 

    protected override void LoadContent() 
    { 
     spriteBatch = new SpriteBatch(GraphicsDevice); 
     mainmenu = Content.Load<Texture2D>("MainMenu"); 
    } 

    protected override void UnloadContent() 
    { 
    } 


    protected override void Update(GameTime gameTime) 
    { 
     if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) 
      Exit(); 


     base.Update(gameTime); 
    } 


    protected override void Draw(GameTime gameTime) 
    { 
     spriteBatch.Begin(); 
     spriteBatch.Draw(mainmenu, new Rectangle(0, 0, 840, 480), Color.White); 
     spriteBatch.End(); 

     base.Draw(gameTime); 
    } 
} 
} 
+0

콘텐츠 파이프 라인 도구를 통해 파일을 추가하고 빌드했다고 가정합니다. – Olivier

답변

1

Visual Studio에 MainMenu의 내용을 알려주고 복사 했습니까? 내 경우

enter image description here

의 CarBlue 콘텐츠 아래 Graphics 폴더에 있기 때문에 나는이 라인로드 : @SBurris 말한다처럼

blueCarSprite = Content.Load<Texture2D>(@"Graphics\CarBlue"); 
2

당신은 확실히 그것을 할 수 있지만, 문제에 대한 더 간단하고 전반적으로 더 나은 해결책을 제안합니다.

원인 :

Visual Studio에서 프로젝트를 디버깅하려고하면 ContentLoadException이 표시되어 자산을 비 컨텐츠 파일로로드 할 수 없다는 메시지가 나타납니다. content file은 무엇입니까? content file은 컴파일 된 자산이 들어있는 이진 파일이며 .xnb 확장자를가집니다. 이 같은 자산의 경로 (예 : 질감) 지정하는 경우 :

protected override void LoadContent() 
{ 
    this.Content.Load<Texture2D>("path/to/myTexture"); 
} 

당신은 실제로 텍스처의 .png 파일에 연결되지 않습니다, 오히려 당신은 당신이 필요로하는 데이터를 보유하고있는 .xnb 내용 파일에 링크 . 예외는 지정된 디렉토리에 내용 파일 (.xnb)이 없다는 것을 알려줍니다.

솔루션 :

그래서 단순히 MonoGame Content Builder/Pipeline tool를 열고이 문제를 해결하려면 프로젝트의 디렉토리에 Content라는 폴더에 있습니다. 파이프 라인 도구 자체는 Content (또는 Content.mgcb)이라고도하며 MonoGame의 주황색 로고가 아이콘으로 사용됩니다.

이 작업을 완료하면 Content Project (기본값 : Content)에 필요한 자산을 마우스 오른쪽 버튼으로 클릭하여 -> Add -> Existing Item에 추가합니다.

그리고 나서 저장하고 완료하십시오! 잘못된. 콘텐츠 파일을 컴파일하고 사용할 준비가 되려면 먼저 create해야합니다. Build menu을 클릭하고 Build을 선택하거나 키보드에서 F6 키를 눌러 수행 할 수 있습니다.

asset filecontent file으로 컴파일하면 게임을 읽을 준비가됩니다.

XNA : 처음 MonoGame로 시작했을 때, 나는 마이크로 소프트의 XNA와 경험이 내가 MonoGame 프로젝트에 자산을 추가로 다른 접근 방식을 활용 것을 알았을 때, 나는 당신처럼 같은 문제가 있었다

. 그 이유는 내가 간단하게 Add -> Existing item에 XNA 방식으로 익숙해 져서 잊어 버렸기 때문입니다. Visual Studio는 나를 위해 자산 파일을 자동으로 컴파일합니다.MonoGame의 경우 더 이상 그렇지 않습니다. 따라서 에서 Content Project을 작성해야합니다.

건배!

관련 문제