假设我有一个移动的生物:
bool pathFound = false;
void Update()
{
if(!pathFound)
{
//Find a destination point
pathFound = true;
}
//Move creature to point
if(Creature reached the point)
{
pathFound = false;
}
}
因此移动取决于函数外部创建的变量。
如果我想添加完全相同的第二个生物,则代码将被复制:
bool pathFound1 = false;
bool pathFound2 = false;
void Update()
{
if(!pathFound1)
{
//Find a destination point 1
pathFound1 = true;
}
//Move creature 1 to point 1
if(Creature reached the point 1)
{
pathFound1 = false;
}
if(!pathFound2)
{
//Find a destination point 2
pathFound2 = true;
}
//Move creature 2 to point 2
if(Creature2 reached the point 2)
{
pathFound2 = false;
}
}
对我来说,看起来很奇怪且效率低下的东西。即使我将所有这些步骤移到一个函数中,也应该创建两个几乎相同的函数,只是pathFound1和pathFound2有所不同。
因此,我想知道如何通过更多定性代码获得相同的结果吗?
答案 0 :(得分:2)
将布尔值pathFound
作为public
中的Creature
成员,默认值初始化为false
。
那么您可以:
void Update()
{
foreach (Creature creature in yourCreaturesList)
{
if (creature.PathFound)
{
//Find a destination point for creature
creature.PathFound = true;
}
//Move creature to its target point
if(creature reached the point)
{
creature.PathFound = false;
}
}
}
如果需要,也可以将其他参数封装在Creature类中。