Доброго времени суток Тостер! Задумался о добавлении в своем проекте неких характеристик разных деталей с разными характеристиками, создал несколько скриптов: один привязан к "Контент листу" внутри которого все элементы равнялись, второй к префабу "таблички" с под значок, название, и кол-во...
Сделал более менее адекватное создание префабов внутри Контент листа, при наведении курсора мышки пользователя на интересующую деталь выводились список характеристик, но при наведении на другую деталь таблички с характеристиками оставались прежними. Я задумался: А как организовать адекватное удаление лишних "Табличек"? Хотел создать удаление через цикл while но... Windows не хочет его переваривать и просто уходит в накаут))) Знаете ли вы как адекватней организовать удаление?
P.S. При наведении курсора мышки на объект Контент лист появляется, а когда курсор уходит Контент лист исчезает...
DetailInfo - Скриптusing System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
[System.Serializable]
public class DetailInfos
{
public string nameInfoLabel;
public Sprite infoSorta;
public int infoCount;
}
public class DetailInfo : MonoBehaviour
{
public List<DetailInfos> InfoPrefabs;
public GameObject StatisticPrefab;
public Text detailName;
public Text detailInfo;
public Image sortaImage;
GameObject currentobject;
RaycastHit hit;
GameObject statisticGameObject;
BuildingSystem buildingSystem;
BuildingHUB buildingHUB;
DetailRefs detailRefs;
bool statisticPrefabSpawned;
bool readyToClear;
void Start()
{
buildingSystem = Camera.main.GetComponent<BuildingSystem>();
buildingHUB = GameObject.Find("Building_Manager").GetComponent<BuildingHUB>();
}
void Update()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
currentobject = hit.transform.gameObject;
detailRefs = currentobject.GetComponent<DetailRefs>();
if (detailRefs.highlight)
{
detailName.text = detailRefs.nameLabel;
detailInfo.text = detailRefs.infoLabel;
sortaImage.sprite = detailRefs.sortaImage;
InfoPrefabs = detailRefs.info;
if (!statisticPrefabSpawned)
{
for (int i = 0; i < InfoPrefabs.Count; i++)
{
DetailInfos info = InfoPrefabs[i];
statisticGameObject = (GameObject)Instantiate(StatisticPrefab, this.transform);
SampleInfoPrefab sampleInfoPrefab = statisticGameObject.GetComponent<SampleInfoPrefab>();
sampleInfoPrefab.Setup(info, this);
}
statisticPrefabSpawned = true;
}
}
}
}
SampleInfoPrefab - Скриптusing System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
public class SampleInfoPrefab : MonoBehaviour
{
public Text nameLabel;
public Image iconImage;
public Text countText;
private DetailInfos info;
private DetailInfo scrollList;
public void Setup(DetailInfos currentInfo, DetailInfo currentDetailInfo)
{
info = currentInfo;
nameLabel.text = info.nameInfoLabel;
iconImage.sprite = info.infoSorta;
countText.text = info.infoCount.ToString();
scrollList = currentDetailInfo;
}
}