Creazione e distruzione di istanze in room diverse

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
ben
Membro
Messaggi: 143
Iscritto il: 05/10/2016, 15:40
Specialità: programmazione
Uso: GM:Studio 1.4 Free
Contatta:

Creazione e distruzione di istanze in room diverse

Messaggio da ben »

Come si fa, dopo una variabile a distruggere e creare istanze in un'altra room rispetto a quella in cui si è in quel momento?

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: Creazione e distruzione di istanze in room diverse

Messaggio da Jak »

Non si può, finchè non passi alla relativa room questa è come se non esistesse.
Si possono comunque usare molti barbatrucchi, se gli oggetti sono persistenti è sufficiente disattivarli al cambio di room così che non facciano nulla. Al cambio di room basterà riattivare l'oggetto. Questo a patto di aver già visitato la room in precedenza e quindi aver creato l'oggetto.
Un'altra soluzione, più semplice e che porta a meno bug è quella di inserire una condizione if all'interno dei vari eventi basandosi sulla variabile di cui stai parlando.
In pratica tu non andrai mai a creare o distruggere l'oggetto in questione, semplicemente non farà nulla basandosi su una variabile scelta (che NON può essere dell'oggetto bensì globale visto che l'istanza dell'oggetto ancora non esiste)
In entrambi i casi non potrai sfruttare gli eventi di creazione e distruzione per fare qualcos'altro poichè come già detto non puoi veramente distruggere e creare istanze al di fuori della propria room con l'eccezione di tenerla persistent e quindi che rimane presente al cambio di room.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Alv
Membro
Messaggi: 133
Iscritto il: 14/11/2014, 22:33
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Località: Sicilia
Contatta:

Re: Creazione e distruzione di istanze in room diverse

Messaggio da Alv »

Interessante! In realtà un modo c'è: si potrebbe ritardare la distruzione degli oggetti in questione a quando avviene il cambio di room. Quindi potrei creare uno script "instance_destroy_room" che non distrugge subito l'istanza, ma si salva room e istanza da distruggere in una lista di comandi destroy. Quando avviene un cambio di room, un oggetto persistent controlla quella lista ed esegue tutti i comandi relativi a quella room.
Ultima modifica di Alv il 05/12/2020, 19:06, modificato 2 volte in totale.

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: Creazione e distruzione di istanze in room diverse

Messaggio da BaronVsCorsar »

Uhm... interessante quesito.
Secondo me però quando ci sono queste necessità il modo migliore è NON utilizzare l'editor room di GM, ma gestirsi tutta la popolazione delle istanze con un obj_controller.
In altre parole ti salvi con un altro metodo (file di testo?) quali oggetti devono essere creati (e in quale posizione) e obj_controller popolerà la stanza al momento opportuno.
Con altre variabili del programma deciderai cosa alterare rispetto quello che dice il file.

Ammesso che la GMS permetta ancora la creazione delle room... bhe, potresti creare una room ad hoc durante il runtime. Ma a questo punto, complicato per complicato segui il Baron's way: room vuota e oggetto controllore (un buon 60% delle mie room sono così).
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 44 ospiti