Как сделать различные спрайты в массиве UI объектов [закрыт]

88
23 сентября 2019, 04:00

Как назначить определенному элементу массива UI объекта (контент в scrollview) соответствующий спрайт из массива спрайта?

 using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SnapScrolling : MonoBehaviour {
// объявляем количество панелей
public int panCount;
// создаем пробел между панелями
public int panOffset;
// Объявляем объект (контент)
public GameObject panPrefab;
//объявляем массив, в котором будем хранить Геймобджекты
private GameObject[] instPans;
// массив в которм будет хранится позиция панелек
private Vector2[] pansPos;
// массив для хранения размеров панелек
private Vector2[] pansScale;
// массив для хранения спрайтов
public Sprite[] ImgList;
// переменная для доступа к картинке
Image myImage; // создаваемый объект UI не имеет компонента SpriteRenderer
void Start () {
//определяем значение contentRect;
contentRect = GetComponent<RectTransform>();
// задаем размеры массива
instPans = new GameObject[panCount];
pansPos = new Vector2[panCount];
// создаем размер панельки
pansScale = new Vector2[panCount];
// создаем спрайты
ImgList = new Sprite[panCount];
myImage = GetComponent<Image>();
//создание объекта в контенте
for (int i = 0; i < panCount; i++)
{
instPans[i] = Instantiate(panPrefab, transform, false); //вместо координат указали трансформ, т.к. объект возьмет координаты родителя 
// И вот где-то здесь походу должно быть назанчение спрайта, спаунившемуся объекту, но как это реализовать я не понимаю!!
// меняем позиции спаунимшимся объектам 
if (i == 0) continue;
instPans[i].transform.localPosition = new Vector2(instPans[i-1].transform.localPosition.x + panPrefab.GetComponent<RectTransform>().sizeDelta.x+panOffset,
instPans[i].transform.localPosition.y);
pansPos[i] = -instPans[i].transform.localPosition;
}
}
Answer 1

Изменить sprite у объекта UI можно так:

gameObject.GetComponent<Image>().sprite = sprite;

Поэтому в Вашем случае должно быть примерно такое:

instPans[i].GetComponent<Image>().sprite = ImgList[i];
READ ALSO
Как поместить модель в сессию в asp.net?

Как поместить модель в сессию в asp.net?

Модель NewModel приходит на контроллер, нужно ее поместить в сессию:

86
AspNetCore приложение в Docker. как работать с логами?

AspNetCore приложение в Docker. как работать с логами?

Здравствуйте начал искать информацию как вытаскивать обычные текстовые логи из Docker контейнера и ничего не нашелИз этого я сделал вывод что...

103
Длительный фоновый процесс в asp.net core

Длительный фоновый процесс в asp.net core

У меня есть web api на aspnet core

93
C# windows service ip адрес

C# windows service ip адрес

Как получить ип адрес компьютера в переменную?

91