- Home /
 
C# How do I reference a variable from one script in another script
Okay, so I'm a total C# newbie. I'm trying to make a script that checks to see if multiple torches are burning, if they are then the door can open. So here is my code so far:
 public class TorchType : MonoBehaviour {
     public bool flameOn = false;
     public string torchType = "A";
     private void OpenThatDoor(){
         if (flameOn == true)
             GameObject.FindGameObjectsWithTag("Door");
             if (torchType == doorType)        
             doorCount++;
     }
 
               then the next part is
 public class DoorType : MonoBehaviour {
     public string doorType = "A";
     public int doorCount = 0;
     public int torchMax = 3;
 
     void Update () {
         if (doorCount == torchMax)
             //move door up
             
             ;
 
               okay so I'm trying to make it so that door count and the string doorType can be accessed in the first script.
How do I do this? Help! Thanks in advance!
Answer by syclamoth · Jun 04, 2013 at 08:01 AM
Instead of using strings to tag the 'torchType' and the 'doorType', why don't you directly link the torches to each door?
So, in your 'DoorType' script, add a variable that looks like this:
 public TorchType[] torches;
 
               This will give you a dropdown list in the inspector, that you can drag individual torches on to.
Then, in your door script's Update function, do this:
 bool shouldOpen = true; // This will be the final value that we check
                         // Innocent until proven guilty!
 foreach(TorchType torch in torches) { // This executes the block of code once
                                       // 'for each' torch in the array 'torches'
     // the object 'torch' refers to the current torch that we are operating on
     shouldOpen = shouldOpen && torch.flameOn; // shouldOpen will become 'false'
                                               // if a torch is off
 }
 if(shouldOpen) {
     // Open the door!
 }
 
               Then on your individual TorchType objects, you can determine whether a torch is on or off however you choose.
Answer by Ashkan_gc · Jun 04, 2013 at 08:45 AM
you can just have a variable of torches in your door script and set them in editor and at runtime check them like this public TorchType torches;
 public bool IsOpenable
 {
 get
 {
 //Check all torches to see if they are flaming or not.
 foreach(var torch in torches)
 {
 //If a torch is turned off so door can not be opened
 if(!torch.flamOn)
 return false;
 }
 //If all torches were on so we can return true and allow being opened.
 return true;
 }
 }
 
              Your answer
 
             Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Pointer or Copied Value? 1 Answer
Can someone list every possible basic variable? 3 Answers
use string to search in script 1 Answer