我必须将一个脚本的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();
中,我收到了相机脚本的错误
(没有给出与所需形式参数相对应的参数)
答案 0 :(得分:-1)
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是默认值)来使参数可选。