Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Otro error más de novato....

Iniciado por Rouless, Julio 22, 2015, 01:11:40 PM

Tema anterior - Siguiente tema
Muy buenas gente, os explico la situación.Tengo el objeto del player con varios scripts (uno para el movimiento, otro para disparar etcetera etcetera, así como duda repentina, pensais que es mejor ponerlo todo en el mismo script o tenerlo por scripts separados?) y quiero utilizar una variable de otro script. El caso es que con static me dice que no llega porque el nivel esta demasiado protegido y he leido que con getcomponent puedes acceder a las variables del script. El caso es que no sé como hacer un getcomponent para el script (si, muy noob using UnityEngine;
using System.Collections;

public class Piruleta : MonoBehaviour {

public GameObject piruleta;
public GameObject player;

private codigo scr;

// Use this for initialization
void Start () {
   scr = gameObject.GetComponent<codigo>();
}

// Update is called once per frame
void Update () {
   if (PlayerLife.estado == 2 && Input.GetButtonDown ("Fire1")) {
      Instantiate (piruleta, transform.position, transform.rotation);
   }
}
}
Y el error que da es obviamente el siguiente:
Assets/Scripts/Miscelaneos/Piruleta.cs(9,16): error CS0246: The type or namespace name `codigo' could not be found. Are you missing a using directive or an assembly reference?
 Gracias por resolverme las dudas! Un saludo
Lo siento muchisimo no se que le ha pasado al internet que me ha enviado tres veces el formulario, si algún moderador seria tan amable de cerrar dos de los tres posts se le agredecería.Siento las molestias, un saludo.

Yo creo que lo más fácil es que no te compliques con variables estáticas, el getcomponent es fácil y útil;primero declaras el tipo de la variable que vas a usar, que es el nombre de tu script. Luego solo llamas al getcomponent:
    public GameObject otroGameObject;

    private Codigo cd;
   
    void Start () {
        //Asegúrate de tener bien todas las mayúsculas
        cd = GetComponent<Codigo>(); //En caso de que el script esté en el mismo GO
        cd = otroGameObject.GetComponent<Codigo>(); //Si está en otro GO
    }
Como lo tienes parece estar bien, yo creo que te faltan las mayusculas...

El problema ya lo arreglé, era tan facil como que no escribia bien el nombre del script. 
Ahora el problema esque este script hace avanzar al gameobject al que está atado, no solo al gameobject que estoy instanciando (piruleta), pero ademas la piruleta enseguida desaparece, avanza lo que parece ser una unidad y, deu desaparece.

Lo sé, me enteré cuando ya había respondido el post 

Etiquetas: