제목에서 알 수 있듯이 런타임에 GridLayoutGroup
구성 요소가있는 UI 패널을 자원 폴더의 스프라이트로 채우려고합니다. 문제는 스프라이트가 격자 셀에 자동으로 정렬되지 않고 대신 패널의 중앙에 그려지는 점입니다.격자 레이아웃 그룹에 가변적 인 수의 스프라이트를 동적으로 채 웁니다.
나는 접근 방법을 시도한 here을 시도했지만 그것은 나를 위해 작동하지 않습니다.
public class SpriteList : MonoBehaviour
{
public GameObject gridPanel;
public const string sortingLayer = "Foreground";
// Use this for initialization
void Start()
{
Sprite[] spriteArray = Resources.LoadAll<Sprite>("Sprites");
RectTransform gridRT = gridPanel.GetComponent<RectTransform>();
for (int i = 0; i < spriteArray.Length; i++)
{
GameObject cellObject = new GameObject();
cellObject.AddComponent<SpriteRenderer>();
cellObject.GetComponent<SpriteRenderer>().sprite = spriteArray[i];
cellObject.GetComponent<SpriteRenderer>().sortingLayerName = sortingLayer;
GameObject sprite = (GameObject) Instantiate(cellObject);
sprite.transform.SetParent(gridPanel.transform, false);
LayoutRebuilder.ForceRebuildLayoutImmediate(
gridPanel.GetComponent<RectTransform>());
sprite.transform.localScale = new Vector3(30, 30, 1);
}
}
나는 전혀보고 있어요 동작을 수정하지 않는 GridLayoutGroup
의 설정을 변경 : 여기가 GridLayoutGroup
으로 GUI를 부착 한 스크립트입니다. 나는 온라인으로 볼 수있는 모든 키가 선 내가 사용
sprite.transform.SetParent(gridPanel.transform, false);
임을 나타내는 것 때문에
, 내가 뭘 놓친 거지?
감사!
나는 이것을 시도했지만 작동하지 않았다. (나는 새 코드를 포함하도록 내 게시물을 업데이트했다.) 왜이게 될지 아십니까? 감사! – Rookatu