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 leandrodam · Jul 06, 2015 at 05:38 AM · spawningspaceshooterwaves

Performance view over spawn waves method

Regarding Space Shooter tutorial, chapter 13: Spawning Waves.

I changed the suggested code to spawn waves using Update method. Thinking of performance, that could be a worst way to spawn waves of hazard?

 public class GameController : MonoBehaviour {
     public GameObject hazard;
     public Vector3 spawnValues;
 
     private float spawnRate;
     private float nextSpawn = 0.0f;
 
     void Update () {
         spawnRate = Random.Range (0.5f, 2f);
         if (Time.time > nextSpawn) {
             nextSpawn = Time.time + spawnRate;
             SpawnWave ();
         }
     }
 
     void SpawnWave () {
         Vector3 spawnPosition = new Vector3 (Random.Range (-spawnValues.x, spawnValues.x), spawnValues.y, spawnValues.z);
         Quaternion spawnRotation = Quaternion.identity;
         Instantiate (hazard, spawnPosition, spawnRotation);
     }
 }

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 Bluk · Jul 06, 2015 at 07:22 AM

Short answer: Yes it is a bit worse in terms of performance. But it doesn't change that much to have an extra "if" comparing integers. Random number generation is much slower though, and you run the Random.range() every frame when you only need it periodically.

However, as a rule of thumb, when a task doesnt need to be repeated as often as every frames (which is the Update() frequency), Coroutines are the way to go.

The main reason being that when you execute a function, it runs until completion, whereas in a coroutine, WaitForSeconds() is a non blocking active wait. There are some good simple examples here: http://docs.unity3d.com/Manual/Coroutines.html

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 leandrodam · Jul 06, 2015 at 05:59 PM 0
Share

Thank you Bluk.

At first, using Update method let the code cleaner, but thinking about the execution of both codes is easy to notice that having a "if" each frame is more expensive than simply run a pause, even using just a "if" comparing integers.

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

Bouncy platforms/spring jump? 4 Answers

Spawning enemies based on array of times 0 Answers

Spawning two bullets at once! 1 Answer

Freelancer of Freespace type Enemy Ai 2 Answers

Android fix DrawCells while shooting Bullet 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