我经常需要将无效位置传递给可选择使用位置的函数(例如RTS单元操作)。但这不编译:
public abstract void CastSpell(Spell spell, Vector3 targetLocation = null);
那么如何制作一个正确的 invaid Vector3来确定无效/“不关心”的位置?我已经看到像-999999坐标这样的矢量 - 但这是一个令人讨厌的技巧,可能会导致错误(例如在巨大的地图上)。
答案 0 :(得分:3)
我过去遇到过类似的问题,我发现有两个解决方案。第一个解决方案是为类创建一个包装器。
Class Vector3Wrapper
{
Vector3 vector;
}
然后我只是将Vector3Wrapper设置为null然后如果它不是null访问它的向量。一个更好的方法是使它成为Nullable类型。下面是一个例子。
<强> http://unitypatterns.com/nullable-types/ 强>
public class Character : MonoBehaviour
{
//Notice the added "?"
Vector3? targetPosition;
void MoveTowardsTargetPosition()
{
//First, check if the variable has been assigned a value
if (targetPosition.HasValue)
{
//move towards targetPosition.Value
}
else
{
//targetPosition.Value is invalid! Don't use it!
}
}