Noticias

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

Activar un objeto Y Desactivar Otro Al Mismo Tiempo

Iniciado por Alex, Abril 11, 2018, 05:37:47 AM

Tema anterior - Siguiente tema
Abril 11, 2018, 05:37:47 AM Ultima modificación: Abril 11, 2018, 11:55:45 AM por pioj
Hola Gente! 
 
He estado desarrollando un script que active un carro al PRESIONAR UN BOTÓN, pero quiero que cuando active el carro, los otros dos estén desactivados, mediante botones y el event trigger  aqui mi script:
 

   

using System.Collections;
using UnityEngine;
using UnityEngine.EventSystems;
public class BotonActivador : MonoBehaviour {
bool button_control = false;
public GameObject Carro1;
public GameObject Carro2;
public GameObject Carro3;
    public void Coche1(BaseEventData eventData)
{
Carro1.gameObject.SetActive(true);
}
    public void Coche2(BaseEventData eventData)
{
Carro2.gameObject.SetActive(true);
}
    public void Coche3(BaseEventData eventData)
{
Carro1.gameObject.SetActive(true);
}
    void Update () {
        //en esta parte no se como ponerle que para cuando un carro este activo, el otro se desactive.
if (button_control)
        
        {
         Carro1.gameObject.SetActive(false);
         Carro2.gameObject.SetActive(false);
         Carro3.gameObject.SetActive(false);
}
        else
            Carro1.gameObject.SetActive(false);
            Carro2.gameObject.SetActive(false);
            Carro3.gameObject.SetActive(false);
}
}

   
       
   


   en el void update esta el problema no se como ponerle para que desactive a los otros dos cuando uno ya esta activo, y hacer lo mismo cuando use el carro 2 o el 3


    


   algo como: 
   

      
      
         
             
         
         
            uso carro 1; desactivo 2 y 3
         
         
            uso carro 2; desactivo 3 y 1
         
         
            uso carro 3; desactivo 1 y 2
         
         
         
         
             
         
      
   [/quote]
   
       
   


   Porfavor si alguien puede ayudarme!


    

Tienes que poner cada vez que quieras activar un carro el las dos líneas siguientes desactivar los dos carros que quieras desactivar
 
 

Abril 11, 2018, 04:18:38 PM #2 Ultima modificación: Abril 13, 2018, 12:22:23 PM por pioj
Cita de: brok date=1523437298Tienes que poner cada vez que quieras activar un carro el las dos líneas siguientes desactivar los dos carros que quieras desactivar
   
   
       
   


Osea en void update
 

Poner If(button_control)
carro1.gameObject.SetActive (True)
else 
carro2.gameObject.SetActive(false)
carro3.gameObject.SetActive (false)
}
If (button_Control)
carro2.gameObject.SetActive (True)
Else
carro1.gameObject.SetActive (false)
carro3.gameObject.SetActive (false)

 
Algo así?  Poner de referencia cuando un carro este activo, desactivar los otros 2.
 
Esta bien lo que hago?

Por lo que intento entender del código estas intentando hacer un Selector de Coches.
 
Primero -
 
1º Crear un Arreglo de GameObject, luego asignar todos los coches en escena.
 

public GameObject[] Coches;

 
2º Crear la lógica para seleccionar el siguiente o el anterior.
 

private int _current;
public void Next()
{
_current ++;
if(_current >= Coches.length)
   _current = 0;
OnChange(_current);
}
public void Last()
{
_current ++;
if(_current < 0)
   _current = Coches.Length -1;
OnChange(_current);
}          
                   
private void OnChange(int index){}

 
3º Necesitas obtener el actual objeto.
 

public GameObject GetCurrent { get { return Choches[_current]; } }

 
4º Crear la lógica para Activar y desactivar los objeto, crearemos una variable GameObject para almacenar temporalmente el objeto actual, luego dentro de la función OnChange vamos a hacer lo siguiente
 

private GameObject _lastObject { get; set; }
public virtual void OnChange(int index)
{
if(_lastObject != null)
   _lastObject.SetActive(false);
_lastObject = GetCurrent();   
GetCurrent().SetActive(true);
}

 
y eso seria todo.
 
 
 
Luego desde los Botones de UGUI seleccionas el componente y llamas la Función Next o Last.

Etiquetas: