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 /
  • Help Room /
avatar image
0
Question by bjornosaur · Nov 01, 2021 at 10:59 AM · scriptableobjectscriptable object

Abillity system for turn based strategy

Hi,

I'm working on a turn-based strategy rpg. At the moment, I'm making an ability system using Scriptable Objects, but as I'm quite new to unity, I'm beginning to wonder if this is the best way to go at it.

The way it works at the moment: I have a class called CharacterAbility which is a scriptable object which defines common features and functions of different character abilities. Each ability then inherits from this class and overrides its functions, for example, CleaveAbility: CharacterAbility. Each character has a list of abilities, and I drag the scriptable object into this list in the inspector to determine which abilities a character has access to.


There are mainly two issues I'm having at the moment:


A: Scriptable object data persists after play mode ends, which makes testing a chore as an ability will still be on cooldown if I exit and reenter play. At the moment I have solved this by resetting important values in the OnEnable() function, but I'm not sure if this will create issues down the line (?)


B: Many characters on the map will have the same abilities. Since abilities reference a single scriptable object asset, that means that the ability will go on cooldown for all characters when one uses it, which is obviously not ideal. I think I can work around this by instantiating an instance of the ability for each character (?), but I'm wondering if this is a good way of doing things.

What are the best solutions for the issues above? Is it okay to use the OnEnable function like this and to instantiate copies of the abilities that are used by several characters, or are scriptable objects simply not the best fit for my use case?


CharacterAbility class is below:

 public class CharacterAbility : ScriptableObject
 {
     public string abilityName;
     public Sprite abilityIcon;
     public Sprite coolDownIcon;
 
     protected int apCost;
 
     private int baseCooldown;
     public int coolDown;

     public bool isOnCooldown;

     public bool isActive = false;
 
     private void OnEnable() 
     {
         isOnCooldown = false;
         coolDown = 0;
     }

    public virtual void OnAbilityStart()  
    {
        isActive = true;
    }

    public virtual void OnAbilityFinished()
    {
        isActive = false;
    }
 
    public virtual bool CheckAbilityValid() 
    {
   
    }
 
    public virtual void OnAbilityTick()
    {
        
    }
 
    public virtual void OnExecute()
    {
 
    }
   
 }
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

174 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 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

Scriptable Objects inside other SO's not loading properly from Asset Bundle 1 Answer

Editor script can't find a class outside of Editor folder 0 Answers

Help with a C# script .SetActive 1 Answer

Is ScriptableObject suitable for fast data write/access? 1 Answer

Load JSON Scriptable Object and Prefabs 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