GUI works fine in editor, but not in build

I have:

  1. GUITexture attached to an object
  2. A script that has GUIStyles created for the Textfield and Buttons that are created in OnGUI(). This script is attached to the same object in number 1
  3. 3 GUIText objects each separate from the above.
  4. A script that enables the GUITexture and the script in number 1 and 2 respectively

This is how it is supposed to work:
When I cross the finish line, number 4 script enables number 1 GUITexture component and number 2 script component. The script component uses one of number 3’s GUIText objects to show you your best lap time, and also makes a GUI.Textfield for name entry and 2 GUI.Buttons for “Submit” and “Skip”. If you hit “Submit” the script will submit the time. No matter which button you press, The remaining 2 GUIText objects from number 3 will show you the top 10 best times.

For some reason, when I run it in editor, everything works 100%, but when I’m in different kinds of builds, the results vary.

When I am in a webplayer, The GUITexture and the textfield and buttons appear, but the textfield and buttons are plain and have no evidence of GUIStyles. When I click one of the buttons, the score gets submitted but I do not get the fastest times showing.

When I am in a standalone build, the GUITexture shows up, but nothing else does. If I remove the GUIStyle parameter of the GUI.Textfield and GUI.Button, they show up.

Why am I getting these variations and how can I fix it?

Code below:

void  Start ()
		{
			Names.text = "";
			Times.text = "";
	        YourBestTime.text = "Your Best Lap: " + bestTime + "

Enter your name:";

			//StartCoroutine(GetTimes("Test"));
			
		}
		
	void Update()
	{
		if (!ShowButtons && !GettingTimes)
		{
			StartCoroutine(GetTimes());
			GettingTimes = true;
		}
	}

	IEnumerator GetTimes ()
	{	
		Debug.Log("Getting times");
	    YourBestTime.text = "Loading Best Lap Times";
	    WWW times_get = new WWW(GetTimesUrl);
	    yield return times_get;
		WWW names_get = new WWW(GetNamesUrl);
		yield return names_get;
	    
	    if(times_get.error != null || names_get.error != null) 
	    {
	        print("There was an error retrieiving the data: " + names_get.error + times_get.error);
	    } 
	    else 
	    {
	    	Times.text = times_get.text;
			Names.text = names_get.text;
	        YourBestTime.text = "Your Best Lap: " + bestTime;
	    }    
	}
	
	IEnumerator PostLapTime (string Name, string LapTime)
	{
		string hash= MD5.Md5Sum(Name + LapTime + secretKey); 
		string bestTime_url = SubmitTimeUrl + "&Name=" + WWW.EscapeURL(Name) + "&LapTime=" + LapTime + "&hash=" + hash;
		    
		Debug.Log (bestTime_url);
		// Post the URL to the site and create a download object to get the result.
		WWW hs_post = new WWW(bestTime_url);
		//label = "Submitting...";
		yield return hs_post; // Wait until the download is done
		if (hs_post.error != null) 
		{
		    print("There was an error posting the lap time: " + hs_post.error);
		    //label = "Error: " + hs_post.error;
		    //show = false;
		}
		else
		{
			Debug.Log("Posted: " + hs_post.text);		
			ShowButtons = false;
			PostingTime = false;
		}
	}
	
	void OnGUI()
	{
    	if (ShowButtons)
		{
		    //makes text box		    
			nameString = GUI.TextField( new Rect((Screen.width/2)-111, (Screen.height/2)-130, 222, 25), nameString, 20, TextboxStyle);

			if (GUI.Button( new Rect( (Screen.width/2-74.0f), (Screen.height/2)- 90, 64, 32), "Submit", ButtonStyle))
			{
				//SUBMIT TIME
				if (nameString == "")
				{
					nameString = "Player";
				}
				if (!PostingTime)
				{
					StartCoroutine(PostLapTime(nameString, bestTime));
					PostingTime = true;
				}
				
			}
			else if (GUI.Button( new Rect( (Screen.width/2+10.0f), (Screen.height/2)- 90, 64, 32), "Skip", ButtonStyle))
			{
				ShowButtons = false;
			}
		}
	}
}

Check the file output_log.txt in you project folder/buildname/buildname_Data directory, if there are any errors in the log.

The reason it wasn’t working was because I had C# and Javascript scripts with the same class name. Thanks!