为什么会一直这样?我研究它并且知道它们有帮助。 代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Security.Policy;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
namespace Pratice
{
public class CharacterClass
{
public Texture2D texture;
public Vector2 position, velocity;
public Rectangle SourceRect;
public string path;
public bool HasJumped;
public CharacterClass()
{
HasJumped = false;
position = new Vector2();
texture = null;
}
public void Initialize()
{
}
public void LoadContent(ContentManager Content)
{
path = "Character/BlueAnvil";
texture = Content.Load<Texture2D>(path);
}
public void Update(GameTime gameTime)
{
position += velocity;
//input Controls
KeyboardState keyState = Keyboard.GetState();
if (keyState.IsKeyDown(Keys.A))
position.X -= 5f;
if (keyState.IsKeyDown(Keys.D))
position.X = 5f;
if (keyState.IsKeyDown(Keys.Space) && HasJumped == false)
{
position.Y -= 10f;
velocity.Y = -5f;
HasJumped = true;
}
if (HasJumped == true)
{
float i = 1;
velocity.Y += 0.15f*i;
}
if (position.Y + texture.Height >= 450)
HasJumped = false;
if (HasJumped == false)
velocity.Y = 0f;
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(texture, position, Color.White);
}
}
}
我需要得到这个修复,所以我能记住它。了解如何做到这一点我需要帮助来做到这一点。所以我需要帮助,了解我做错了什么。
答案 0 :(得分:7)
正如Nahuel Ianni在回答中所说,游戏从内容目录加载内容文件。因此,所有内容都应放在Content目录中。
换句话说,它所看到的实际路径是&#34; Content / Character / BlueAnvil&#34;。确保将文件放在正确的目录中。
可能由此产生的其他问题是,如果您使用的是Visual Studio,则可能无法将文件复制到输出中。您需要选择文件并打开属性,然后选择复制到输出并将其设置为更新或始终。
最后,文件本身有文件格式。如果它不是.xnb,则不太可能被接受。 .xnb文件由XNA或Monogame内容管道项目创建。在XNA中,所有文件都必须转换为此格式,但Content Pipeline会为您执行此操作。 在Monogame中,有些文件可以直接加载,但它们因操作系统而异。我不记得接受了.png和.wav文件。我无法回想起其他接受的文件格式,并且无法找到我上次搜索时看到的便携式桌面。
因此,游戏实际上要加载的是&#34; Content / Character / BlueAnvil.xnb&#34; 或&#34; Content / Character / BlueAnvil.png&#34;
答案 1 :(得分:5)
您的游戏应该在项目中有一个“内容”目录。在该目录中,您应该放置内容资源,例如图像 - BlueAnvil.png。然后你应该在游戏ctor中设置一个设置,你将内容目录设置为“内容”:
Content.RootDirectory = "Content";
之后在游戏的LoadContent()
方法中,您必须加载资源:Content.Load<Texture2D>("Character/BlueAnvil")
并且如果您已将BlueAnvil文件设置为内容,则应提取纹理,如上所述。在构建项目时,XS应该执行“优化PNG”步骤。
内容文件夹最终位于资源包中,monogame将提取该资源包,并从中创建您请求的Texture2D对象。
答案 2 :(得分:4)
我的内容文件夹中的单个jpg文件出现此问题。我将该文件的“复制到输出目录”属性更改为“如果更新则复制”右键单击图片 - 属性
答案 3 :(得分:-1)
我在代码中看到一个问题。路径变量的字符串结构包括正斜杠:
path = "Character/BlueAnvil"
修订:
path = "Character//BlueAnvil"
或
path = @"Character/BlueAnvil"