【发布时间】:2017-05-12 15:55:49
【问题描述】:
我从https://forum.unity3d.com/threads/clean-est-way-to-find-nearest-object-of-many-c.44315/复制了一个代码
但是这段代码:
Transform GetClosestCube (Transform[] cubes);
void GetClosestCube()
{
{
Transform bestTarget = null;
float closestDistanceSqr = Mathf.Infinity;
Vector3 currentPosition = transform.position;
foreach(Transform potentialTarget in cubes)
{
Vector3 directionToTarget = potentialTarget.position - currentPosition;
float dSqrToTarget = directionToTarget.sqrMagnitude;
if(dSqrToTarget < closestDistanceSqr)
{
closestDistanceSqr = dSqrToTarget;
bestTarget = potentialTarget;
}
}
return bestTarget;
}
}
它给出了错误:
Assets/Player.cs(29,12):错误 CS0501: `Player.GetClosestCube(Transform[])' 必须有一个主体,因为它是 未标记为抽象、外部或部分
如果我完全按照线程中的方式使用代码:
void GetClosestCube()
{
{
Transform GetClosestCube (Transform[] cubes)
{
Transform bestTarget = null;
float closestDistanceSqr = Mathf.Infinity;
Vector3 currentPosition = transform.position;
foreach(Transform potentialTarget in cubes)
{
Vector3 directionToTarget = potentialTarget.position - currentPosition;
float dSqrToTarget = directionToTarget.sqrMagnitude;
if(dSqrToTarget < closestDistanceSqr)
{
closestDistanceSqr = dSqrToTarget;
bestTarget = potentialTarget;
}
}
return bestTarget;
}
}
}
错误:Assets/Player.cs(34,28):错误 CS1525:意外符号
(', expecting,',;', or='
【问题讨论】:
-
为什么要投反对票?我做错了吗?
-
我猜你在复制代码之前需要阅读一本 C# 初学者书籍。该代码不是有效的 C#,它试图声明一个方法
Transform GetClosestCube(Transform[] cubes)在另一个方法中void GetClosestCube()。这是不可能的(在这里没有任何意义)。您宁愿向代码的作者寻求澄清, -
@Jip1912:链接中的代码看起来与问题中粘贴的代码不同。