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 /
avatar image
0
Question by CAD97 · Apr 22, 2016 at 05:09 AM · unity 5destroy

Destroy script and component it depends on

I have a custom script component that creates child tiled SpriteRenderers, then removes itself.

As implemented, it configures the new SpriteRenderers based on a SpriteRenderer attached to its GameObject, then Destroy()s itself and the source SpriteRenderer.

However, because I've put [RequireComponent(typeof(SpriteRenderer))] on the script, I have to Destroy() the script itself before Unity will allow me to Destroy() the SpriteRenderer that I no longer want.

So, my question is:

Given a script that performs the following actions, can I be sure that the current step will be finished before the script is Destroy()ed? In other words, can I put code after Destroy(this) and still count on it to run?

 T component = this.GetComponent<T>();
 // some logic
 Destroy(this);
 Destroy(component);
Comment
Add comment · Show 3
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 rooster2 · Apr 22, 2016 at 08:27 AM 0
Share

@CAD97 what do you want this script to do, to destroy the object its attached to or destroy a different object?

avatar image Namey5 · Apr 22, 2016 at 10:01 AM 0
Share

You could do it with a separate script I guess, or maybe there's some way of structuring that removes both? I'd have to look into it further.

avatar image CAD97 · Apr 22, 2016 at 03:41 PM 0
Share

@rooster2 it's destroying the script itself and a component on the GameObject it is attached to.

2 Replies

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

Answer by Supert · Apr 22, 2016 at 10:24 AM

As scripting API states, "actual object destruction is always delayed until after the current Update loop, but will always be done before rendering".

Also, I tested your code and it works as intended.

So yes, you can be sure at it.

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 CAD97 · Apr 22, 2016 at 03:43 PM 0
Share

Source. That's what I was looking for, thanks!

avatar image
0

Answer by rooster2 · Apr 22, 2016 at 10:27 AM

i know to det rid of a object like a character you would have to do

void OnCollisionEnter(Collision Col){

if(col.gameObject.tag == "Player"){ destroy(col.gameObject); } }

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

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

6 People are following this question.

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

Related Questions

Unity Deleted My Game 1 Answer

i have some people walk around the scene but it will destroy after going away from the scene 1 Answer

How can I destroy GameObjects on the screen with the same name? 3 Answers

I have a bullet object and Enemy object i want to destroyed it when bullet hits enemy 1 Answer

"Dont destroy on load" does not work at forst 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