首页 > 解决方案 > 如何为服务器上的每个用户运行计时器

问题描述

我正在开发简单的游戏服务器,它应该像这样工作:

  1. 用户连接到服务器并启动计时器,将变量 Quest 设置为 true
  2. 计时器将倒计时 X 秒
  3. 用户可以断开与服务器的连接,然后从相同或不同的设备再次连接以检查计时器进度(如果变量 Quest == true,则任务正在进行中)
  4. 当计时器到达 0 时,它会将 Quest 设置为 false

服务器应该同时处理多个用户。

我的问题:我已经完成了第 1 部分和第 2 部分,但我不知道如何将变量连接到某个用户名。任何帮助,将不胜感激

标签: c#server

解决方案


如果您目前有类似的东西:

class GameServer {
    Timer questTimer;
    bool quest;
    // ...

那么您可能希望将该全局状态封装到每个玩家自己的类中:

class PlayerState {
    Timer questTimer;
    bool quest;
}

Dictionary为每个玩家的状态设置一个以玩家姓名为键的键:

class GameServer {
    Dictionary<string, PlayerState> states = new Dictionary<string, PlayerState>();
    // ...

操纵字典超出了这个问题的范围——上面链接的文章应该会给你一些想法。


推荐阅读