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 playbass06 · Jul 10, 2011 at 04:54 PM · javascriptfunctionyieldwaitforsecondsmouseover

Use yield WaitForSeconds to delay mouseover on a gameObject? (JS)

I have a main menu which has a 3 second transition in, which looks cool and all, but I ran into a problem - I can mouseover the objects during their transition in, which I don't want to be able to do. So I used a yield WaitForSeconds(3) before the function OnMouseOver, thinking that would solve it:

     iTween.MoveFrom(gameObject, {"y":5, "time":3, "EaseType":"EaseOutSine"});
 iTween.RotateFrom(gameObject, {"y":-5, "time":5, "EaseType":"easeInOutQuad", "loopType":"pingPong"});
 //wait for transition to finish to avoid glitches with mouseover
 yield WaitForSeconds (3);
 function OnMouseOver ()
 {
     iTween.MoveTo(gameObject, {"z":-.25,"time":1});
     if(Input.GetMouseButtonDown(0))
     {
         Application.LoadLevel("Credits");
     }
 }
 function OnMouseExit ()
 {
     iTween.MoveTo(gameObject, {"z":0, "time":1});
 }

But it didn't appear to create any sort of delay, and the problem still existed. Is there another way to force this delay before a function without putting a delay within the function itself?

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
2
Best Answer

Answer by Joshua · Jul 10, 2011 at 05:05 PM

Forget the yield. Check how long the game has been running instead.

 var delayTime : float = 3.0;
 function Start()
 {
     delayTime += Time.time;
 }
 function OnMouseOver()
 {
     if( Time.time < delayTime )
         return; //exit the function if it's 3 seconds since this script started
 }
Comment
Add comment · Show 3 · 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 Joshua · Jul 10, 2011 at 05:06 PM 0
Share

It also appears you yield outside of any function? That does.. nothing. The reason the iTeen functions work is because you're starting coroutines.

avatar image playbass06 · Jul 10, 2011 at 05:13 PM 0
Share

Thanks - that solved it. And yes, I have no idea what I'm doing sometimes. I kind of just assumed if one thing worked outside of a function, anything would.

avatar image Joshua · Jul 10, 2011 at 05:27 PM 0
Share

We've all been there at some point. ;)

Functions are executed when they are called. The update function is called once every frame. The On$$anonymous$$ouseOver function is called every frame when the mouse is over the collider. Variables declared outside of functions are global variables, and can then be used inside those functions. If you call a function outside of any function you're calling a coroutine at start. This is actually not good practice, it's better to put them in the Start function, which will then call them at start.

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

Yield WaitForSeconds doesn't work 1 Answer

Can I not use yield waitForSeconds in a class function? 1 Answer

yield WaitForSeconds don't work 1 Answer

Waypoint / Yield help 1 Answer

Coroutine a function within a loop? 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