[英]'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.