簡體   English   中英

“未實現接口成員”錯誤

[英]'Does not implement Interface Member' error

我是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)
{

}

}

我希望你們能幫助我。

編輯:

我已經糾正了語法,這就是為什么場景不播放的原因。 但是OnDrag代碼上的Debug.Log無法正常工作。 我收到此NullReferenceException:對象引用未設置為對象錯誤的實例。 同樣,我只是按照視頻中的內容進行操作,他的效果似乎還不錯。

您已聲明的方法virtual ,因為基類聲明它們virtual不已,你有一個聲明它們override

所以:

public override void OnPointerUp(PointerEventData ped) { }

另請注意,使用C#時,您的命名應完全匹配,因此應使用OnPointerUp而不是onPointerUp

更正您的拼寫,即onPointerDown > OnPointerDown C#區分大小寫。

當您的類從接口繼承時,它應實現在此類接口上聲明的所有方法和屬性。

在您的情況下,您必須在類中聲明編譯錯誤消息中提及的方法,並尊重它們的參數類型和返回值, 所有方法均區分大小寫

接口旨在確保從其繼承的所有類都實現此類方法和屬性。 因此,您可以在不了解類本身的情況下訪問這些成員。

接口不聲明方法/屬性修飾符(私有,公共等)。 您可以根據需要指定它們。

idraghandler,ipointeruphandler,ipointerdownhandler工具按此順序執行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM