【问题标题】:Unity Steamworks-LeaderboardUnity Steamworks-排行榜
【发布时间】:2017-01-05 21:46:32
【问题描述】:

我创建了一个游戏内记分板,我希望您能够在其中看到连接到服务器 Steam 用户名的玩家。到目前为止,我已经创建了记分牌和所有内容,现在唯一的事情就是让 Steam 用户名显示,而不是我的“玩家名称在此处”文本。我已经尝试了几件事,但没有成功:(

这是记分牌脚本:

[SerializeField]
GameObject playerScoreboardItem;

[SerializeField]
Transform playerScoreboardList;

void OnEnable()
{
    Player[] players = GameManager.GetAllPlayers();

    foreach(Player player in players)
    {
        GameObject itemGO = (GameObject)Instantiate(playerScoreboardItem, playerScoreboardList);
        PlayerScoreboardItem item = GetComponent<PlayerScoreboardItem>();
        if(item != null)
        {
            item.Setup(SteamFriends.GetPersonaName());
        }
    }
}

void OnDisable()
{
    foreach(Transform child in playerScoreboardList)
    {
        Destroy(child.gameObject);
    }
}

}

这是 ScoreboardItem 脚本:

    [SerializeField]
Text usernameText;

public void Setup(string username)
{
    usernameText.text = SteamFriends.GetPersonaName();
}

}

最后一个脚本:

            string username = SteamFriends.GetPersonaName();

        CmdSetUsername(transform.name, username);
    }

    GetComponent<Player>().Setup();
}

[Command]
void CmdSetUsername (string playerID, string username)
{
    Player player = GameManager.GetPlayer(playerID);
    if(player == null)
    {
        Debug.Log(SteamFriends.GetPersonaName() + "joined!");
        player.username = SteamFriends.GetPersonaName();
    }
}

【问题讨论】:

  • Eeer,请注意,当您有更多信息要提供时,您可以编辑您的问题,而不是重复询问。此外,您无需等待其他人关闭您的问题 - 如果您认为这些问题与网站不再相关,您可以自行删除它们(前提是他们没有投票赞成的答案)。
  • 抱歉,没找到可以删除的地方 ;(

标签: c# unity3d scripting steam


【解决方案1】:

要实现这一点,您需要将 Steamworks 集成到您的游戏中。 此 api 将帮助您在游戏中检索用户、成就、steamworkshop 等。

要让 Steamworks 在您的游戏中运行,您需要获得 Valve 的批准才能让您的游戏在 Steam 上运行,例如让游戏绿灯。

这是一个教程,其中包含有关 Unity3D 上 Steamworks 的所有信息:Tutorial

如何循环浏览好友列表并获取他们的姓名和状态?

希望这将帮助您更多地了解这个主题。

编辑: 我找到了一些文档,实际上非常简单。

访问this 网站获取更多文档。

EDIT2: 好的,所以没有朋友,对不起。

我认为你实际上必须自己处理这个问题。 每次用户连接到游戏服务器时,将它们添加到列表中,以便您轻松获取它们。 然后只需使用该列表来处理记分牌。

  • 门诺尔普

【讨论】:

  • 我已经实现了 Steamworks,我只想知道如何获取所有其他玩家的用户名并显示在 UI 文本上:)
  • 哦,我明白了,真的没有从你上面问的问题中得到这个。我建议查看 UI Canvas、预制件的使用和垂直布局组件。
  • 是的,我创建了一个 Text 变量,我唯一需要的是为您提供玩家 steamid/steam 名称的代码
  • 那么这个函数有什么作用呢? SteamFriends.GetPersonaName();
  • @Avi3ator 我刚刚编辑了我的答案,当你有时间看的时候。