在 Unity 3D 中比较两个相同的对象返回 false (c#)

nix*_*x86 5 c# unity-game-engine

我正在 Unity 3D 上编写 C# 脚本。我有两个Vector3相同的。当我做:

Debug.Log(vect1);
Debug.Log(vect2);
Run Code Online (Sandbox Code Playgroud)

我得到同样的结果(500.0, 150.0, 0.0)。问题是,当我这么做的时候,vect1.Equals(vect2)我就会犯错!这怎么可能?

PS 我确信它们都是,Vector3因为当我这样做时vect1.GetType()vect2.GetType()我总是得到Vector3

Dav*_*rno 5

尽管是struct,但通过身份比较来Vector3实现。Equals换句话说,仅当它们是同一实例时才vect1相等。vect2

但是,Vector3确实实现了==测试值相等性,因此请改用它。

有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/vstudio/ms128863%28v=vs.90%29.aspx