- 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