I’m getting this error from my script and I’m really not sure why
‘A field initializer cannot reference the nonstatic field, method, or property `Inventory.myItemNameArray’
its from the line - private int randomInt = myItemNameArray[Random.Range(0, myItemNameArray.Length -1)];
Thanks for any help
public GameObject mySphere;
public class myInventory
{
public string itemName;
public string itemType;
public myInventory(string Name, string type){
itemName = Name;
itemType = type;
}
}
public string[] myItemNameArray = new string[4]{"Bow", "Short Sword", "Mace", "Staff"};
private int randomInt = myItemNameArray[Random.Range(0, myItemNameArray.Length -1)];
void OnTriggerEnter(Collider collider){
if (collider.name == "mySphere") {
myInventory newitems = new myInventory (myItemNameArray[randomInt] , "Weapon");
Debug.Log ("You found a new " + newitems.itemType + " - " + newitems.itemName + "!");
Destroy (mySphere);
}
}
You need to put that line in a method like “Awake” or “Start”.
Also that line should return a string not an integer.
private string randomInt;
void Start(){
randomInt = myItemNameArray[Random.Range(0, myItemNameArray.Length -1)];
}
Your error that you try will address to a variable when initialize all global variables. Candidate solutions it is possible to find much. I will bring two of them. The first:
public static string[] myItemNameArray = new string[4]{"Bow", "Short Sword", "Mace", "Staff"};
Ans second:
public string[] myItemNameArray = new string[4]{"Bow", "Short Sword", "Mace", "Staff"};
private int randomInt;
void Start() {
randomInt = myItemNameArray[Random.Range(0, myItemNameArray.Length -1)];
}