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

问题描述 投票:-1回答:1

我正在用unity制作我的rpg游戏,由于我需要很多不同的武器,我试图为每个武器制作一个脚本。由于我需要很多不同的武器,我试图为每个武器制作一个脚本。然后,我没有在每个武器的对象中执行攻击功能,而是出于某种原因想在其他类中控制它们,如WeaponManager。但是,我不知道如何管理各种不同的类,为每个类写所有的代码似乎并不高效,如

if((gameObject).name=="Wand")
    gameObject.Getcomponent<Wand>().Attack();
else if((gameObject).name=="Sword")
    gameObject.Getcomponent<Sword>().Attack();

...等等。

另外,我也想过用SendMessage功能,但似乎效率不高。

我想知道如何解决这个问题。我可以使用哪种方法?

unity3d unityscript
1个回答
1
投票

经典的使用案例 面向对象的编程:

继承!

使用共享 母类 都继承自并实现了 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();
© www.soinside.com 2019 - 2024. All rights reserved.