“未实现接口成员”错误

本文关键字:错误 成员 接口 实现 | 更新日期: 2023-09-27 18:32:23

我对C#相当陌生,所以我仍然习惯它。

我有这段代码去我想用虚拟操纵杆控制一个角色的地方。我正在测试操纵杆是否响应或现在响应,但每次我尝试播放场景时,我都会收到 3 个CS0535错误,说:

'VirtualJoystick' 不实现接口成员 UnityEngine.EventSystems.IPointerUpHandler.OnPointerUp(UnityEngine.EventSystems.PointerEventData)'

"VirtualJoystick"不实现接口成员UnityEngine.EventSystems.IDragHandler.OnDrag(UnityEngine.EventSystems.PointerEventData)'

"VirtualJoystick"不实现接口成员"UnityEngine.EventSystems.IPointerDownHandler.OnPointerDown(UnityEngine.EventSystems.PointerEventData)"

这是代码。它相当短。

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;
public class VirtualJoystick : MonoBehaviour, IDragHandler, IPointerUpHandler, IPointerDownHandler
{
private Image bgImg;
private Image joystickImg;
private Vector3 inputVector;
private void start()
{
bgImg = GetComponent<Image>();
joystickImg = transform.GetChild(0).GetComponent<Image>();
}
public virtual void onDrag(PointerEventData ped)
{
Vector2 pos;
if(RectTransformUtility.ScreenPointToLocalPointInRectangle(bgImg.rectTransform, ped.position, ped.pressEventCamera, out pos))
{
Debug.Log("Test"); 
}
}
public virtual void onPointerDown(PointerEventData ped)
{
onDrag(ped);
}
public virtual void onPointerUp(PointerEventData ped)
{
}
}

我希望你们能帮助我度过难关。

编辑:

我已经更正了语法,这是场景无法播放的原因。但是 Debug.Log on OnDrag 代码不起作用。我收到此空引用异常:对象引用未设置为对象错误的实例。同样,我只是按照视频所说的,他的似乎工作得很好。

“未实现接口成员”错误

你已经声明了方法virtual,因为基类已经virtual声明了它们,所以你必须用override声明它们。

所以:

public override void OnPointerUp(PointerEventData ped) { }

另请注意,使用 C# 时,命名应完全匹配,因此OnPointerUp而不是onPointerUp

更正您的拼写,即 onPointerDown -> OnPointerDown .C# 区分大小写。

当你的类从接口继承时,它应该实现在此类接口上声明的所有方法和属性。

在您的情况下,您必须在类中声明编译错误消息中提到的方法,尊重它们的参数类型和返回值,所有这些都区分大小写

接口旨在确保从它们继承的所有类都实现此类方法和属性。因此,您可以在不了解类本身的情况下访问这些成员。

接口不声明方法/属性修饰符(私有、公共等)。您可以根据需要指定它们。

idraghandler,ipointeruphandler,ipointerdownhandler 按此顺序实现

相关文章: