• 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 /
This post has been wikified, any user with enough reputation can edit it.
avatar image
Question by carter-carl30 · Mar 28, 2012 at 08:48 PM · loadingyieldwaitforsecondsdelay

Using yield wait for seconds in my script, correctly

I am using this script to check when all my "brick" objects are destroyed and then it loads the next level.

 function Update(){
 
     var bricks = GameObject.FindWithTag("brick"); //find gameobjects with the tag "brick" (you must therefore tag the enemies with "brick"
 
     if(bricks == null){ //if no gameobjects with the tag "brick" are found
 
     
 
     //change scene
 
     Application.LoadLevel(Application.loadedLevel + 1);
 
     }
 
 }

What I want to do is have a delay when all the bricks are destroyed and display "stage complete" (or something like that) and play a sound. I have tried using yield WaitForSeconds (5); I placed it above application load level. But this does not work. I looked at the script reference but was left still confused. Can anyone help me to correctly place it in my script? I'm utter n00b at scripting, design is my strong point.

Comment

People who like this

0 Show 0
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

2 Replies

· Add your reply
  • Sort: 
avatar image
Best Answer

Answer by BiG · Mar 28, 2012 at 10:42 PM

I would modify the script as below. Just add the sound and the "stage complete" text!

  var countdown = false;
 
  function Update(){
     var bricks = GameObject.FindWithTag("brick");
     if(bricks == null && !countdown){
        countdown = true;
        NextLevel();
     }
  }
 
  function NextLevel(){
     yield WaitForSeconds (5);
     Application.LoadLevel(Application.loadedLevel + 1);
  }
Comment
gamberetto
sandwich

People who like this

2 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 carter-carl30 · Mar 29, 2012 at 05:39 PM 1
Share

thankyou very much for your help and input, got it working now :))

avatar image

Answer by gregzo · Mar 28, 2012 at 09:36 PM

You cannot use yield in Update()! Instead of calling Application.LoadLevel, call a function which will yield WaitForSeconds(5) and then load the next level. Try it, if you still have trouble with it let me know!

Comment
BiG
gamberetto
sandwich

People who like this

3 Show 2 · 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 carter-carl30 · Mar 28, 2012 at 09:58 PM 0
Share

so after the brick checking in function Update would I do a new one underneath like:

function Update(){

 var bricks = GameObject.FindWithTag("brick"); //find gameobjects with the tag "brick" (you must therefore tag the enemies with "brick"

 if(bricks == null){ //if no gameobjects with the tag "brick" are found
 }

function pause then load(){

 //wait for 5 seconds
 WaitForSeconds(5);

 //change scene
 Application.LoadLevel(Application.loadedLevel + 1);

}

avatar image BiG · Mar 28, 2012 at 10:42 PM 0
Share
  • to gregzo's answer. I add my implementation as answer, btw.

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

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

Loop Animation with delay-variable 1 Answer

Make delay for spawn 3 Answers

How to Delay A Ball shooting script 1 Answer

How to delay a function (how to use WaitForSeconds() and yield) 1 Answer

Coroutine not running after yield return new WaitForSeconds 3 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