我在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