• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
GameObject.Find
#1
Volevo porvi un quesito che non riesco a risolvere da solo: nella mia scena ho posizionato due porte con lo stesso nome, e ognuna di esse possiede una maniglia (tutte e due con lo stesso nome) che funge da Child. Con uno script sto cercando di rompere la maniglia di una sola porta (lo script è un component della porta in questione, ma il tutto viene attivato da un trigger esterno) e per farlo sto utilizzando la funzione GameObject.Find con il nome della maniglia.

Tutto questo funziona, però ho un dubbio: con questa funzione non dovrebbe chiamare pure l'altra maniglia visto che ha lo stesso nome? Non capisco perchè non sia così, qualcuno me lo può spiegare?!
 
Rispondi
#2
Allora la funzione GameObject.Find, cosa fa? Analizza object per object nella hierarchy dall'alto verso il basso. Quindi quella che trova prima assegna come valore della variabile, per farti capire meglio ecco come funziona il GameObjectFind : 

Codice:
public GameObject Find(string findName)
{
    for(int i = 0; i < hierarchy; i++)
    {
        if(hierarchy[i].name == findName)
        {
            return hierarchy[i];
            break; //rompe il ciclo perchè il valore è stato assegnato quindi è inutile continuare a controllare
    }
    return null;
}
 
Rispondi
#3
Quindi in poche parole GameObject.Find riesce a trovare prima la maniglia imparentata con la porta su cui devo interagire, piuttosto che andare a trovare la maniglia di un'altra porta?
E se è così, allora conviene lo stesso lasciare questa funzione?
 
Rispondi
#4
Trova la maniglia disposta per prima nella gerarchia, se la maniglia 1 si trova sopra la maniglia 2 nella gerarchia viene trovata per prima. Se vuoi fare una cosa più precisa differenzia i nomi e stai tranquillo

Porta 1_
Maniglia1

Porta 2_
Maniglia2
 
Rispondi
#5
il problema è che ho inserito un'animazione nella porta e nella maniglia con quei nomi, quindi appena cambio i nomi l'animazione non parte più
comunque se la priorità riguarda gli oggetti nella gerarchia della porta piuttosto a quelli che non lo sono, allora potrei stare tranquillo

caso mai, appena trovo qualche bug, cercherò di rimediare
 
Rispondi
#6
Ah allora potresti utilizzare i tag per risolvere il problema dell'anim.
GameObject.FindGameObjectWithTag(tag);
 
Rispondi
#7
ho già provato impostare il tag della maniglia e quindi chiamarla con quella funzione, ma per qualche strano motivo non funziona
 
Rispondi
#8
Non so proprio che dirti :/
 
Rispondi
#9
Risolto: ho messo la funzione GameObject.FindGameObjectWithTag nel void Start () anziché nel void Update (),  e adesso funziona e sono più tranquillo, tanto ho messo un tag unico per quella maniglia. Grazie per il consiglio.
 
Rispondi
#10
Figurati Big Grin
 
Rispondi
  


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  Script condiviso tra + gameobject Almiotti79 7 743 22-09-2016, 11:45 AM
Ultimo messaggio: Almiotti79

Vai al forum:


Browsing: 2 Ospite(i)