Передача int между скриптами - PullRequest
0 голосов
/ 26 октября 2018

Я должен передать int для одного скрипта другому, но это не просто один скрипт, который находится в одном GameObject. Этот сценарий применяется к трем объектам GameObjects (три оружия, этот сценарий имеет свои боеприпасы и т. Д.), А сценарий съемки находится на камере (поскольку я хочу снимать в середине экрана).

Скрипт на камеру

void Update () 
{
    //Si preta el click izquierdo se ejecuta shoot()
    if(Input.GetButtonDown("Fire1"))
    {
        shoot();
    }
}

//Le vamos a pasar la variable de la municion, para que solo pueda disparar si le queda
public void shoot(int ammoCargador)
{
    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 int ammoCargador= 10, ammoCargadorMax, ammoMochila, ammoMochilaMax;
//Ponemos el GameObject Camara porque es el que lleva el script que nos permite disparar
public GameObject Camara;

private void Start() 
{
    //Le asignamos que camara se llama Main Camera
    Camara = GameObject.Find("Main Camera");
}

void Update () 
{
    WeaponShoot Mandar = Camara.transform.GetComponent<WeaponShoot>();
    Mandar.shoot(ammoCargador);
}

Я получаю ошибку в скрипте камеры, в shoot(); внутри обновления

(Нет аргумента, соответствующего необходимому формальному параметру)

1 Ответ

0 голосов
/ 26 октября 2018

public void shoot(int ammoCargadora) означает, что при вызове метода вы должны передать аргумент типа int, чего вы здесь не делаете:

if(Input.GetButtonDown("Fire1")){
    shoot(); //should be "shoot(123);" or some other number.
}

если хотите, вы можете сделать параметр необязательным, изменив эту строку на public void shoot(int ammoCargadora = 123), где 123 - значение по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...