1、建立IWeapon及其子類
using UnityEngine;
public abstract class IWeapon
{
public abstract void Fire(Vector3 pos);
}
using UnityEngine;
public class WeapnGun : IWeapon
{
public override void Fire(Vector3 pos)
{
Debug.Log("WeaponGun射擊了" + pos + "位置");
}
}
using UnityEngine;
public class WeaponRifle : IWeapon
{
public override void Fire(Vector3 pos)
{
Debug.Log("WeaponRifle射擊了" + pos + "位置");
}
}
using UnityEngine;
public class WeaponRocket : IWeapon
{
public override void Fire(Vector3 pos)
{
Debug.Log("WeaponRocket射擊了" + pos + "位置");
}
}
2、建立ICharacter及其子類
using UnityEngine;
public abstract class ICharacter
{
protected IWeapon _weapon;
public ICharacter(IWeapon weapon)
{
_weapon = weapon;
}
public abstract void Attack(Vector3 pos);
}
using UnityEngine;
public class Soldier : ICharacter
{
public Soldier(IWeapon weapon) : base(weapon) { }
public override void Attack(Vector3 pos)
{
Debug.Log("Soldier攻擊");
_weapon.Fire(pos);
}
}
using UnityEngine;
public class Enemy : ICharacter
{
public Enemy(IWeapon weapon) : base(weapon) { }
public override void Attack(Vector3 pos)
{
Debug.Log("Enemy攻擊");
_weapon.Fire(pos);
}
}
3、測試
using UnityEngine;
public class Test : MonoBehaviour
{
// Use this for initialization
void Start()
{
IWeapon weapon = new WeapnGun();
ICharacter character = new Soldier(weapon);
character.Attack(Vector3.zero);
weapon = new WeaponRifle();
character = new Enemy(weapon);
character.Attack(Vector3.forward);
}
}