gpt4 book ai didi

c# - 定时器在自身之上绘制,不清除

转载 作者:太空宇宙 更新时间:2023-11-03 16:21:19 26 4
gpt4 key购买 nike

有趣的问题!基本上我的 UI 有一个计时器,它从 99 开始倒计时。除了在旧时间之上绘制新时间之外,一切正常。 (之前的时间没有清除)虽然在 GameplayScreens 绘制调用中发生了明显的事情......它只是很奇怪。

这是我的相关函数:

GameplayScreen.cs(或我们常用的 Game1)

public override void Update(GameTime gameTime)
{
m_GameUI.Update(gameTime);
m_GameCam.lookAt(m_Hero.Position);//feeds the camera's lookAt function the players vector2 position
m_GameUI.lookAt(m_GameCam.Position); //Look at the camera's position :D
}

public override void Draw(GameTime gameTime)
{

ScreenManager.GraphicsDevice.Clear(ClearOptions.Target,
Color.CornflowerBlue, 0, 0);

SpriteBatch spriteBatch = ScreenManager.SpriteBatch;

m_BackgroundManager.Draw(spriteBatch, m_GameCam);
//Begin the Spritebatch Drawing
spriteBatch.Begin(SpriteSortMode.Immediate, null,
null,
null,
null,
null, m_GameCam.ViewMatrix);

//Call EntityManager.DrawAllEntities()
EntityManager.Instance.DrawAllEntities(gameTime, spriteBatch);

//End the spritebatch drawing
spriteBatch.End();

spriteBatch.Begin();
m_GameUI.Draw(gameTime, spriteBatch);
m_PlayerUI.Draw(gameTime, spriteBatch);
spriteBatch.End();
}

GameUI.cs

SpriteFont m_Font;
double m_Timer;

public virtual void Update(GameTime gameTime)
{

m_Timer -= gameTime.ElapsedGameTime.TotalSeconds;

}

public virtual void Draw(GameTime gameTime, SpriteBatch spriteBatch)
{

spriteBatch.Draw(UITexture, Position, Color.White);
spriteBatch.DrawString(m_Font, "" + (int)m_Timer + "", new Vector2(380, 45), Color.White);
}

最佳答案

最终成为一个非常愚蠢的错误,我有一个派生自调用 base.draw() 的 UI 的类,因此更新的时钟和原始值都同时显示在屏幕上。基本上代码设计不好,每个人刚开始都是新手吧?

感谢您的关注:)

关于c# - 定时器在自身之上绘制,不清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13791106/

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