在Unity中使用C#编程时,接口、抽象类与具体类是面向对象设计中的重要概念。以下通过三个代码实例来讲解它们的设计与使用场景:
示例1:接口(Interface)
场景:
假设我们正在开发一个游戏,需要定义一个“可移动”(IMovable)的接口,以便于所有角色、敌人和道具等都可以实现这个接口,从而具备移动的能力。
// 定义接口IMovable
public interface IMovable
{
void Move(Vector3 direction);
float Speed {
get; set; }
}
// 具体类Player实现IMovable接口
public class Player : MonoBehaviour, IMovable
{
public float speed;
public float Speed
{
get => speed;
set => speed = value;
}
void Update()
{
if (Input.GetKey(KeyCode.W))
{
Move(Vector3.forward * Time.deltaTime * Speed);
}
}
void Move(Vector3 direction)
{
transform.position += direction;
}
}
// 同样,Enemy类也可以实现IMovable接口
public class Enemy : MonoBehaviour, IMovable
{
// 实现Move方法和Speed属性...
}
示例2:抽象类(Abstract Class)
场景:
考虑一个更为复杂的场景,我们有一个基础的实体基类,其中包含一些通用功能,同时希望某些实体具有攻击能力,但不直接提供具体的攻击逻辑,这时可以定义一个抽象的Actor类,并包含一个抽象的Attack方法。
// 抽象类Actor
public abstract class Actor : MonoBehaviour
{
public int Health {
get; protected set; }
protected Actor(int initialHealth)
{
Health = initialHealth;


3666

被折叠的 条评论
为什么被折叠?



