Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 car104 · Jun 04, 2013 at 02:21 PM · javascriptcoroutineclass

Question about Coroutines in a Class Function

I'm trying to use a coroutine in a class function. Similar to this:

 public class Player{
          var health : int = 100;
     
          function Player(){
     
          }
     
          function ApplyBuff(spell : Spell){
               health += spell.spellAmount;
               yield WaitForSeconds(spell.spellDuration);
               RemoveBuff(spell);
          }
     
          function RemoveBuff(spell : Spell){
               health -= spell.spellAmount;
          }
     }
 

What this is doing is applying a spell buff to the player, then after the duration of the buff, it removes it. If I do this in a regular script, it seems to work fine. If i remove the yield statement in the class function, it adds the buff like expected. But if I add the yield, the class function doesn't fire at all.

Can you just not use a coroutine in a class function? Does it have to be a MonoBehavior? As for the documentation on coroutines, it seems it states the only places you can't use it are in the Update() and FixedUpate() functions. But it doesn't implicitly state it can only be used in a MonoBehavior.

Note, this is not my entire class, but is a representation of the problem I am having.

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
0

Answer by darthbator · Jun 04, 2013 at 04:46 PM

I'm maybe not the best person to answer this from a technical standpoint but you are correct. In order to implement a unity coroutine I believe your class needs to extend monogame.

I don't do JS but to the best of my knowledge neither JS nor C# have a native concept of a "coroutine". In C# you sort of fake it with iterators which is why coroutines are declared *IEnumerator methodName ()*in C#.

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 car104 · Jun 04, 2013 at 05:14 PM 0
Share

I guess that means that the yield function is a function of the monobehavior class? I guess that makes sense why I can't use it. You would think it would give me an error of some description, rather than just not executing at all.

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

15 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

Related Questions

Coroutine gets skipped in javascript/unityscript 0 Answers

Are Unity's JS OOP functions customized? 2 Answers

Create an array of classes, of different type. 1 Answer

Referencing subclass in Unity JS 2 Answers

Creating a dynamic array of objects of custom class 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