The title might sound scary but I have just a question about data types.
Quite simply, I would need something like this:
public class myclass {
int myint = 0;
string mystring = "";
public myclass(int localint, string localstring) {
myint = localint;
mystring = localstring;
}
}
public enum myenum : myclass {
enum1 = new myclass(9,"abr"),
enum2 = new myclass(99,"acad"),
enum3 = new myclass(999,"abra")
}
So that elsewhere, when I need ‘abra’, instead of manually instantiating it, and having countless duplicates all over the code, I just
myenum mylocalenum;
mylocalenum = enum3; //no mistake, the underlying class variables are predefined
The purpose is to have a selectable, pre-set ‘myenum’ which basically encapsulates another data structure which I predefine in the declaration phase.
This is because I have several data pre-sets by design, and I need to interact with them as with an enum (get their number, their descriptions, and basically associate them with predefined values).
If you have a solution, or even a resembling alternative, please let me know.
Couldn’t you use inheritance and polymorphism for this sort of thing? Unless I’m misunderstanding, you want to be able to assign a value to a variable that represents a class with different values. From your example above, each enum essentially just represents a pair of numbers. You could just have a base class with some abstract functions which return data in the child classes.
But I guess I could understand resisting that route - lots of overhead, extra files - no good. I guess you could do something like this:
public class MyClass {
...
}
public enum MyEnum {
class1 = 1,
class2 = 2,
class3 = 3
}
public class OtherClass {
MyClass[] classes;
public void Awake() {
classes = new MyClass[3];
classes[class1] = new MyClass(99, "asda");
....
}
public MyClass GetStuff(MyEnum type)
{
return classes[type];
}
}
But it still feels kind of messy. I’d probably still go with inheritance. You simply can’t use an enum in the way you are describing.