You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PlayFab登录后InfoResultPayload.PlayerProfile.DisplayName返回null,如何获取用户名?

问题原因

你遇到的DisplayName返回null的核心原因是:PlayFab的**DisplayName和Username是两个独立的用户字段**。在你的注册逻辑中,仅传入了Username参数,并未设置DisplayName字段,因此该字段默认值为null,登录时自然无法获取到有效内容。

解决方案

根据需求,你可以选择以下任意一种方式获取用户名:

方案1:注册时同步设置DisplayName

修改注册请求,将DisplayName设为与Username相同的值(或其他你需要的显示名称),这样后续登录就能通过PlayerProfile.DisplayName获取到值:

public void RegisterClick()
{
    var register = new RegisterPlayFabUserRequest 
    { 
        Username = Username.text, 
        Email = Email.text, 
        Password = Password.text,
        DisplayName = Username.text // 新增:设置DisplayName为用户名
    };
    PlayFabClientAPI.RegisterPlayFabUser(register, OnRegisterSuccess, OnRegisterFailure);
}

方案2:登录成功后直接从LoginResult获取Username

LoginResult对象本身就包含了用户的Username字段,无需通过InfoResultPayload间接获取,这是更直接的方式:

private void OnLoginSuccess(LoginResult result)
{
    // 直接获取登录时使用的Username
    string username = result.Username;
    ErrorMessage.text = username;
    Debug.Log(username);
}

方案3:后续主动设置DisplayName(可选)

如果需要在注册后再设置或修改DisplayName,可以调用UpdateUserTitleDisplayName接口,之后再获取PlayerProfile就能拿到对应值:

// 示例:设置DisplayName的方法
public void SetDisplayName(string newDisplayName)
{
    var request = new UpdateUserTitleDisplayNameRequest
    {
        DisplayName = newDisplayName
    };
    PlayFabClientAPI.UpdateUserTitleDisplayName(request, OnDisplayNameUpdated, OnError);
}

private void OnDisplayNameUpdated(UpdateUserTitleDisplayNameResult result)
{
    Debug.Log("DisplayName已更新为:" + result.DisplayName);
}

private void OnError(PlayFabError error)
{
    Debug.LogError("设置DisplayName失败:" + error.ErrorMessage);
}

内容的提问来源于stack exchange,提问作者AK200122

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:55:19