如何在管理器脚本中管理不同的武器?

我正在用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();

给TA打赏
共{{data.count}}人
人已打赏
未分类

围棋中无方法结构的多态性

2022-9-9 3:29:16

未分类

在pandas数据框中添加新的行,基于一个条件。

2022-9-9 3:29:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索