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 Kensei · Sep 05, 2014 at 05:27 PM · c#scoreeventdelegate

Score system using events to pass data?

Hi, I just recently figured out how delegates and events work and I decided to give them a go. However I got confused again.

 public delegate float Scored();
 public static event Scored OnScore;

I'm having several issues regarding the implementation. Should the event be in an EventManager script or should I stick this code in the Items that yield the score? How does the data get passed between the scripts? I want when an item is collected, the score tracking script to get the score float.

But as far as I understand the float return type doesn't do anything it's just the method signature.

 public delegate void Scored(float score);
 public static event Scored OnScored;

This way it seems that I will have to pass the score float, but since firing the event has to occur from this script, that would mean that if I subscribe with my items I will be sending the score from the EventManager to the Item, but it has to go the other way around.

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

Answer by rutter · Sep 05, 2014 at 10:16 PM

Your delegate should accept arguments that will modify the score.

In the simplest case, that would be a single float or int: how much should the score increase by?

In more complex cases, that might include other information. Maybe an enumerator indicates why the score is changing. Maybe multipliers can apply. Maybe you need to know who's score should increase, or who increased a score. Maybe you need to pass effect information for the UI to consume. Who knows?

Point is, I'd recommend something closer to this:

 public delegate void IncreaseScoreDelegate(float amount);
 public static event IncreaseScoreDelegate IncreaseScore;

From there, you can call something like this:

 float pointsGained = 100f;
 IncreaseScore(pointsGained);

All of this accomplishes separation of concerns. Your scoring objects shouldn't need to know how the score system is implemented; they're just sending messages that represent desired score changes.

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

23 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

Related Questions

Event to change level 1 Answer

custom event delegate - convertible error 3 Answers

What part of the delegate gets passed back?The return type? 1 Answer

Delegate an event 2 Answers

How to unsubscribe from InputSystem event properly 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