|
@@ -0,0 +1,90 @@
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.IO;
|
|
|
+using ET;
|
|
|
+using FairyGUI;
|
|
|
+using UnityEngine;
|
|
|
+
|
|
|
+namespace GFGGame
|
|
|
+{
|
|
|
+ class ShareDataManager : SingletonBase<ShareDataManager>
|
|
|
+ {
|
|
|
+ //当前分享
|
|
|
+ public byte[] imageBytes;
|
|
|
+ public Camera targetCamera; // 指定要读取的摄像机
|
|
|
+ public string outputImagePath; // 输出图片的路径
|
|
|
+
|
|
|
+ public void ShareImage(string imageUrl)
|
|
|
+ {
|
|
|
+ // 使用ShareSDK或其他分享插件来分享图片URL
|
|
|
+ // 这里需要根据具体插件的API来实现分享功能
|
|
|
+ }
|
|
|
+ public void CaptureCameraToImage(bool isJump = true)
|
|
|
+ {
|
|
|
+ targetCamera = GameObject.Find("Stage Camera").GetComponent<Camera>();
|
|
|
+ SetImageTargetPath();
|
|
|
+ // 创建RenderTexture
|
|
|
+ RenderTexture renderTexture = new RenderTexture(targetCamera.pixelWidth, targetCamera.pixelHeight, 24);
|
|
|
+ targetCamera.targetTexture = renderTexture;
|
|
|
+
|
|
|
+ // 强制摄像机渲染
|
|
|
+ targetCamera.Render();
|
|
|
+
|
|
|
+ // 创建Texture2D
|
|
|
+ Texture2D screenShot = new Texture2D(targetCamera.pixelWidth, targetCamera.pixelHeight, TextureFormat.RGBA32, false);
|
|
|
+ RenderTexture.active = renderTexture;
|
|
|
+ screenShot.ReadPixels(new Rect(0, 0, targetCamera.pixelWidth, targetCamera.pixelHeight), 0, 0);
|
|
|
+ screenShot.Apply();
|
|
|
+
|
|
|
+ // 将RenderTexture中的像素数据读取到Texture2D
|
|
|
+ screenShot.ReadPixels(new Rect(0, 0, targetCamera.pixelWidth, targetCamera.pixelHeight), 0, 0);
|
|
|
+ screenShot.Apply();
|
|
|
+
|
|
|
+ // 将Texture2D保存为图片
|
|
|
+ imageBytes = screenShot.EncodeToPNG();
|
|
|
+
|
|
|
+ // 保存到磁盘
|
|
|
+ File.WriteAllBytes(outputImagePath, imageBytes);
|
|
|
+
|
|
|
+ // 释放资源
|
|
|
+ renderTexture.Release();
|
|
|
+ Resources.UnloadUnusedAssets();
|
|
|
+ targetCamera.targetTexture = null;
|
|
|
+
|
|
|
+ Debug.Log("Camera capture saved to " + outputImagePath);
|
|
|
+ if(isJump)
|
|
|
+ {
|
|
|
+ ViewManager.Show<ShareView>();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public Texture2D ConvertBytesToTexture(byte[] imageBytes)
|
|
|
+ {
|
|
|
+ // 创建一个新的Texture2D对象
|
|
|
+ Texture2D texture = new Texture2D(targetCamera.pixelWidth, targetCamera.pixelHeight); // 宽度和高度需要根据图片实际尺寸来设置
|
|
|
+ texture.LoadImage(imageBytes); // 加载图片数据
|
|
|
+
|
|
|
+ // 应用纹理设置
|
|
|
+ texture.Apply();
|
|
|
+
|
|
|
+ return texture;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void SetImageTargetPath()
|
|
|
+ {
|
|
|
+#if UNITY_EDITOR
|
|
|
+
|
|
|
+ outputImagePath = Application.dataPath + "/StreamingAssets" + "/share.png";
|
|
|
+
|
|
|
+#elif UNITY_IPHONE
|
|
|
+
|
|
|
+ outputImagePath = Application.dataPath+"/Ray"+"/share.png";
|
|
|
+
|
|
|
+#elif UNITY_android
|
|
|
+
|
|
|
+ outputImagePath = "jar:file://"+Application.dataPath+"!/assets/"+"/share.png";
|
|
|
+
|
|
|
+#endif
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|