• 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
Snapping System ottimizzato.
#1
Salve a tutti,
avrei bisogno di aiuto per la creazione di un sistema Snapping (in-game). La mia idea era quella di creare tanti quadrati (con spessore y 0 per ridurre il carico al rendering) e all' interno inserire uno script che utilizza OnMouseEnter e Exit... il problema giunge con la creazione di centinaia di oggetti e il gioco inizia a laggare. Come risolvo questo problema? Grazie in anticipo.
 
Rispondi
#2
(10-08-2017, 01:50 PM)Penca53 Ha scritto: Salve a tutti,
avrei bisogno di aiuto per la creazione di un sistema Snapping (in-game). La mia idea era quella di creare tanti quadrati (con spessore y 0 per ridurre il carico al rendering) e all' interno inserire uno script che utilizza OnMouseEnter e Exit... il problema giunge con la creazione di centinaia di oggetti e il gioco inizia a laggare. Come risolvo questo problema? Grazie in anticipo.

Come crei gli oggetti?
 
Rispondi
#3
Gli oggetti li creo all'inizio con 2 loop for (uno per la x e uno per la z) con Instantiate(ecc..) poi li disattivo con SetActive(false); Quando si preme il tasto m si attivano gli oggetti... inoltre ho anche fatto un sistema per risparmiare memoria con la disattivazione degli oggetti a seconda della distanza.
 
Rispondi
#4
(10-08-2017, 07:08 PM)Penca53 Ha scritto: Gli oggetti li creo all'inizio con 2 loop for (uno per la x e uno per la z) con Instantiate(ecc..) poi li disattivo con SetActive(false); Quando si preme il tasto m si attivano gli oggetti... inoltre ho anche fatto un sistema per risparmiare memoria con la disattivazione degli oggetti a seconda della distanza.

Hai provato a creare un prefab che rappresenti il singolo oggetto e poi creare n istanze del prefab?
 
Rispondi
#5
Si certo, l'oggetto che costruisco ad inizio game è un prefab.
 
Rispondi
#6
Valuta che con SetActive, non li rimuovi dalla memoria.
L'oggetto è composto dal solo quadrato?
Ci sono texture o altri oggetti attaccati al quadrato?
Dopo averli creati, fai altre operazioni di trasformazione?
Che istruzioni hai messo nei metodi Update() degli script che hai inserito?
 
Rispondi
#7
(11-08-2017, 05:44 PM)aandrea1974 Ha scritto: Valuta che con SetActive, non li rimuovi dalla memoria.
L'oggetto è composto dal solo quadrato?
Ci sono texture o altri oggetti attaccati al quadrato?
Dopo averli creati, fai altre operazioni di trasformazione?
Che istruzioni hai messo nei metodi Update() degli script che hai inserito?

Allora il quadrato è solamente un quadrato poi c'è un materiale grigio semi-trasparente e quando il mouse entra in collisione cambia di materiale e diventa verde chiaro. Gli update non gli ho usati.... cmq questo problema l'ho risolto utilizzando la matematica.... infatti ho messo i uno script a parte la creazione di un ray che parte dal mouse e la solita serie di for loops per x e z e nel caso la posizione della collisione del ray è maggiore della x e z e minore della x e z aumentati di 1 (quindi ho utlizzato la x e z come angoli in alto a sx dei quadrati) allora crea un quadrato alla posizione x+0.5f ez+0.5f cioè il centro del quadrato immaginario. Cosa ne pensate?
 
Rispondi
#8
(12-08-2017, 02:34 PM)Penca53 Ha scritto:
(11-08-2017, 05:44 PM)aandrea1974 Ha scritto: Valuta che con SetActive, non li rimuovi dalla memoria.
L'oggetto è composto dal solo quadrato?
Ci sono texture o altri oggetti attaccati al quadrato?
Dopo averli creati, fai altre operazioni di trasformazione?
Che istruzioni hai messo nei metodi Update() degli script che hai inserito?

Allora il quadrato è solamente un quadrato poi c'è un materiale grigio semi-trasparente e quando il mouse entra in collisione cambia di materiale e diventa verde chiaro. Gli update non gli ho usati.... cmq questo problema l'ho risolto utilizzando la matematica.... infatti ho messo i uno script a parte la creazione di un ray che parte dal mouse e la solita serie di for loops per x e z e nel caso la posizione della collisione del ray è maggiore della x e z e minore della x e z aumentati di 1 (quindi ho utlizzato la x e z come angoli in alto a sx dei quadrati) allora crea un quadrato alla posizione x+0.5f ez+0.5f cioè il centro del quadrato immaginario. Cosa ne pensate?

Se il risultato è quello che volevi e non hai problemi di prestazione, direi che va bene.
 
Rispondi
#9
Il risultato a me va bene... le prestazioni sono eccellenti... considera che il loop parte da -100 e arriva a 100 e ce ne sono 2 quindi 100*100*100*100 fa 1 miliardo quindi si... le prestazioni sono ottime.
 
Rispondi
#10
(12-08-2017, 03:08 PM)Penca53 Ha scritto: Il risultato a me va bene... le prestazioni sono eccellenti... considera che il loop parte da -100 e arriva a 100 e ce ne sono 2 quindi 100*100*100*100 fa 1 miliardo quindi si... le prestazioni sono ottime.

Non credo sia un miliardo.
8 zeri sono 100M.
Comunque se hai due loop uno dentro all'altro, sarà 200 * 200.
 
Rispondi
#11
(12-08-2017, 09:47 PM)aandrea1974 Ha scritto:
(12-08-2017, 03:08 PM)Penca53 Ha scritto: Il risultato a me va bene... le prestazioni sono eccellenti... considera che il loop parte da -100 e arriva a 100 e ce ne sono 2 quindi 100*100*100*100 fa 1 miliardo quindi si... le prestazioni sono ottime.

Non credo sia un miliardo.
8 zeri sono 100M.
Comunque se hai due loop uno dentro all'altro, sarà 200 * 200.

Si hai ragione... cmq 40.000 è un bel numero!
 
Rispondi
#12
(13-08-2017, 12:19 PM)Penca53 Ha scritto:
(12-08-2017, 09:47 PM)aandrea1974 Ha scritto:
(12-08-2017, 03:08 PM)Penca53 Ha scritto: Il risultato a me va bene... le prestazioni sono eccellenti... considera che il loop parte da -100 e arriva a 100 e ce ne sono 2 quindi 100*100*100*100 fa 1 miliardo quindi si... le prestazioni sono ottime.

Non credo sia un miliardo.
8 zeri sono 100M.
Comunque se hai due loop uno dentro all'altro, sarà 200 * 200.

Si hai ragione... cmq 40.000 è un bel numero!

L'importante è che ora le prestazioni vadano bene.
 
Rispondi
  


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  iRDS - Intelligent Race Driver System info mattew1 2 224 10-06-2017, 03:52 PM
Ultimo messaggio: mattew1
  Spawnare un particle system con il mouse samuele55598@gmail.com 20 1,296 26-06-2015, 11:26 AM
Ultimo messaggio: Lorenz

Vai al forum:


Browsing: 1 Ospite(i)