- Home /
Varying number of variables depending on power type?
So I am making a game where the player has a 'player class' (like Call of Duty Online but the game isn't a FPS):
[System.Serializable]
// Launch attributes
public class LaunchTypeObj : ScriptableObject
{
public float maximumPower = 4.0f;
public float elasticity = 0.5f; // Between 0-1
public float windResistance = 0.0f; // Between 0-1
public float chargeRate = 40.0f;
public float drop = 0.0f;
public float roll = 3f; // > 0
public float maxInaccuracy = 10.0f;
public PowerType[] powers;
}
each player class has a value for each variable, in addition each player can have a varying number of powers that come with the class (public PowerType[] powers above). Here is what my code for PowerType looks like:
[System.Serializable]
// Power type
public class PowerType : PropertyAttribute
{
public enum powerNames {
AirControl,
ElevationControl,
DeflectionControl,
SpinControl,
RollControl,
Thruster,
AirFlowManipulator,
RopeSwing
}
// What power type this is
public powerNames power;
// These vary depending on the power
public float[] powerVars;
}
So I use the enum to determine what the power type is. But depending on what the enum is set to, I need the number of variables for the power type or vary (the powerVars array you see above). For example, if the power type is AirControl then I would just have one float for the Strength, but if the power type where to be Thruster I would want two variables: Strength & Duration.
What is the best way to accomplish what I want to do? With the code above I was thinking I would change the length of the powerVars array depending on what enum is selected in the Inspector. I don't know if this is the best way and I also don't know how to do it yet, although I understand it will be done through a custom editor. I realize I could also just have each of the power types (AirControl, DeflectionControl, ect.) classes that extend the PowerType, and then have the appropriate variables for each type there, but I thought there might be a better way. Is there an example of what I am trying to do that I can look at?
Your answer
Follow this Question
Related Questions
How to declare multiple variables using a for loop in class declaration? 0 Answers
Convert SerializedProperty to Custom Class 7 Answers
Why have error: NullReferenceException: Object reference not set to an instance of an object 1 Answer
Arrays and Classes javascript 1 Answer
Runtime Error IOS AOT Only 0 Answers