是否可以将函数调用及其参数排队以便以后调用?

时间:2018-12-26 18:10:03

标签: c# function parameters tolist

有没有一种方法可以在播放器离线时将函数调用及其变量参数存储到数据库中,并在播放器重新联机时再次调用它们。

嗨!我正在开发一个新游戏(unity c#),该游戏的玩家在接待很少的地方行走。播放器找到代码字并将其输入到字段中以解锁内容。同时,我想为每个用户记录触发的代码字。问题是会话期间连接可能会丢失。每次断开连接时,我都设法将功能排队,但播放器在断开连接时每次输入代码字,但在再次收到信号后,播放器仅发送最后一个条目。 非常感谢您的帮助!

public void NotConnected()
{
        CallsOnQueue.Add( () => StartCoroutine(TestCodeword())); 
}

public void BackOnline()
{
        if (CallsOnQueue.Count == 0)
        {
            LookforCodewordInDB();
        }    
        else
        {
            foreach (Action item in Callsonqueue)
                StartCoroutine(TestCodeword(teamname, codeword, city, date));

        }
        Callsonqueue.Clear();
}

2 个答案:

答案 0 :(得分:-1)

我认为,最有意义的方法是将功能作为对象存储在数据库中,然后再检索它。

public class MyFunction{
     string FuncionName { get; set; }
     public string Param1 { get; set; }
     public string Param2 { get; set; }
     //more params
}

然后您可以使用比较运算符来调用适当的方法。

switch (storedFunction.FunctionName)
{
     case "myFunction":
         myFunction();
}

答案 1 :(得分:-1)

在我看来,除了您的foreach循环之外,您的代码还不错。

您将为每个元素启动相同的协程,而不是调用存储的操作!

将代码更改为此

foreach (Action item in Callsonqueue)
                item.Invoke():