【发布时间】:2018-09-04 06:39:49
【问题描述】:
Unity3D 2018.2
问题:网格没有被列表填充,没有正确响应 用变换填充的 List 在 List 中至少包含 1 个项目,因此它不应为空。有些东西没有正确转移
我正在尝试在滚动视图中创建一个网格布局,其中充满了包含保存在列表中的变换的按钮
我通过检查通常有 0-25 个子变换的游戏对象获得变换。
一旦它从父游戏对象中获取所有子变换,检查哪个子具有名为“Satellite”的标签。用包含这些特定 gameObject.transforms 的 List 填充网格后。
单击网格中的按钮应该包含转换,例如脚本中的 OnMouseEnter() 如果我使用 Debug.Log(transform.name) 它应该显示它。
这是我正在使用的代码,其中没有错误,网格是空的,所以我没有正确接收转换,但我不知道代码有什么问题。谢谢你的帮助。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SatelliteGridControl : MonoBehaviour {
private List<Transform> satelliteListFromPlanet;
[SerializeField]
private GameObject buttonTemplate;
[SerializeField]
private GridLayoutGroup gridGroup;
[SerializeField]
private Sprite[] iconSprites;
// Use this for initialization
void OnEnable()
{
getSatellitesInPlanet();
satelliteListFromPlanet = new List<Transform>();
for (int i = 1; i <= satelliteListFromPlanet.Count; i++)
{
SatTransfrom newSatellite = new SatTransfrom();
newSatellite.iconSprite = iconSprites[Random.Range(0, iconSprites.Length)];
satelliteListFromPlanet.Add(newSatellite);
}
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 (SatTransfrom sat in satelliteListFromPlanet)
{
GameObject newButton = Instantiate(buttonTemplate) as GameObject;
newButton.SetActive(true);
newButton.GetComponent<SatelliteButton>().SetIcon(sat.iconSprite);
newButton.transform.SetParent(buttonTemplate.transform.parent, false);
}
}
public class SatTransfrom : Transform
{
public Sprite iconSprite;
}
}
【问题讨论】:
标签: list unity3d transform grid-layout