【发布时间】:2018-03-16 18:55:38
【问题描述】:
我的函数中有一个布尔值来决定调用什么函数。这两个函数都被称为返回一个数组。
现在在我看来Hex[] areaHexes 确实存在,但编译器没有编译,因为它认为它没有设置(不存在)。
如何根据bool semiRandom 的值正确调用这两个函数之一?
void ElevateArea(int q, int r, int range, bool semiRandom = false, float centerHeight = 1f)
{
Hex centerHex = GetHexAt(q, r);
if (semiRandom)
{
Hex[] areaHexes = GetSemiRandomHexesWithinRangeOf(centerHex, range);
}
else
{
Hex[] areaHexes = GetHexesWithinRangeOf(centerHex, range);
}
foreach (Hex h in areaHexes)
{
//if (h.Elevation < 0)
// h.Elevation = 0;
h.Elevation += 0.5f * Mathf.Lerp(1f, 0.25f, Hex.Distance(centerHex, h ) / range);
}
}
【问题讨论】:
-
您的
areaHexes在您的if-else块中本地声明,它在这些块的范围之外不可见。在外面声明:Hex[] areaHexes;然后if (semiRandom) { areaHexes = ... } ...等等。
标签: c#