Генерация GameObjects и установка их изображения из массива текстур при нажатии кнопки - Unity 4.6 (с помощью uGUI)

У меня много проблем, когда я пытаюсь разработать загрузчик, который, когда нажимается кнопка, берет массив текстур и заполняет их в сетку (а когда нажимается другая кнопка, он удаляет текущие текстуры и заменяет их новой. массив текстур). У меня есть часть макета сетки пользовательского интерфейса, и массивы текстур сгенерированы, мне просто нужна помощь с:

  1. Назначение каждой текстуры компоненту Image индивидуально сгенерированных объектов GameObject.
  2. Заполнение макета сетки с этими GameObjects.

Может ли кто-нибудь поделиться какой-нибудь информацией о коде или фрагментом кода, который может помочь?

1 ответ

Решение

Сначала создайте скрипт внутри вашего Canvas или создать пустой GameObject со сценарием.

Создать общедоступные переменные:

public Sprite[] mySprites;
public GameObject myGridLayoutGameObject;
public GameObject myGridElement;

В mySprites назначьте все свои спрайты через редактор.

За myGridLayoutGameObject назначьте свой графический интерфейс GameObject с помощью GridLayoutGroup,

За myGridElementВы должны создать прототип GUI-объекта с помощью Image и поместить его за пределы холста, чтобы он не был виден вашей камере. Присвойте его вашей переменной scripts.

Затем вы можете создать некоторый метод:

public void fillGrid() {
    foreach (Sprite sprite in mySprites) {
        GameObject instance = Instantiate(myGridElement, myGridElement.transform.position, myGridElement.transform.rotation) as GameObject;
        instance.GetComponent<Image>().sprite = sprite;
        instance.transform.SetParent(myGridLayoutGameObject.transform);
    }
}

Он автоматически поместит все ваши объекты в сетку, в зависимости от ваших настроек. Не забудьте добавить с помощью UnityEngine.UI; на голове вашего сценария.

Кроме того, я написал этот код для Unity 5. Unity 4.6 может иметь некоторые различия в элементах GUI.

Другие вопросы по тегам