I have been following InScope Studios tutorial (first video, I haven’t gone any farther because I can’t) for creating an inventory system and here is my script:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Inventory : MonoBehaviour {
private RectTransform inventoryRect;
private float inventoryWidth, inventoryHeight;
public int slots;
public int rows;
public float slotPaddingLeft, slotPaddingTop;
public float slotSize;
public GameObject slotPrefab;
private List<GameObject> allSlots;
void Start (){
CreateInventoryLayout ();
}
void CreateInventoryLayout (){
allSlots = new List<GameObject> ();
inventoryWidth = (slots / rows) * (slotSize + slotPaddingLeft) + slotPaddingLeft;
inventoryHeight = rows * (slotSize + slotPaddingTop) + slotPaddingTop;
inventoryRect = GetComponent<RectTransform> ();
inventoryRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, inventoryWidth);
inventoryRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, inventoryHeight);
int columns = slots / rows;
for(int y = 0; y < rows; y++){
for(int x = 0; x < columns; x++){
GameObject newSlot = (GameObject) Instantiate(slotPrefab);
RectTransform slotRect = newSlot.GetComponent<RectTransform> ();
newSlot.name = "Slot";
newSlot.transform.SetParent(this.transform.parent);
slotRect.localPosition = inventoryRect.localPosition + new Vector3(slotPaddingLeft * (x + 1) + (slotSize * x), -slotPaddingTop * (y+1) - (slotSize * y));
}
}
}
}
The result for this script is this:
The slots are outside of the canvas and not on the inventory background (The brown square at the top of the canvas). I’m not sure what isn’t working. I think I copied exactly from the tutorial.
Thank you very much!