// async void Sync() // { // List<UserResponse> res = await FetchUsers(); // List<User> users = new List<User>(res.Count); // var tasks = new List<Task<Texture2D>>(); // var semaphore = new SemaphoreSlim(30, 30); // foreach (UserResponse user in res) // { // await semaphore.WaitAsync(); // tasks.Add(FetchIcon(user.iconUrl)); // semaphore.Release(1); // } // var icons = await Task.WhenAll(tasks); // for (int i = 0; i < users.Count; i++) // { // var scores = new Dictionary<Genre, float>(); // foreach (Score score in res[i].scores) // { // scores.Add(score.genre, score.score); // } // var tmp = new User(); // Texture2D texture = new Texture2D(5, 5); // tmp.name = res[i].name; // tmp.id = res[i].id; // tmp.icon = icons[i]; // tmp.scores = scores; // users.Add(tmp); // } // try { userManager.AddUsers(users); } // catch (MissingFieldException err) { Debug.LogError(err); } // try { rankingManager.AddUsers(userManager.users.Where(user => user.id != "").ToList()); } // catch (ArgumentException err) { Debug.LogError(err); } // } async Task Sync() { List <UserResponse> res = await FetchUsers(); List <User> users = new List <User>(res.Count); foreach (UserResponse user in res) { var scores = new Dictionary <Genre, float>(); foreach (Score score in user.scores) { scores.Add(score.genre, score.score); } var tmp = new User(); Texture2D texture = new Texture2D(5, 5); tmp.name = user.name; tmp.id = user.id; tmp.scores = scores; users.Add(tmp); FetchIcon(user.id, user.iconUrl); } try { userManager.AddUsers(users); } catch (MissingFieldException err) { Debug.LogError(err); } try { rankingManager.AddUsers(userManager.users.Where(user => user.id != "").ToList()); } catch (ArgumentException err) { Debug.LogError(err); } }