我正在制作一个关于遗传学的游戏,我偶然发现了一个"问题".(事实上这更像是一个问题)
我有一个DNA类,里面有很多变量,可以存储游戏中每个"生物"的信息.
public class DNA {
float size;
float speed;
float drag;
float eyeSize;
int numberOfEyes;
float color_r;
[...]
}
Run Code Online (Sandbox Code Playgroud)
现在让我们想象一下我想平均两个DNA.
我可以:
DNA AverageDNAs (DNA dna1, DNA dna2) {
DNA newDNA = new DNA ();
newDNA.size = (dna1.size+dna2.size)/2f;
newDNA.speed = (dna1.speed+dna2.speed)/2f;
[...]
}
Run Code Online (Sandbox Code Playgroud)
但它似乎很长,每次我要做一些计算,我都需要逐个重写每个变量.
所以我创建了一个函数,将所有变量(归一化在0和1之间)存储到列表中
public class DNA {
public float size;
public float speed;
[...]
private List<float> tempList;
public List<float> ToList() {
if (tempList == null) {
tempList = new List<float>();
toReturn.Add (size/sizemax);
toReturn.Add (speed/speedmax);
[...]
}
return tempList …Run Code Online (Sandbox Code Playgroud) 我需要知道10帧前变量的值.我想过制作一个数组,但每帧的偏移值似乎有点过分.
有什么想法/想法吗?