タイトルが示唆するように、実行時にGridLayoutGroup
コンポーネントのUIパネルにリソースフォルダのスプライトを挿入しようとしています。問題は、スプライトがグリッドセルに自動的に配置されず、代わりにパネルの中央に描画されることです。グリッドレイアウトグループに可変数のスプライトを動的に取り込みます
私はhereの方法を試しましたが、それは私のためには機能しません。ここで私はGridLayoutGroup
と、GUIに添付しましたスクリプトは次のとおりです。
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
の設定を変更する私は全然見ている動作を変更しないでください。私はオンライン参照すべてが、キーが行私が使用
sprite.transform.SetParent(gridPanel.transform, false);
であることを示していると思われるので
、私が何をしないのですか?
多くの感謝!
私はこれを試してみましたが、うまくいきませんでした(新しいコードを追加するために投稿を更新しました)。なぜこれがあるのか知っていますか?ありがとう! – Rookatu