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 <>!