Exemple #1
0
 /// <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]);
 }
Exemple #2
0
        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());
        }