1

我在 Unity3D 游戏引擎中使用 C#。在我的 MonoBehaviour 脚本中,我需要覆盖GetHashCode. 但是每当我这样做时,我都会收到错误cannot change return type when overriding method int UnityEngine.Object.GetHashCode"消息(GetHashCode 不是位于 System 命名空间内吗?)

我的压倒一切:

public override int GetHashCode()
{
    return index.GetHashCode();
}

using UnityEngine;如果我从顶部删除标题,则错误不再存在。我试图明确告诉它要覆盖什么,它不像处理接口,所以它不起作用。

这是怎么回事,有两个GetHashCodes吗?我怎样才能GetHashCode在这里覆盖?

谢谢。

编辑:我已经删除了using System;和 left out UnityEngine,结果相同。

编辑:我还尝试了一个空类和另一个项目,什么都没有:(

4

3 回答 3

0

UnityEngine.Object 有自己的 GetHashCode() 并且要覆盖它,您只需执行上面所做的操作,除了您的返回类型是错误的。见下文:

public class Test : MonoBehaviour {
    public override int GetHashCode() {
        return base.GetHashCode();
    }
}
于 2013-08-16T01:38:30.333 回答
0

解决了。对不起,混乱的家伙,这是一个 Resharper 错误错误。我的代码没有任何问题。感谢任何试图提供帮助的人。

于 2013-08-17T12:22:23.203 回答
0

.Net 无法理解您使用的是哪个对象。

using Object=System.Object;

尝试这个

于 2013-08-16T04:59:10.067 回答