如何在C#XNA中创建Wait()方法?

如何在C#XNA中创建Wait()方法?,c#,xna,boolean,wait,C#,Xna,Boolean,Wait,我试图在我的游戏中加入“吸引”模式,为此我需要告诉角色在移动前等待(这样我就可以在屏幕上显示文本)。我决定使用Wait方法发送以下参数 public bool Wait(int waitTime, GameTime gameTime) { // Wait Code } 代码将存储调用它的时间,以毫秒为单位等待指定的时间,然后在时间过去后返回true 然而,我不知道如何使游戏时间只存储在第一次调用Wait时(或者bool从不标记为true)。我想我可以制作

我试图在我的游戏中加入“吸引”模式,为此我需要告诉角色在移动前等待(这样我就可以在屏幕上显示文本)。我决定使用Wait方法发送以下参数

    public bool Wait(int waitTime, GameTime gameTime)
    {
        // Wait Code
    }
代码将存储调用它的时间,以毫秒为单位等待指定的时间,然后在时间过去后返回true

然而,我不知道如何使游戏时间只存储在第一次调用Wait时(或者bool从不标记为true)。我想我可以制作内部bool来处理标记,但我不确定如何以动态/可重用的方式编程


非常感谢您的帮助,并对本文表示歉意 我解决了一个类似的问题。以下是片段:

private static readonly TimeSpan intervalBetweenAttack1 = TimeSpan.FromMilliseconds(3000); 
private TimeSpan lastTimeAttack;
和可更新对象的内部Update()

public override void Update(GameTime gameTime)
{
      // If enough time has passed attack
      if (lastTimeAttack + intervalBetweenAttack < gameTime.TotalGameTime)
      {
           Attack();
           lastTimeAttack = gameTime.TotalGameTime;
      }
}
公共覆盖无效更新(游戏时间游戏时间)
{
//如果足够的时间过去了,就发动进攻
如果(lastTimeAttack+IntervalBetweenAtack

这是人工智能的简化代码。它每3秒攻击一次。如果您只想攻击一个,可以添加bool hassatted=false;然后只需在Update()中选中它,就可以创建一个计时器类。你会在哪里做类似的事情 定时器t=新定时器(3000f)//获取一个值,该值表示计时器运行的时间

触发因素:

t.Start();
更新方法:

if(!t.IsActive)
{
    //Player updates here
}
else
    t.Update(gameTime);
等待方法:

public void Wait()
{
    if(t.IsActive)//set by the .start method
    {
        if(t.isComplete)
        {
             //do some stuff
             t.Stop();
        }
        else
        {
            //we're still timing, nothing to do here
        }
    }
}
这是非常粗糙的,是用记忆写的,所以不完全确定这是否对你有帮助

因此,在timer类中,它在更新期间递增,如果跟踪浮点值(比如currentTime+=gameTime.elapsedgametime.毫秒)大于存储的总时间,则将计时器标记为IsComplete=true,如果为true,则停止计时器运行


因此,每当计时器运行时,移动不会发生。

看看线程。睡眠,

这在Xna中不是一个选项,因为你必须继续游戏循环。如果角色移动是在一个单独的线程上完成的,这将是一个选项,但这可能是你能做的最肮脏的操作。很可能不是。但问题是,这当然是可能的,但我认为任何人都不会提出建议。