前提・実現したいこと
UnityのUGUIで、アイテムスロットを等間隔に配置するコードを書いているのですが、下記のコードだと生成したオブジェクトすべての値が同時に変更されています。生成したオブジェクトをslotRectという1つのオブジェクトに入れてしまっていることが原因かと思いますが、これをそれぞれ別のオブジェクトとして配置、個別に値をいじれるようにするにはどうすればよいでしょうか。設計の都合上、はじめからシーン上に配置しておく、要素の数だけ羅列して書く、の2つの方法はなしで考えています。
該当のソースコード
c#
1float slotRectPosX = 10; 2float slotRectPosY = 280; 3var backGround = GameObject.Find("BackGround"); 4for (int i = 0; i < inv.inventory.Count; ++i) 5{ 6 Addressables.LoadAssetAsync<GameObject>(m_inventorySlot).Completed += op => 7 { 8 GameObject slot = Instantiate(op.Result, backGround.transform); 9 var slotRect = slot.GetComponent<RectTransform>(); 10 slotRect.anchoredPosition = new Vector2(slotRectPosX, slotRectPosY); 11 }; 12 slotRectPosX += 90; 13 if (slotRectPosX >= 460) 14 { 15 slotRectPosX = 10; 16 slotRectPosY -= 90; 17 } 18}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/05 06:44