using System; using System.Collections; using UnityEngine; using UnityEngine.Networking; using UnityEngine.Rendering; [Serializable] public class UserBaseInfo { public Sprite avatarSprite; public IEnumerator DownSprite(System.Action action) { string url = avatarUrl; int downCount = 5; if (avatarSprite != null) { action?.Invoke(avatarSprite); yield break; } Texture2D avatarTexture2D = new Texture2D(100, 100); //if (avatarTexture2D == null) for (int i = 0; i < downCount; i++) { using (UnityWebRequest www = UnityWebRequestTexture.GetTexture(url)) { yield return www.SendWebRequest(); if (www.result == UnityWebRequest.Result.ConnectionError || www.result == UnityWebRequest.Result.ProtocolError) { Debug.LogError("下载失败: " + www.error); downCount--; if (downCount == 0) { yield break; //action.Invoke(Sprite.Create(new Texture2D(100, 100), new Rect(0, 0, 100, 100), new Vector2(0.5f, 0.5f))); } } else { avatarTexture2D = DownloadHandlerTexture.GetContent(www); avatarSprite = Sprite.Create(avatarTexture2D, new Rect(0, 0, avatarTexture2D.width, avatarTexture2D.height), new Vector2(0.5f, 0.5f)); break; } } } action?.Invoke(avatarSprite); } public void UpdateAvatar(System.Action action) { GameManager.Instance.StartCoroutine(DownSprite(action)); } public string userName { get; set; } public string password { get; set; } public string number { get; set; } public string avatarUrl { get; set; } public string mobile { get; set; } public string wxOpenId { get; set; } public string channel { get; set; } public bool isRedName { get; set; } }