/// <summary> /// スナップショット撮影 /// </summary> public static void Take(SnapshotSetting setting) { if (setting.Camera == null || Instance._dic.ContainsKey(setting.Camera)) { return; } Instance._dic[setting.Camera] = AsyncTake(setting, bytes => { Debug.Log("capture."); File.WriteAllBytes(setting.FilePath, bytes); Instance._dic.Remove(setting.Camera); }); SimpleCoroutine.StartCoroutine(Instance._dic[setting.Camera]); }
private static IEnumerator AsyncTake(SnapshotSetting setting, Action <byte[]> callback) { yield return(setting.Timing); var renderTexture = new RenderTexture(setting.Width, setting.Height, 24, RenderTextureFormat.ARGB32); var texture2D = new Texture2D(setting.Width, setting.Height, TextureFormat.ARGB32, false); var tempSetting = new TempCameraSetting(setting.Camera); setting.Camera.targetTexture = renderTexture; setting.Camera.Render(); RenderTexture.active = renderTexture; texture2D.ReadPixels(new Rect(0, 0, setting.Width, setting.Height), 0, 0); Object.Destroy(renderTexture); tempSetting.RevertSetting(setting.Camera); callback(texture2D.EncodeToPNG()); }