Составьте список достижений в виде прокрутки - PullRequest
0 голосов
/ 13 июня 2018

Я хочу составить список всех достижений, которые игрок может получить в моей игре.С помощью приведенного ниже кода я получаю достижения с сервера и создал список прокрутки в Unity, чтобы показать их, но появляется только первая строка.Я хотел бы показать имя, описание и валюту всех из них.Я также хотел бы изменить цвет достижений, полученных игроком, если переменная bool заработанная верна.

Я приложил ниже изображение списка, который я хотел бы видеть, и скриншот скролла, который у меня есть в иерархии.

new GameSparks.Api.Requests.LogEventRequest ()
        .SetEventKey ("LISTACHIEVEMENTS")
        .Send ((response) => {

            if(!response.HasErrors)
            {
                Debug.Log("List Achivements Loaded Sucessfully...");
                GSData scriptData = response.ScriptData;
                List<GSData> achievements = scriptData.GetGSDataList("achievements"); //retrieve the array of objects
                for (int i = 0; i < achievements.Count; i++)
                {
                    string name = achievements[i].GetString("name");
                    string description = achievements[i].GetString("description");
                    int? currency1Award = achievements[i].GetInt("currency1Award");
                    bool? earned = achievements[i].GetBoolean("earned");

                    Debug.Log(name);
                    Debug.Log(description);
                    Debug.Log(currency1Award);
                    Debug.Log(earned);

                    GameObject tempFile = Instantiate (filePrefab, contentRef.transform);
                    Text tempName = tempFile.transform.GetChild(0).GetComponent<Text>();
                    Text tempDescription = tempFile.transform.GetChild(1).GetComponent<Text>();
                    Text tempCurrency1Award = tempFile.transform.GetChild(2).GetComponent<Text>();

                    tempName.text = name;
                    tempDescription.text = description;
                    tempCurrency1Award.text = currency1Award.ToString();
                }

            }
            else
            {
                Debug.Log("Error Loading Achivements...");
            }
        });

enter image description here

enter image description here

1 Ответ

0 голосов
/ 13 июня 2018

Вы присваиваете элементы (имя, описание, валюта) тем же UITexts.Это все равно что вы пытаетесь сохранить 20 чисел (0,1,2 ... 19), но у вас есть только одна переменная (int) для их хранения.

Попробуйте создать текст в цикле for каксколько вам нужно.Вот пример:

public GameObject filePrefab; // to be able to instantiate new "files"

...

for (...)
{
    // Create the file and assign the valuse
    GameObject tempFile = Instantiate( filePrefab);
    Text tempName = tempFile.GetChild(0).GetComponenet<Text>();
    Text tempDescription = tempFile.GetChild(1).GetComponenet<Text>();
    Text tempCurrency1Award = tempFile.GetChild(2).GetComponenet<Text>();

    // Here you can set there position, etc.
    ...

    // Assign the values
    tempName.text = name;
    tempDescription.text = description;
    tempCurrency1Award.text = currency1Award.ToString();  
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...