我在Unity項目中第一次使用接口。我試圖讓這個clas實現Move()方法。應該很容易,但它不工作。我已經嘗試了所有的微軟網頁和一些類似的問題,但還沒有找到同樣的問題。實現接口方法的問題
using UnityEngine;
using System.Collections;
public interface IMover {
float Move();
}
public class Move_1 : Mover {
public float moveSpeed = 1;
public float energyConsumption = 0.1;
float Move(Vector2 vec,Rigidbody2D rb){
rb.AddForce (vec * moveSpeed);
return energyConsumption * vec.magnitude;
}
}
我敢肯定,我已經錯過了一些東西明顯。我試過IMover.Move()
之類的東西
public float Mover(
,但沒有什麼工作。另一方面,我對帶接口的可見性修飾符有點困惑。接口沒有可見性修飾符,所以我認爲它是實現的一部分。我可能會混淆隱式和顯式聲明。
嘗試Move_1:IMover而不是Move_1:捷運 –
方法的簽名必須是在接口和實現類相同。其次,除非你使用顯式接口實現('float IMover.Move(){...}'),否則方法*具有*爲'public'。相反,如果你使用明確的實現,它必須是「私有」的。接口成員不需要可訪問性修飾符,因爲唯一真正有意義的是「public」。如果你想限制可訪問性,你必須將它應用到整個界面。 – Luaan