Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 /
avatar image
0
Question by InSpirationhh · Aug 29, 2020 at 04:38 PM · 2d gamevariablestopdownreferencing

How to share a variable through multiple copys of the same script

Hello! I've been working on a top down shooter game lately and I've run into an issue. So I'm thinking the door (blue rectangle) can only be opened when the two buttons who share the same button script are activated. In the button script, I have a public int variable (named activationNumber for referencing) to record the number of times the button has been pressed. I'm hoping by pressing each of the two buttons once (so activationNumber would be two), the door would open. However, the door can only reference one of the buttons, and can only record one of the buttons' activationNumber. I'm wondering how to create a shared variable to accomplish what I envisioned. Thank you! alt text alt text

button.jpg (257.1 kB)
door.jpg (266.7 kB)
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

2 Replies

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

Answer by tonialatalo · Aug 29, 2020 at 10:07 PM

Why do you think the door can refer only to a single button?

You can simply put two button references to the door and then check them both.

Alternatively, you can make the button script so that they have both individual and shared data - here is that in code in replit so you can execute it too .. that's not in Unity but it works the same way there:

 using System;

 class MainClass {
   public static void Main (string[] args) {
     var b1 = new Button();
     var b2 = new Button();
 
     Console.WriteLine(Button.ButtonsPressed);
     b1.Press();
     Console.WriteLine(Button.ButtonsPressed);
     b2.Press();
     Console.WriteLine(Button.ButtonsPressed);
   }
 }
 
 class Button {
   private bool ThisPressed = false;
   public static int ButtonsPressed = 0;
 
   public bool Press()
   {
     if (!ThisPressed) {
       ThisPressed = true;
       ButtonsPressed += 1;
       return true;
     }
 
     return false;
   }
 }

Output:

 0
 1
 2

You can try the code there: https://repl.it/@ToniAlatalo/RoundAdolescentSection (press run)

Comment
Add comment · Show 1 · 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 InSpirationhh · Aug 30, 2020 at 05:53 PM 0
Share

Thank you so much! What you said makes a lot of sense. Both solutions should do the trick.

avatar image
0

Answer by logicandchaos · Aug 30, 2020 at 03:00 PM

Just make the variable static and then it will be shared among all instances of that class. That's exactly what static variables are for. You could also use a scriptable object to share values. But if they use the same script just make the variable static.

Comment
Add comment · Show 1 · 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 InSpirationhh · Aug 30, 2020 at 05:54 PM 0
Share

Thank you so much! Static variables are exactly what I needed!

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

174 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 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 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

Apply the same script on multiple objects 1 Answer

2D raycast shooting in the wrong direction 1 Answer

I am having problems with making my character face the movement direction after stopping. 1 Answer

Jump functionality for a 2D Top Down game? 1 Answer

How to change animation's speed in C#? 2 Answers


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