|  | @@ -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
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |