GameObject.Find not working on everything

I have a really weird problem.

When I use GameObject.Find(“Health Bar”) it can’t find the Health Bar.

But when I use GameObject.FindGameObjectWithTag(“Health Bar”) its finds it.

It’s the same for the hunger bar

Here’s the code that doesn’t work:

using UnityEngine;
using System.Collections;

public class CheckforUI : MonoBehaviour {

void Start () {

	if(GameObject.Find("Health Bar") == false){
		Debug.Log("Health Bar Spawned");
		Instantiate(Resources.Load("Health Bar"));
	}
	else
	{
		Debug.Log("Health Bar Found");
	}

	if(GameObject.Find("Hunger Bar") == false){
		Debug.Log("Hunger Bar Spawned");
		Instantiate(Resources.Load("Hunger Bar"));
	}
	else
	{
		Debug.Log("Hunger Bar Found");
	}
}

}

And here is the one that works:

using UnityEngine;
using System.Collections;

public class CheckforUI : MonoBehaviour {

void Start () {

	if(GameObject.FindGameObjectWithTag("Health Bar") == false){
		Debug.Log("Health Bar Spawned");
		Instantiate(Resources.Load("Health Bar"));
	}
	else
	{
		Debug.Log("Health Bar Found");
	}

	if(GameObject.FindGameObjectWithTag("Hunger Bar") == false){
		Debug.Log("Hunger Bar Spawned");
		Instantiate(Resources.Load("Hunger Bar"));
	}
	else
	{
		Debug.Log("Hunger Bar Found");
	}
}

}

Why is this happening??

Cheers

It seems your object has name not equal to “Health Bar”. However it has tag “Health Bar”.
If you would like to find with GameObject.Find("Health Bar"), please set object’s name to Health Bar

Is the object name in the hierarchy “Health Bar”? Exactly? When you instantiate, Unity will change the name to something like “Health Bar (Clone)” or mangle the name in some other way.

The name of the object is Health bar! It just doesn’t seem to find it unless I make it search for its tag instead which i also called" Health Bar. Could it be because the object is a UI canvas?