我正在用unity制作我的rpg游戏,由于我需要很多不同的武器,我试图为每个武器制作一个脚本。由于我需要很多不同的武器,我试图为每个武器制作一个脚本。然后,我没有在每个武器的对象中执行攻击功能,而是出于某种原因想在其他类中控制它们,如WeaponManager。但是,我不知道如何管理各种不同的类,为每个类写所有的代码似乎并不高效,如
if((gameObject).name=="Wand")
gameObject.Getcomponent<Wand>().Attack();
else if((gameObject).name=="Sword")
gameObject.Getcomponent<Sword>().Attack();
...等等。
另外,我也想过用SendMessage功能,但似乎效率不高。
我想知道如何解决这个问题。我可以使用哪种方法?
经典的使用案例 面向对象的编程:
使用共享 母类 都继承自并实现了 virtual
与共同 默认 继承类 可以 覆盖或使之成为 abstract
所以继承类 不得不 实施它。
public abstract class Weapon : MonoBehaviour
{
public abstract void Attack();
// alternatively implement some default behavior
// in this case the child classes can but don't have to override this
//public virtual void Attack()
//{
// Debug.Log("Harr Harr .. but I'll do nothing else!", this);
//}
}
然后
public class Wand : Weapon
{
public override void Attack()
{
...
}
}
和
public class Sword : Weapon
{
public override void Attack()
{
...
}
}
然后干脆
gameObject.GetComponent<Weapon>().Attack();