gpt4 book ai didi

c# - DrawableGameComponent 作为库,内容如何处理?

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:30 29 4
gpt4 key购买 nike

我正在尝试为我的游戏创建一个模块,我的想法是能够在我的所有游戏中使用它。

所以我的 lib 项目有自己的内容文件夹,一切都很好,但它与宿主项目的内容文件夹崩溃了。

这是我的组件(它是它自己的项目,我引用链接到宿主项目(手机应用程序)):

namespace FPSComponent
{
public class FPS : DrawableGameComponent
{
private SpriteBatch spriteBatch;

SpriteFont normal;
Texture2D headerBackground;

public FPS(Game game)
: base(game)
{
spriteBatch = new SpriteBatch(Game.GraphicsDevice);

string tempRootDirectory = Game.Content.RootDirectory;
Game.Content.RootDirectory = "FPSComponentContent";

headerBackground = Game.Content.Load<Texture2D>("header-background");

normal = Game.Content.Load<SpriteFont>("normal");

//Game.Content.RootDirectory = tempRootDirectory; <-- does not work
}

public override void Update(GameTime gameTime)
{
// TODO: Add your update logic here

base.Update(gameTime);
}

public override void Draw(GameTime gameTime)
{
//GraphicsDevice.Clear(Color.CornflowerBlue);

spriteBatch.Begin();

spriteBatch.Draw(headerBackground, Vector2.Zero, Color.White);

spriteBatch.DrawString(normal, "FPS COMPONENT", new Vector2(20, 20), Color.White);

spriteBatch.End();

base.Draw(gameTime);
}
}
}

我想做的是创建一个独立的组件来导入我的项目,这主要是为了学习目的......而不是一个有效的 FPS 示例 atm :-)

最佳答案

我认为您必须阅读这篇文章Content Pipeline MSDN

重点是,当您在 visual studio 上按 F5 键时,它会编译您的项目和您的 Assets 。

通过使用 Game.Content.Load<Texture2D> XNA 将尝试找出一个 .xnb

当 visual studio 在编译你的项目时,他正在将你的 .xnb 创建到一个特定的 forlder 中。

您并没有真正将 .png 或 .jpg 文件直接加载到您的游戏中:)

您必须首先将您的新 Assets 编译成 .xnb 文件(一种序列化过程)

这是一个类似的问题 https://gamedev.stackexchange.com/

关于c# - DrawableGameComponent 作为库,内容如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13570075/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com