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

Unity集成Google登录后头像显示灰色问题求助

Google Play Games登录后头像显示灰色问题排查

可能的问题点及解决方法

1. 依赖Social.localUser.image不可靠

Play Games的Social.localUser.image属性并非总能自动加载用户头像,存在加载延迟、失败或返回默认灰色占位图的情况。更可靠的方式是直接用登录成功后获取的头像URL下载图片。

2. 协程启动时机不合理

你在Start()里同时触发登录和头像等待协程,但登录是异步操作,协程可能在登录完成前就开始等待,后续即使登录成功,Social.localUser.image也可能无法正常更新,导致拿到无效图。

修改后的代码实现

把头像加载逻辑移到登录成功的回调中,通过URL直接下载图片,替换原有协程逻辑:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using TMPro;
 
public class PlayGamesManager : MonoBehaviour
{
    public Text DetailText;
    public Image img;
    public GameObject hidesign;
    
    void Start()
    {
        Signin();
    }
 
    public void Signin()
    {
        PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
    }
    
    internal void ProcessAuthentication(SignInStatus status)
    {
        if (status == SignInStatus.Success)
        {
            string name = PlayGamesPlatform.Instance.GetUserDisplayName();
            string id = PlayGamesPlatform.Instance.GetUserId();
            string imgUrl = PlayGamesPlatform.Instance.GetUserImageUrl();
 
            DetailText.text = "Welcome \n " + name;
            hidesign.SetActive(false);
            
            // 登录成功后才开始加载头像
            StartCoroutine(DownloadAvatar(imgUrl));
        }
        else
        {
            DetailText.text = "Please Login";
            hidesign.SetActive(true);
        }
    }
 
    IEnumerator DownloadAvatar(string url)
    {
        // 检查URL是否有效
        if (string.IsNullOrEmpty(url))
        {
            Debug.Log("头像URL为空");
            yield break;
        }
        
        using (WWW www = new WWW(url))
        {
            yield return www;
            
            if (!string.IsNullOrEmpty(www.error))
            {
                Debug.Log("头像下载失败:" + www.error);
                yield break;
            }
            
            // 创建可读的Texture2D
            Texture2D tex = new Texture2D(2, 2);
            www.LoadImageIntoTexture(tex);
            
            // 创建Sprite并赋值给Image,锚点设为中心保证显示正常
            img.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
            // 开启保持比例,避免头像拉伸变形
            img.preserveAspect = true;
        }
    }
}

额外检查项

  • 确认Unity项目的Player Settings中开启了Internet Access权限,否则无法下载网络图片。
  • 检查img组件的Color属性是否被设置为灰色,将其改回默认白色。
  • 测试时确保网络正常,复制头像URL到浏览器确认能正常打开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 13:17:33