Uso el siguiente script para copiar la transformación de un gameObject.
public Transform alignment; void Update() { DontDestroyOnLoad(transform.gameObject); transform.position = new Vector3(alignment.position.x, alignment.position.y, alignment.position.z); float y = alignment.transform.localRotation.eulerAngles.y; float x = alignment.transform.localRotation.eulerAngles.x; float z = alignment.transform.localRotation.eulerAngles.z; transform.localEulerAngles = new Vector3(x, y, z); }Quiero acceder a esta transformación en otras escenas (aplicarla a gameObjects). ¿Cómo puedo llegar a las transformaciones que están en DontDestroyOnLoad?
Debe dar alineación como parámetro al método DontDestroyOnLoad, no transform.gameObject.
DontDestroyOnLoad(alignment.gameObject);Además, no necesita llamar a este método dentro de Update(). Solo llamarlo una vez es suficiente. Puedes llamarlo dentro de Start(), así:
void Start() { DontDestroyOnLoad(alignment.gameObject); }Ahora su gameobject de alineación seguirá siendo accesible cuando cambie de escena. Si desea acceder a él desde otros objetos de juego en la nueva escena, es posible que desee asignarle una etiqueta o convertirlo en un singleton.
En primer lugar, no utilice DontDestroyOnLoad en su función de actualización. Úselo en su función Start o Awake.
En segundo lugar, puede acceder a su objeto no destruido como lo haría con cualquier otro objeto. La única diferencia entre los dos es que el No Destruido permanece en la escena cuando cambia de escena.
Aquí hay algunas formas de acceder a él:
var obj = GameObject.Find("My Non Destroyed Object Name");O mi favorito personal, si el objeto se usa para puntuación o configuración, crearé un nuevo objeto de juego y le agregaré el siguiente script:
public class GameManager : MonoDevelop { /* These are all script on the same gameobject that is not being destroyed */ public static Settings settings; public static PlayerMananger playerMananger; public static UIManager uiManager; void Start() { DontDestroyOnLoad(this.gameobject); // Get the components settings = GetComponent<Settings>(); playerMananger = GetComponent<PlayerMananger>(); uiManager = GetComponent<UIManager>(); } }Ahora puedo crear un script desde cualquier lugar y puedo acceder a todos estos archivos de administrador y configuración simplemente usando:
var settings = GameManager.settings;