- Home /
Inventory System Using InScope Studios Tutorial Help
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!
Answer by rakenzu · Dec 19, 2015 at 02:50 PM
@aGameDev i think this is quite late for an answer now but to solve the case of inventory go outside of the canvas, you need to go to inventory in canvas, click on anchors and change the pivot of the object. Just play around x and y until you get the inventory in the position
Answer by Darren_Therrien · Jun 30, 2016 at 05:20 PM
@aGameDev Any GUI element has got to be a child of Canvas to show in the environment. If it is showing outside the canvas, drag it under any (the chosen) child of the canvas and that should fix it. As far as the pivot points go, I am pretty sure they are for the 0,0 parameters of the object and for coding positions. "Top Left" etc. In that tutorial, I am fairly sure he uses top, left pivots throughout. Like @rakenzu said, a little late for an answer but, perhaps this could help others.
Your answer
Follow this Question
Related Questions
Inventory code not working [JS] 0 Answers
Issues with Inventory script 0 Answers
Inventory armor wielding proplem,How to convert from derived to base 1 Answer
Inventory loop bolt 0 Answers
Inventory List Crafting HELP 0 Answers