Блокирующие функции в XNA - PullRequest
       5

Блокирующие функции в XNA

0 голосов
/ 15 ноября 2010

В настоящее время я пишу RPG-движок в XNA. Движок выполняет серию команд сценариев, но должен блокироваться до следующей команды сценариев. Как я могу это сделать?

Например:

// 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 Ответ

1 голос
/ 16 ноября 2010

Вы не хотите использовать темы для такого рода вещей.Они слишком тяжелые.

То, что вы действительно хотите, это совместные процедуры.Вы можете эмулировать их в C #, используя yield и итераторы.

Есть несколько примеров здесь и здесь .И, возможно, мой ответ здесь тоже стоит прочитать.

C # 5.0 представляет гораздо более приятный способ выполнения асинхронного программирования, подобного этому. Вот видео , а вот ОСАГО .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...