- Home /
Is this the best way to store my data? It doesn't feel like it.
Hi guys, I'm fumbling my way through an RPG.... I've been hesitant to ask this on here as its kinda big.
Question:
I have a script that creates a class for Sex. In this Sex are strings to call names (his, her, she, him, male, female) and designate the character's gender. Problem is, I can only seem to access these Male and Female Sex classes if I put them in an array and reference their count in the array. See my code below:
using System.Collections;
public static class SexData {
public static Sex NoGender;
public static Sex Male;
public static Sex Female;
public static Sex[] sexList;
public static int maleIndex = 1;
public class Sex {
public string name;
public string possesiveName;
public string thirdPersonName;
public string youngName;
public string grownName;
public Vector3 sexScale;
public int[] hairIndexes;
}
static SexData(){
Sex NoGender = new Sex();
NoGender.name = "No Gender";
Sex Male = new Sex();
Male.name = "Male";
Male.possesiveName = "his";
Male.thirdPersonName = "he";
Male.youngName = "boy";
Male.grownName = "man";
Male.sexScale = new Vector3(1, 1, 1);
Sex Female = new Sex();
Female.name = "Female";
Female.possesiveName = "her";
Female.thirdPersonName = "she";
Female.youngName = "girl";
Female.grownName = "woman";
Female.sexScale = new Vector3(.8f, .9f, .8f);
sexList = new Sex[] {NoGender, Male, Female};
}
}
To access these values outside the script, I cant just do "characterSex = SexData.Male", I need to do "characterSex = SexData.sexList[1]"
I cant believe this is the proper way to do what I'm doing, but it works for now. Should I be using a struct? Is this a case of value type vs reference type?
Thanks all!
Answer by DaveA · Sep 16, 2013 at 07:37 PM
You should google MSDN dictionary or hash which can let you access things by string.
And/or you can make an enum like Gender { Male, Female } and use that as an index like SexData.sexList[Male]
That said, you code can also be condensed by making a constructor for Sex
thanks DaveA, i like your suggestion with the Enum, I'll also add a constructor for Sex.. didn't think of that.
Your answer
Follow this Question
Related Questions
My SendMessage is problematic [SOLVED] 1 Answer
Creating a pointer variable to a GameObject inside a class that does not extend MonoBehavior? [C#] 2 Answers
Enter value in Class array how? 1 Answer
Can I get a reference (not a copy) to a string from a script? 2 Answers
Store reference to array as variable 2 Answers