Script condiviso tra + gameobject - Versione stampabile +- Creare Videogiochi - Game Developer (https://www.making-videogames.net/giochi) +-- Forum: Unity3D Italia (https://www.making-videogames.net/giochi/Forum-Unity3D-Italia) +--- Forum: Richieste di Aiuto per Unity 3D (https://www.making-videogames.net/giochi/Forum-Richieste-di-Aiuto-per-Unity-3D) +--- Discussione: Script condiviso tra + gameobject (/thread-Script-condiviso-tra-gameobject) |
Script condiviso tra + gameobject - Almiotti79 - 21-09-2016 Ciao.. ho un problema, creando + oggetti e associandovi lo stesso script, in game se cambia ad esempio una variabile da vera a falsa per un oggetto.. si riflette su ogni altro oggetto a cui lo script è associato.. ho provato a metterla privata.. ma non capisco.. e purtroppo non parlando bene inglese non resco a reperire informazioni adeguate a superare il problema. Qualcuno può aiutarmi? Grazie RE: Script condiviso tra + gameobject - alessiobb3b - 21-09-2016 è ovvio lo script è uno ed è condiviso per tutti basta che da una parte si attivi e si attiva su tutti ti conviene fare più booleane una per oggetto RE: Script condiviso tra + gameobject - Almiotti79 - 21-09-2016 Grazie, ma non dovrebbe esserci un modo per renderle legate all'oggetto al quale lo script è associato ? RE: Script condiviso tra + gameobject - Zettamax - 21-09-2016 Ciao, il problema che hai è molto strano perchè, cambiando lo stato di una variabile dello script di un gameobject cambia solo lo stato della variabile per quel gameobject e non per tutti quanti, a meno che non si vada a modificare lo script. Per cambiare lo stato della variabile stai usando un altro script o l'inspector ? RE: Script condiviso tra + gameobject - Chip - 21-09-2016 Tutto dipende dal capire cosa intendi quando dici "creando + oggetti e associandovi lo stesso script". Cosa c'è in questo script? Che genere di oggetti sono? Ne hai fatto dei prefabs? Ogni oggetto dovrebbe avere un suo script. Questa variabile è public? Si vede nell'inspector? RE: Script condiviso tra + gameobject - Almiotti79 - 22-09-2016 Ciao, semplifico la cosa, allora ho 2 plane creati trascinando un prefab, ho un cubo creato solo sull'area di gioco (nessun prefab) A questi tre gameObject attacco lo stesso script : [attivatore.cs] using UnityEngine; using System.Collections; public class attivatore : MonoBehaviour { void Update () { if (Input.GetMouseButtonDown (0)) { Debug.Log (transform.position + "/n/r"); } } } [fine file] Qualsiasi oggetto clicco, lui mi stampa a console la posizione di tutti e tre gli oggetti : (0.7, 1.0, 5.7)/n/r UnityEngine.Debug:Log(Object) (0.0, 0.0, 0.0)/n/r UnityEngine.Debug:Log(Object) (0.0, 0.0, 3.67)/n/r UnityEngine.Debug:Log(Object) Insomma.. qualsiasi cosa faccio nello script viene applicato a ogni oggetto a ci lo script è attaccato. Scusate l'ignoranza.. ma non riesco a trovare materiale didattico in italiano.. e a volte quindi mi perdo su quelle che sono fesserie magari. Grazie molto. RE: Script condiviso tra + gameobject - Almiotti79 - 22-09-2016 Ok .. aggiornamento.. devo usare il raycast per selezionare l'oggetto.. ma il problema nn si risolve.. la variabile è condivisa.. cioè io ho una variabile bool "attiva" se clicco sul primo.. essa passa a false, se clicco sul secondo.. essa risulta già false ... Allego il codice using UnityEngine; using System.Collections; public class rilevaCollisione : MonoBehaviour { public Material[] Materiali; private bool attivo = true; void Update(){ if (Input.GetMouseButtonUp (0)) { RaycastHit hit; Ray raggio = Camera.main.ScreenPointToRay (Input.mousePosition); Debug.DrawRay (raggio.origin, raggio.direction * 10, Color.yellow); if (Physics.Raycast (raggio,out hit)) { Debug.Log (hit.collider.name + " > " + attivo); if (attivo) { hit.collider.GetComponent<Renderer>().sharedMaterial = Materiali [0]; attivo = false; } else { hit.collider.GetComponent<Renderer>().sharedMaterial = Materiali [1]; attivo = true; } } } } } [SOLVED]: Script condiviso tra + gameobject - Almiotti79 - 22-09-2016 Risolto, sbagliavo tutto io.. In pratica devo avere 2 script separati. Un script che intercetta le azioni e che si appoggia a una oggetto esterno (anche la cam) e poi lo script con la variabile e l'azione da compiere innescata da chi intercetta. Allego i due codici : SCRIPT SULLA CAM : Codice: using UnityEngine; SCRIPT SUL PREFAB (E QUINDI LE SUE ISTANZE) : Codice: using UnityEngine; Grazie a tutti. Alla prox. |