Can't Locate gameobject in array
As the title states, i am using a for loop to try and instantiate a gameobject inside of an array, but the if statement i have checking for the tag of the game object does not actually work,
my code is posted below, i have placed debugs in certain places and i have used comments to highlight the problem area and before someone says it, i have octuple checked, there is in fact a game object at that location and if i use an integer to define the specific spot in the array the game object i want to spawn is at, it works, it is just the for loop that i have met difficulty with, i can spawn the object if i define the spot in the array i want to instantiate with an integer, but i cannot make the code dynamic and search for the game object inside the code, that is my objective here, to make the code dynamic
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Mspawn : MonoBehaviour {
public Button button;
public BoardManager boardManger;
void OnEnable(){
if (Input.GetMouseButtonDown(0)) {
button.onClick.AddListener (SpawnUnit);
}
}
void awake(){
boardManger = GetComponent<BoardManager> ();
}
void SpawnUnit()
{
Debug.Log ("Testing...");
for (int i = 0; i < boardManger.PlayerUnits.Length; i++)
{
Debug.Log ("Testing...(1)");
if (boardManger.PlayerUnits[i] == GameObject.FindWithTag("PlayerSoldierMarksman"))
{
// the code has great difficulty entering this if statement,
Debug.Log("Testing complete");
Instantiate (boardManger.PlayerUnits[i], new Vector3 (1, 1,0f), Quaternion.identity);
}
}
}
}
Answer by HarshadK · May 12, 2016 at 02:23 PM
Your GameObject.FindWithTag("PlayerSoldierMarksman")
will be returning null if it is not able to find the GameObject with tag PlayerSoldierMarksman
. So check if it is in fact returning null by using a Debug.Log before your if
statement like replace
Debug.Log ("Testing...(1)");
with
Debug.Log (GameObject.FindWithTag("PlayerSoldierMarksman"));
Answer by springwater · May 12, 2016 at 02:52 PM
It looks like it checks to see if there is one of that incrementation, then makes one.. so it should never return true..
Answer by Brutalitywarlord · May 16, 2016 at 12:45 PM
i have located the problem, no worries, it was returning null because there was no object in it's array, i was trying to obtain an array on a different Game Object instead of the one i was using
Your answer
Follow this Question
Related Questions
If statement in for loop not working after fail 0 Answers
For loop comparing two different objects appears to not be running 1 Answer
Wait until a key is pressed inside a loop 1 Answer
Help with c# code used for rendering levels from files 0 Answers
No MonoBehaviour script in the file whenever I create a script 0 Answers