Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

309
Views
¿Cómo puedo actualizar una imagen en tiempo de ejecución en la unidad?

Estoy construyendo una transición suave de una escena de nivel a una escena de menú. La idea es hacer una captura de pantalla del nivel justo antes de que se cargue la siguiente escena (menú). luego tome esta captura de pantalla que se superpone a toda la pantalla y se desvanecerá para revelar el menú.

Al final de un nivel tomo una captura de pantalla.

 ScreenCapture.CaptureScreenshot("Resources/DestroyedBoss.png");

Cuando cargue la siguiente escena, esta captura de pantalla debería cargarse y superponerse a toda la escena.

 public Texture2D myTexture; void Start() { // load texture from resource folder myTexture = Resources.Load("DestroyedBoss") as Texture2D; GameObject rawImage = GameObject.Find("RawImage"); rawImage.GetComponent<RawImage>().texture = myTexture; }

La captura de pantalla se desvanecerá y el objeto que la contiene se destruirá.

 public RawImage imageToFade; void Update() { imageToFade.color -= new Color(0, 0, 0, 0.2f * Time.deltaTime); if (imageToFade.color.a < 0.1) Destroy(this.gameObject); }

Todo esto funciona bien, excepto por la carga de la captura de pantalla.

Parecería que Unity no actualiza la imagen mientras ejecuta el juego. Y siempre usa la captura de pantalla de la última vez que ejecuté el juego.

He estado buscando / googleando e intentando durante 2 días y estoy perdido.

¿Cómo puedo hacer que esto funcione? ¿Hay alguna forma de actualizar el archivo png mientras ejecuto mi juego? ¿Quizás crear un contenedor temporal para la captura de pantalla y establecerlo en RawImage?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Como comentó derHugo. puede usar Application.persistentDataPath para guardar su imagen.

 ScreenCapture.CaptureScreenshot(Application.persistentDataPath+"DestroyedBoss.png");

Para cargar la imagen, puede usar UnityWebRequestTexture.GetTexture.

 IEnumerator SetImage() { yield return new WaitForSeconds(1); using (UnityWebRequest uwr = UnityWebRequestTexture.GetTexture(Application.persistentDataPath + "DestroyedBoss.png")) { yield return uwr.SendWebRequest(); if (uwr.isNetworkError || uwr.isHttpError) { Debug.Log(uwr.error); } else { // Get downloaded asset bundle myTexture = DownloadHandlerTexture.GetContent(uwr); GameObject rawImage = GameObject.Find("RawImage"); rawImage.GetComponent<RawImage>().texture = myTexture; FadeOut.instance.StartFade(); } } }

Funciona bien, pero la captura de pantalla tarda unos segundos en aparecer en la carpeta. Así que para mí... no funciona muy bien. Usaré otra técnica. En lugar de atenuar la captura de pantalla mientras se carga el menú. Detendré el juego (Time.timescale = 0) y mostraré una captura de pantalla del menú, luego cargaré la escena del menú real.

Gracias de nuevo derHugo.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!