在以下Unity / C#代码中,collider
变量会产生以下警告:
警告CS0108'Controller2D.collider'隐藏继承的成员'Component.collider'。如果打算隐藏,请使用new关键字。
这是什么意思,我该如何解决?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// require that our object has a box-collider-2d component
[RequireComponent(typeof(BoxCollider2D))]
// controller-2D script
public class Controller2D : MonoBehaviour {
// stores a reference to our object's box-collider-2d component
BoxCollider2D collider; // the warning occurs here
// ...
}
答案 0 :(得分:0)
这是一个较晚的答案,但您可能会发现它很有用。在深入探讨问题之前,请先进行介绍:
p.s.1“奇怪的多态性问题”是指根据您的对象指针,将使用父类成员或子类成员。您可以在这里了解更多信息:https://stackoverflow.com/a/22809757/1854557 第2页在测试代码中,当我添加和卸下新键盘时,结果是相同的。因此,似乎不添加new关键字只会生成警告,但不会更改继承/多态的行为。
答案 1 :(得分:-1)
这是一条警告,表示名为Controller2D
的{{1}}的基类已经具有同名Component
的属性。
出现警告是为了通知您,Controller2D的任何实现都将使用您的定义并“隐藏”基本定义。为了避免警告,只需将对撞机的定义更改为
新BoxCollider2D对撞机;
那么它将知道您的意思是隐藏这个王子,并且警告会消失。
没有太多理由这样做。公共和内部属性已经可用。如果您的属性与要隐藏的属性不匹配或扩展,则很可能会引起问题,因此,如果您不知道是否要隐藏另一个属性,则应将其重命名。