Where should these functions be?
I am trying to make a skill system a bit dynamic. Currently I have a class named Skill that looks something like this.
public class Skill: MonoBehaviour
{
//fields
//properties
//start
//core functions
}
However, there are some functionalities that can be used to “tweak” the skill sometimes.
For example, I might want to scale and change the color of some skills. I am pretty sure it justifies writing a function to handle that well instead of hard coding into every skill that might need it, but it is certainly not a core functionality.
If I put functions like this in the Skill class I feel that it will get clogged by situational things.
My current ideas are:
1 - Create a singleton SkillFunctions and throw those over there.
Let’s say there are 30 functions and every skill might end up using 1-2. Regardless of the number, there will be a reference to singleton instance anyway...so what’s the point? It get things more organized but wouldn’t that cost a lot of performance in Unity?
2 - Every functionality be a class, then I could AddComponent to the Skill gameObject whenever needed.
I don't know if I am doing something terribly wrong, but I cannot pass parameters that way as Monobehaviors should not have constructors. Example:
I could say changeColor but because every skill might want to change to a different color, having no control over the parameters would mean I could only change color to a predefined one, and not choose one on the spot...
To sum it up:
Should I have all possible things skills could do in the Skill class or is there a better way to do that in Unity?
Thank you
Your answer

Follow this Question
Related Questions
Passing variable name into function from different script/animation event editor 0 Answers
How can i pass a method like a parameter Unity3d C#? 3 Answers
How to make objects without the new keyword 0 Answers
Custom class, Null Reference Exception 4 Answers
How to call a method from a class in a different script in c# 1 Answer