• 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 ErenKruger · Nov 09, 2022 at 01:26 AM · variableschild objectammoshare

Share a variable between scrips, between children

I have a player, who has a ammo variable, from an attached script. T$$anonymous$$s allows for the ammo to increase through collision with ammo packs.

 public class Ammo : MonoBehaviour
 {
     public float ammo = 10f;
     public float amount = 5f;

 void Start()
 {

 }

 private void OnControllerColliderHit(ControllerColliderHit $$anonymous$$t)
 {
 if ($$anonymous$$t.gameObject.CompareTag("AmmoPack"))
     {
         Destroy($$anonymous$$t.gameObject);
         Debug.Log("Hit");
         ammo += (amount/2);
     }
 }

}

I have a gun game object with two different scripts to control how the gun works, each have a separate ammo system.

 {

 public float ammo = 10f;
 public float damage = 10f;
 public float range = 100f;
 public float fireRate = 4f;
 public float nextTimeToFire = 0f;
 public ParticleSystem muzzleFlash;
 public GameObject impact;

 public Camera fpsCam;
 // Start is called before the first frame update
 void Start()
 {
     
 }

 // Update is called once per frame
 void Update()
 {
     if(Input.GetButtonDown("Fire1") && Time.time >= nextTimeToFire)
     {
         if (ammo > 0)
         {
             nextTimeToFire = Time.time + 1f/fireRate;
             shoot();
             ammo = ammo -= 1;
         }
     }
     
 }

^ T$$anonymous$$s is the same on both scripts (One called Gun, the other called Conversion)

What I want is for the ammo to be shared between the two scripts on my gun (Gun and Conversion), w$$anonymous$$le also being shared with my Ammo script on my Player game object.

Hierarchy:

  • ↓Player (Has the ammo script on it)

  • ↓Main Camera

  • ↓Small Gun (Has the Gun and Conversion scripts on it)

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
1

Answer by MUG806 · Nov 09, 2022 at 12:46 PM

You can get the ammo script, store it in a variable, and then access any of its public variables/methods.

For example you could do somet$$anonymous$$ng like t$$anonymous$$s in your gun script:

 //Variable to store the ammo script
 Ammo ammoScript;
 
 void Start()
  {
 //Find the ammo script in the parent object and store it
      ammoScript = GetComponentInParent<Ammo>();
  }
  
  void Update()
  {
 //Subtract one from the ammo value of the Ammo script.
        ammoScript.ammo -= 1;
 }

Comment
Add comment · 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

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

147 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

Related Questions

Share a variable between scrips, between children 2 Answers

Share variables among scripts of the same object 3 Answers

Linking weapon ammo 1 Answer

How do I get a variable from another script and share the value of that variable between scripts? 1 Answer

Variables having 2 values within a Class? 0 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