阻止XNA中的功能

时间:2010-11-15 16:54:56

标签: c# xna

我正在编写XNA中的RPG引擎。引擎执行一系列脚本命令,但必须阻塞直到下一个脚本命令。我怎么能这样做?

例如:

// interact with an NPC named in String 'Name'
String interactfunc = String.Format("{0}_Interact", Name);
System.Reflection.MethodInfo info = Factory.Script.GetType().GetMethod(interactfunc);
if (info != null) info.Invoke(Factory.Script, new object[]{this});

//this may run the following script command for NPC 'Bob'

    public void Bob_Interact(NPC Bob)
    {
        Bob.Say("Well this worked.");
        Bob.Say("Didnt it?");
    }

//the say command looks like this

    public void Say(String Text)
    {
        TalkGui gui = new TalkGui(this, Text);


        Factory.Game.Guis.Add(gui);
        Factory.FocusedGui = gui;

    }

现在我需要脚本等待,直到第一个TalkGui被解雇,然后再运行下一个脚本命令。

最好的方法是什么?也许在他们自己的线程中运行脚本函数?

1 个答案:

答案 0 :(得分:1)

您不希望将线程用于此类事情。他们的体重太重了。

你真正想要的是合作惯例。您可以使用yield和迭代器在C#中模拟这些。

有一些示例herehere。也许我的回答here也值得一读。

C#5.0引入了一种更好的异步编程方式。 Here's a videohere is the CTP