Unity3D 2018.2
Итак, у меня есть холст, который деактивируется и повторно активируется по выбору пользователя. У меня есть список, заполненный преобразованиями, в котором я заполнил сетку. У меня также есть другой список для хранения всех изображений, которые будут использоваться для заполнения сетки, поскольку сетка заполняется кнопками, содержащими преобразование. Например, если я нажимаю кнопку и запускаю Debug.Log ("transform.name"), я должен увидеть все свои различные преобразования.
Проблема 1. Каждый раз, когда этот холст включается или отключается, сетка продолжает добавлять 1 элемент под начальным, а после повторного включения / отключения под этим создается другой элемент.
+
Проблема 2: Также не вызывается ни одна из этих созданных кнопок. Может проблема здесь в 1-й проблеме?
Вот код, который у меня есть внутри кнопки, которая у меня есть
public class SatelliteButton : MonoBehaviour {
[SerializeField]
private Image myIcon;
public void SetIcon(Sprite mySprite)
{
myIcon.sprite = mySprite;
}
public void OnMouseEnter()
{
Debug.Log(transform.name);
}
}
Вот код для заполнения сетки
public class SatelliteGridControl : MonoBehaviour {
private List<Transform> satelliteListFromPlanet;
[SerializeField]
private GameObject buttonTemplate;
[SerializeField]
private GridLayoutGroup gridGroup;
[SerializeField]
private List<Sprite> iconSprites;
// Use this for initialization
void OnEnable()
{
getSatellitesInPlanet();
genInventory();
}
// Get Satellites
private void getSatellitesInPlanet()
{
satelliteListFromPlanet = new List<Transform>();
// Get current planet
Transform currentPlanet = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<HandleCamera>().targetToLookAt;
// Check inside for satellites
foreach (Transform satellite in currentPlanet)
{
// Check transform for tag
if (satellite.CompareTag("Satellite"))
{
// Add each transform from planet to array
satelliteListFromPlanet.Add(satellite);
}
}
}
// Handle Grid
private void genInventory()
{
if (satelliteListFromPlanet.Count < 6)
{
gridGroup.constraintCount = satelliteListFromPlanet.Count;
}
else
{
gridGroup.constraintCount = 5;
}
foreach (Transform sat in satelliteListFromPlanet)
{
GameObject newButton = Instantiate(buttonTemplate) as GameObject;
newButton.SetActive(true);
newButton.GetComponent<SatelliteButton>().SetIcon(iconSprites[Random.Range(0, iconSprites.Count)]);
newButton.transform.SetParent(buttonTemplate.transform.parent, false);
}
}
}
Я ценю помощь! Изучение макетов сетки с помощью List ‹>!