unity3d 快速高效的检查

示例

尽可能避免不必要的操作和方法调用,尤其是在每秒多次调用的方法中,例如Update。

距离/范围检查

比较距离时使用sqrMagnitude代替magnitude。这避免了不必要的sqrt操作。请注意,在使用时sqrMagnitude,右侧也必须平方。

if ((target.position - transform.position).sqrMagnitude < minDistance * minDistance))

边界检查

可以通过检查对象Collider/Renderer边界是否相交来粗略检查对象的相交。该Bounds结构还具有方便的Intersects方法,可帮助确定两个边界是否相交。

Bounds还可以帮助我们计算对象之间实际(表面到表面)距离的近似值(请参阅参考资料Bounds.SqrDistance)。

注意事项

边界检查对于凸形对象确实非常有效,但是对凹形对象的边界检查可能导致更高的不准确性,具体取决于对象的形状。

使用Mesh.bounds不推荐,因为它返回局部空间界限。使用MeshRenderer.bounds代替。