Hola antes de nada soy muy noob y creo q en el titulo lo deje claro pero se q necesitais mas info para poder darme vuestra opinion gracias de antemano.
Empezamos: tengo un script en el arma la cual tiene el tag Arma se llama DisparoRecargaSonido y dentro de el se encuentra la variable
Int cargadorBalas;
I quiero acceder a ella desde el script AnimacionDisparo. ¿Seria algo asi?
public class AnimacionDisparo :Monobehaviour
Private DisparoRecargaSonido DisparoRS;
Void Start ()
DisparoRS = Arma.Getcomponent<DisparoRecargaSonido>();
[/quote]
¿Y luego ya podria acceder mediante DisparoRs ?
No se rian estoy empezando y hay cosas q no me quedan nada claras aunque me vea miles de tutos por eso pido ayuda solo quiero saber si es asi o no
Y perdon si no os pongo los scrips originales si no de cabeza es que no los tengo a mano en este momento
No entiendo mucho la pregunta, pero imagino que arma es un GameObject y lo tienes marcado como public para arrastrar la referencia desde el inspector? si es el caso esta bien claro traes la referencia desde el start y luego puedes acceder a sus metodos y variables publicas desde el Update o cuaquier otra funcion
Exacto el arma es un GameObject y mil gracias por tu respuesta. Ya q estoy al trabajo y no puedo probarlo y me interesaba saber si lo q pase era correcto y me alegraste la noche jajajaja que me he pasado todo el dia con eso en mi cabeza y porfin encontre solucion
Hola, Si "arma" tiene el componente " DisparoRecargaSonido " podés hacer, en vez de un "public GameObject" un "public DisparoRecargaSonido" y arrastrar el gameObject de la escena, te ahorrás de hacer el GetComponent en Start, Unity automáticamente detecta el componente en el gameObject que arrastraste y hace la referencia, una pavada pero ayuda.
Cita de: Toloko date=1512259155y dentro de el se encuentra la variable
Int cargadorBalas;
Ojo, si tenés solo "int" significa que esa variable es accesible solo por la instancia de la clase y por nadie más, osea que podés desde cualquier script usar el GetComponent pero nunca vas a poder acceder a ella (por lo menos directamente no) por eso se le llama privada, es analogo a definirla como "private int". Si la hacés "public int" ahora sí, si hacés el getcomponent vas a poder encontrar la variable, aunque tenés otras formas de acceder a ella.
Gracias ligtbug por lo del la aclaracion del int pero ahora q me lo dices creo que en el script original lo tengo public int aunque eso tampoco lo sabia cuando acabe del trabajo y este en casa hare las pruebas y os cuento y os pasare los scripts para que os echeis unas risas o a llorar de lo chapuzas q seran jajajajaj aunque se que hay varias maneras de hacerlo si lo consigo con 1 sera un gran logro para mi ya q aun estoy con el aprendizage de c# y en parte es gracias a la comunidad y los tutos de internet que eso de ser autodidacta y trabajar me lo pone dificil jajajajba mil gracias chicos/as
Bueno como no fui capaz de conseguirlo de esa manera y despues de dar mil vueltas me doy cuenta que puedo hacerlo mas facil aun ya que los dos scripts van en el mismo GameObject asi que lo hice a lo facil y chapucero pero os dejo el script para que os echeis unas risas aunque no es 100% mio jejeje
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
public class DisparoRecargaSonido : MonoBehaviour
{
public Text balasCargadorText;
public Text balasTotalesText;
public GameObject shootingParticle;
public int balasTotalesMax;
public int damage;
public int balasCargadorMax;
public int range;
private int balasTotales;
private int balasCargador;
private int balasArecargar;
private int balasArecargarReset = ;
private float timer;
private Animator animator;
private Ray shootRay;
private RaycastHit hit;
private AudioSource audio;
void Start()
{
animator = GetComponent<Animator>();
audio = GetComponent<AudioSource> ();
balasTotales = balasTotalesMax;
balasCargador = balasCargadorMax -= balasArecargar;
}
void Update()
{
timer += Time.deltaTime;
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
bool corriendo = Input.GetKey(KeyCode.LeftShift);
bool disparando = Input.GetButton("Fire1") && balasCargador >= 1;
if (Input.GetButton("Fire1") && timer >= 0.1f && balasCargador >= 1)
{
audio.Play ();
timer = ;
Shoot ();
balasCargador = balasCargador -= 1;
balasArecargar = balasArecargar +=1;
}
balasCargadorText.text = balasCargador.ToString();