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
1
Question by PlanBTom · Sep 09, 2014 at 06:37 PM · editorassets

How to handle a single use script?

I've got a bunch of C# classes that inherit from a base class that inherits from ScriptableObject and has a single method doSomething. Most of them are used only once. They're work like event handlers, delegates, or runnables depending on the language you're most familiar with.

Right now I have to create that script file then create an asset from that script file and attach set a property on another script to that asset file. For example NPCs have a List and each Conversation has a property called Criteria that is of type Predicate. Predicate has a single method Evaluate that takes some game state info and returns true/false to indicate whether this Conversation can be had.

Whenever I want to make a different kind of decision I subclass Predicate and implement the Evaluate method to make the decision. Unfortunately to attach a Predicate subclass to a Conversation I have to make an Asset out of the Predicate which feels like extra baggage because I now have 2 copies of something I use only once. It's bad enough I have to create the first one. Ideally I'd like to just double click the Criteria property type in some code and be done with it.

First, is this the expected or best practice way to do what I'm trying to do? I'm open to other alternatives including replacing Predicate with something else. In other engines I'd use an object based expression tree and then just store this as data. The problem with this approach is property drawers don't work well for this type of data due to issues with serialization of polymorphic types and some display issues when the nesting gets deep.

Second, is there a better way to implement this kind of code (the Evaluate method or some kind of event handler)?

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

0 Replies

· Add your reply
  • Sort: 

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

2 People are following this question.

avatar image avatar image

Related Questions

The name 'Joystick' does not denote a valid type ('not found') 2 Answers

traps player for a few seconds 1 Answer

Loading assets in Editor Mode? 1 Answer

How can I save scripted variable changes? 2 Answers

GetAssetPath returning incomplete path for default materials 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