• 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
Question by ClassicGameJunkie · Mar 21, 2014 at 08:34 PM · javascriptdestroyprojectilefirenullreferenceexeption

Projectile Script Works Until Destroying Projectile

So I have a script that launches a projectile from a position on a button press, it works fine, the projectiles start firing and stacking up. So naturally I want to make sure they get destroyed after a short while to save memory etc.

But when I add the destruction line I get a NullReferenceException : Object reference not set to an instance. The code so far is below. Any ideas how I would remedy this? Thanks.

 var projectile : Rigidbody;
 var speed = 50;
  
 var fireRate = 0.11;
 private var lastShot = -10.0;
  
 function Update () {
 if(Input.GetButton("Fire1")){
     if(Time.time > fireRate+lastShot){
         clone = Instantiate(projectile, transform.position, transform.rotation);
         projectile.tag = "Fireball";
         clone.velocity = transform.TransformDirection( Vector3 (0, 0, speed));
  
         lastShot = Time.time;
     }
 Destroy(clone.gameObject, 3);
 }
 }
Comment

People who like this

0 Show 4
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 ShadoX · Mar 21, 2014 at 08:37 PM 0
Share

Which line do you get the NullPointerException on ? (if you click on the error in the console, it should open the script editor with the cursor at the line which is causing the Exception)

Also have you tried doing

 Destroy(clone, 3);

instead ? I don't see how only destroying the attached gameObject would free up memory if you'd leave everything else intact.. (or perhaps I'm just wrong about that)

avatar image robertbu · Mar 21, 2014 at 08:40 PM 0
Share

Try moving line 16 to line 13.

avatar image Sildaekar · Mar 21, 2014 at 08:50 PM 0
Share

Btw, all this instantiating and destroying is going to make a huge impact on performance, if I were you I'd look into object pooling.

avatar image ClassicGameJunkie · Mar 21, 2014 at 08:50 PM 0
Share

The error happens on line 16 as in

 Destroy(clone.gameObject, 3);

The desired effect is that the projectile disappears a second after launching. This script is attached to an empty object, pressing "Fire1" fires the projectile but it crashes the instant the projectile should be deleted and gives me the error.

Removing the word gameObject stops the crash, but doesn't delete the projectile.

Appreciate the help so far!

Update: Ah thankyou ShadoX moving the line worked!

However I'm curious robertbu, why will it impact performance? The projectiles are destroyed after 3 seconds, do they remain in the memory even after destruction?

0 Replies

· Add your reply
  • Sort: 

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

22 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

Related Questions

Projectile Firing From Floor, I Need Some Help 1 Answer

OnTriggerEnter to Destroy Objects not working Correctly 1 Answer

Destroying Prefab Also Destroys Prefab Reference 1 Answer

unity 2d create an ammo box 2 Answers

How do I make a projectile disappear seconds after it is fired? The projectile stays within the game forever. How do I disable it, 3 seconds after it has been fired? 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