Question by
thibetanus · Sep 05, 2018 at 05:25 AM ·
coroutineupdate functioncapturescreenshot
control the update or coroutine
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class capture : MonoBehaviour {
float delay = 1.3f;
int count = 0 ;
void ScreenCapture (int width, int height , string path){
byte[] imgBytes = null;
Texture2D texture = new Texture2D(Screen.width , Screen.height , TextureFormat.RGB24 , false);
texture.ReadPixels(new Rect(0,0,Screen.width, Screen.height), 0 ,0, false);
texture.Apply ();
imgBytes = texture.EncodeToJPG();
System.IO.File.WriteAllBytes(path + ".jpg" , imgBytes);
Debug.Log( path + " has been saved");
}
void Update(){
StartCoroutine("Rendering");
}
IEnumerator Rendering () {
yield return new WaitForEndOfFrame();
string path = @"/home/haeyun/Desktop/screen/test"+ count;
ScreenCapture(Screen.width, Screen.height, path);
count ++;
yield return new WaitForSeconds(delay); // 이게 왜 처음에만 적용이 될까??????? 허어어어어어ㅓ,,,,
}
}
Is there a way to control my real-time capture to make it a little slower? now the files are saved in real time, but too many are saved. How can I adjust it if I want to take about 3 pictures per second?
Comment
Answer by thibetanus · Sep 05, 2018 at 06:26 AM
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class capture : MonoBehaviour {
float delay = 0.3f;
float nextTime = 0;
int count = 0 ;
void ScreenCapture (int width, int height , string path){
byte[] imgBytes = null;
Texture2D texture = new Texture2D(Screen.width , Screen.height , TextureFormat.RGB24 , false);
texture.ReadPixels(new Rect(0,0,Screen.width, Screen.height), 0 ,0, false);
texture.Apply ();
imgBytes = texture.EncodeToJPG();
System.IO.File.WriteAllBytes(path + ".jpg" , imgBytes);
Debug.Log( path + " has been saved");
}
void Update(){
StartCoroutine("Rendering");
}
IEnumerator Rendering () {
if(Time.time >= nextTime){
yield return new WaitForEndOfFrame();
string path = @"/home/haeyun/Desktop/screen/test"+ count;
ScreenCapture(Screen.width, Screen.height, path);
count ++;
nextTime += delay ;
}
}
}
i solve that!! :D The update frequceny is irrelevant and has been solved by adjusting the time in the coroutine function