- Home /
How to call a user input variable in another script.
I'm trying to have the user put in a number to represent the seed for the level. However I can't seem to call the variable the user put in, what am I doing wrong here?
Heres the script with the user string in it.
public class SeedNumberScript : MonoBehaviour {
public string PlayersSeed= "Enter A Seed Number";
void OnGUI() {
stringToEdit = GUI.TextField(new Rect(10, 10, 200, 20), stringToEdit, 25);
if(GUI.Button(new Rect(10,400,1200,100), "Enter The World"))
{
Application.LoadLevel("NewIdeas&Tests");
}
}
}
Heres the script that generates the world using their seed.
void Start () {
GameObject Seeder = GameObject.Find("Seeder");
SeedNumberScript seednumber = Seeder.GetComponent<SeedNumberScript>();
seednumber.PlayersSeed == Random.seed;
for(int z = 0; z < GameHeight; z++)
{
for(int x = 0 ; x < GameWidth; x++)
{
float rnd = Random.value;
if(rnd <0.25f)
{
Instantiate(TileOne, new Vector3(x,0,z), Quaternion.identity);
}
else if(rnd <0.5f)
{
Instantiate(TileTwo, new Vector3(x,0,z), Quaternion.identity);
}
else
{
Instantiate(TileThree, new Vector3(x,0,z), Quaternion.identity);
}
}
}
}
}
Answer by eshonbel · Jun 05, 2014 at 06:34 PM
public class SeedNumberScript : MonoBehaviour {
public static string PlayersSeed= "Enter A Seed Number";
void OnGUI() {
stringToEdit = GUI.TextField(new Rect(10, 10, 200, 20), stringToEdit, 25);
if(GUI.Button(new Rect(10,400,1200,100), "Enter The World"))
{
Application.LoadLevel("NewIdeas&Tests");
}
}
}
Your other script: void Start () { GameObject Seeder = GameObject.Find("Seeder"); /* You don't need this: SeedNumberScript seednumber = Seeder.GetComponent();
*\
//Put whatever your script is called, e.g Seed
//so i'll assume it's called Seed
Seed.PlayersSeed == Random.seed;
for(int z = 0; z < GameHeight; z++)
{
for(int x = 0 ; x < GameWidth; x++)
{
float rnd = Random.value;
if(rnd <0.25f)
{
Instantiate(TileOne, new Vector3(x,0,z), Quaternion.identity);
}
else if(rnd <0.5f)
{
Instantiate(TileTwo, new Vector3(x,0,z), Quaternion.identity);
}
else
{
Instantiate(TileThree, new Vector3(x,0,z), Quaternion.identity);
}
}
}
}
}
So by making it a static variable, you can access it from other scripts by going [thevar'sscriptname].[yourvariable] //and do whatever you want with it.
example: //Script 1 public static int myInt = int;
//script 2
function Start()
{
Script1.myInt = 10;
}
if it helps make it an answer, thank you
I keep getting an error on SeedNumberScript.PlayersSeed == Random.seed;
Only assignment, call, increment, decrement, and new object expressions can be used as a statement
Oh, I accidentally used Javascript in Script 2. Script 2 (new) //script 2
void Start()
{
Script1.myInt = 10;
}
Your answer
Follow this Question
Related Questions
GLSL: Get current time in millis 1 Answer
Calling a Function from other script ( C# ) 1 Answer
Building a 3D Neural Network for Bot AI? 1 Answer
Get variable from another object 1 Answer
How to call Variable across scripts. 2 Answers