【问题标题】:UNITY no overload for method takes 1 argumentsUNITY 方法没有重载需要 1 个参数
【发布时间】:2018-10-25 08:29:00
【问题描述】:

我有一个小问题。我正在尝试当你射击敌人时它会失去生命值,所以我有 2 个脚本,一个在相机中,因为它的 fps 造成伤害,另一个在敌人的生命值中。问题是我试图减去对健康的损害,但该消息出现在代码中,在 target.takeDamage(damage) 谢谢

我的代码:

相机

    void shoot(){
    RaycastHit hit;

    //Raycast desde la camara, hacia delante, la informacion del raycast y con el rango que le demos
    if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range)) {
        Debug.Log(hit.transform.name);

        //A quien hemos impactado (), y lo llamamos target
        EnemyBase target = hit.transform.GetComponent<EnemyBase>();

        //Comprobamos si lo que hemos impactado es un enemigo
        if(target !=null){
            //Si lo es le mandamos la variable de daño
            target.TakeDamage(damage);

        }
    }

}

敌人:

    public void TakeDamage() {
    vidaEnemigo -= damage;
    if(vidaEnemigo <= 0f){
        Die();
    }
}

void Die(){
    Destroy(gameObject);
}

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    您的 TakeDamage 函数不接受任何参数,但您正试图将一个参数传入。给它一个参数(我猜您在这里想要一个 intfloat):

    public void TakeDamage(int damage) {
        vidaEnemigo -= damage;
        if(vidaEnemigo <= 0f){
            Die();
    }
    

    【讨论】:

    • 所以我必须把我必须通过的东西括起来? PD:成功了,非常感谢
    • @AxelVelasco 方法后面括号中的任何内容都定义了该方法将接受的参数。 You can read more about that here
    猜你喜欢
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多