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 Bioinformatizer · Jun 19, 2019 at 02:58 PM · eventclasses

Can you create a custom update-like function?

My project is using websockets to download data at irregular intervals. Multiple classes do recalculations every time this data is received, and only once per reception.

The current plan is to have the data transmitted to each of classes that need it when the data changed by attaching each of those scripts to the object that is receiving the data, or maybe some intermediate wrapper.

What would be ideal is to have a function similar to Update() that is called in each script when the data receive event happens. Is there a way to create a project wide function with that is called the same way?

Comment
Add comment · Show 1
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 metalted · Jun 19, 2019 at 03:28 PM 0
Share

Well the update function is just a function co$$anonymous$$g from the $$anonymous$$onoBehaviour class. Then it is called in every class that inherits from the $$anonymous$$onoBehaviour class. So I think the best way to go is to create a base class (inheriting $$anonymous$$onoBehaviour) with all your shared functions and make all the other classes inherit from it. $$anonymous$$aybe its possible to add stuff in the $$anonymous$$onobehaviour class but I'm not sure about that.

1 Reply

· Add your reply
  • Sort: 
avatar image
2

Answer by EDevJogos · Jun 22, 2019 at 04:28 AM

Straightfoward answer:

You can use a Coroutine, with a while loop to perform loop like method, note that this implementation will run forever, you start it by calling StartCouritne(Routine()); .

     public IEnumerator Routine()
     {
         while(true)
         {
             //Do stuff.
             yield return null;
         }
     }

You can also pass a parameter to the while loop so it will only execute for as long as it's true, or you can remove the while loop and use yield return new WaitForSeconds(/*float time*/); or even not use the WaitForSeconds and yield until another IEnumerator Method finishes.
For more info on Coroutines: https://docs.unity3d.com/Manual/Coroutines.html

Another answer based on what you described, i think you might need: (maybe i'm wrong)

You could use a static delegate to send an event when the data change, like:

 public static event System.Action onDataChanged;


Call this event when the data changed like: onDataChanged(); or onDataChanged?.Invoke(); depends on the C# version you're using.

And than subscribe each script that needs to know this happened, with:

 onDataChanged += DoSomething; // You have to implemente the method DoSomething or whatever name you deem fit.

or

 onDataChanged += { /* What it will do when the event occurs */ };




Comment
Add comment · 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

110 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 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 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 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 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 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 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 avatar image avatar image avatar image avatar image avatar image

Related Questions

Animation Crossfading and Events (Legacy) not triggering at times 0 Answers

OnApplicationFocus called twice - need to stop input 0 Answers

Animation stops playing as soon as AnimationClip.AddEvent is used. 0 Answers

Deactivating object makes events null. What is the best workaround? 1 Answer

Subscribing to Unity Events with different signatures 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