Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 11 Next capture
2021 2022 2023
1 capture
11 Jun 22 - 11 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 The_WUUSTER · Aug 10, 2015 at 04:30 AM · destroy object

Trouble with upgrading towers

I am currently working on a basic TD game, and I'm having a little trouble dealing with upgrades. As of now, I have a bunch of preset-tiles placed on my map, and if you click those towers, it will spawn a tower on top of that tile if the provided conditions are met (if you have enough $ and there isn't already another tower there).

However, when it comes to upgrading, I'm running into problems. Ideally, what happens is that if I have enough money and I click on the tower/tile, the upgraded tower will replace the current tower. The issue is that I'm unable to get rid of the pre-existing tower.

 void OnMouseUpAsButton() {
         GameObject tower;
         if (!has_tower) {
             if (spawn.GetKash() < cost) {
                 GetComponent<AudioSource> ().Play ();
             }
             else {
                 tower = Instantiate (tower_prefab);
                 tower.transform.position = transform.position + Vector3.up;
                 spawn.MakeKash (-cost);
                 has_tower = true;
             }
         } else {
             if (!upgraded) {
                 if (spawn.GetKash() < upgrade_cost) {
                     GetComponent<AudioSource> ().Play ();
                 }
                 else {
                     //Destroy(tower);
                     GameObject upgrade = (GameObject)Instantiate (upgrade_prefab);
                     upgrade.transform.position = transform.position + Vector3.up;
                     spawn.MakeKash (-upgrade_cost);
                     upgraded = true;
                 }
             }
         }
     }

If I don't initialize tower, then I get an error as it may be unassigned in the Else statement. However, if I do initialize tower, what happens is that clicking only results in spawning a bunch of towers without destroying any single one of them.

Any help would be greatly appreciated!

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 Youri1er · Aug 10, 2015 at 09:52 AM

Ok i'm sure to uderstand what's your problem but for me there is a fondamental problem.

You must keep you variable tower. The problem is that you declare it in a function, so when the function finish the variable tower is destroy. You loose your link to the tower.

Put GameObject tower at the top of your class and you can uncomment //Destroy(tower); Then when you upgrade your tower GameObject tower = (GameObject)Instantiate (upgrade_prefab);

I change upgrade by tower because if you want to upgrade one more time, it will works again if you change the upgrade_prefab.

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 The_WUUSTER · Aug 11, 2015 at 07:15 AM 0
Share

Thanks a lot!

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

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Destroy game object forever? 2 Answers

Destroying game object 1 Answer

Destroy Gameobject on collision 2 Answers

Error CS0029 - Trying to destroy an object and then instantiate it again? 1 Answer

After destroying an object I respawn it and set a variable equal to it. However the next time Fixed Update loops it is equal to null, I have no idea why. 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