Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by AZAXD64 · Jan 27, 2016 at 07:50 AM · c#variablesintvaraccessing scripts

How can I access an int variable from another script?

Hi everyone,

I have a script Clock_Time_Final.cs that changes the public int time using a coroutine. Then I have a script rosstophermove2.cs that I need to access whatever value Clock_Time_Final.cs's int currently is.

Here's what I have for Clock_Time_Final.cs (which definitely is working on its own):

 using UnityEngine;
 using System.Collections;
 
 public class Clock_Time_Final : MonoBehaviour {
 
     public int time;
     
     void Start () {
     
         StartCoroutine(TimeItself());
 
     }
 
     IEnumerator TimeItself(){
         time = 6;
         yield return new WaitForSeconds (3);
         time = 7;
         yield return new WaitForSeconds (3);
         time = 8;
     
     }
 }

Then for the script trying to access it:

     using UnityEngine;
 using System.Collections;
 
 public class rosstophermove2 : MonoBehaviour {
     
     public Transform target;
     public float speed;
 
     public int thetime;
     public Transform clock;
 
     void Start () {
 
         Clock_Time_Final clockscript = clock.GetComponent<Clock_Time_Final> ();
         clockscript.time = thetime;
 
     }
 
     void Update () {
 
         if (thetime == 8){
     
     //Everything below this is irrelevant right now :)


The game runs, there are no errors or anything. And I've drag and dropped all the correct transforms in the correct places... it's just that the rosstophermove2.cs script stays as 0 whilst the time int is definitely changing with Clock_Time_Final.cs.

Any ideas what I've done wrong?

Thanks very much, Aaron

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by Jessespike · Jan 27, 2016 at 08:44 AM

rosstophermove2.thetime is staying 0 because it's never assigned anywhere.

 clockscript.time = thetime;

^This is setting time in the clockscript, which isn't doing much, since clockscript will change time in the coroutine. I think you meant:

 void  Update() {
     thetime = clockscript.time;
     if (thetime == 8) {

But then, why have two variables store the same value? Wouldn't it better to use one? I mean replace thetime with clockscript.time:

 void Update () {
     if (clockscript.time == 8) {
Comment
Add comment · Show 3 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image AZAXD64 · Jan 27, 2016 at 10:56 AM 0
Share

Thanks so much for responding. I'm sorry but I'm not sure I totally understood. Did you mean to change things like this?

 public class rosstophermove2 : $$anonymous$$onoBehaviour {
     
     public Transform target;
     public float speed;
     
     public Transform clock;
 
     void Start () {
 
 
         Clock_Time_Final clockscript = clock.GetComponent<Clock_Time_Final> ();
 
         
     }
     
     void Update () {
 
         if (clockscript.time == 8) {

That seems to make sense to me but I'm getting the error "The name 'clockscript' does not exist in the current context" and I'm unsure how to state it before the Update function in this situation.

Apologies again for not understanding.

avatar image Jessespike · Jan 27, 2016 at 04:59 PM 0
Share

Yea, like that. There's just one other thing: Clock_Time_Final is declared in the Start function, that means the Update function doesnt know what it is, so move the delcaration outside of the function.:

 Clock_Time_Final clockscript;
 void Start () {
     clockscript = clock.GetComponent<Clock_Time_Final> ();
 }
      
 void Update ()  {
     if (clockscript.time == 8) {
avatar image AZAXD64 Jessespike · Jan 28, 2016 at 05:25 AM 0
Share

Hahaaaa yes!!!! Thank you so much! Nice TARDIS by the way :) Cheers

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

68 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Changing Variable Outside of the Script 0 Answers

Integer arrays not comparing properly. 3 Answers

How can you add a function to a variable. Such as string.ToUpper() ? 1 Answer

C# - Access the Same Variable in Two Scripts 1 Answer

How do I access a variable/class from a C# file in a JS file? 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges