• 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 t$$anonymous$$s 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 anyt$$anonymous$$ng it's just the method signature.

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

T$$anonymous$$s way it seems that I will have to pass the score float, but since firing the event has to occur from t$$anonymous$$s 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 somet$$anonymous$$ng closer to t$$anonymous$$s:

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

From there, you can call somet$$anonymous$$ng like t$$anonymous$$s:

 float pointsGained = 100f;
 IncreaseScore(pointsGained);

All of t$$anonymous$$s 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.

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

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

Play an Animation through a Script 2 Answers

Parametrize generic event system (DRY it) 1 Answer

C# event setup, no result 0 Answers

Multiple Cars not working 1 Answer

Distribute terrain in zones 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