Files
Fishing2/Assets/Scripts/Fishing/SkyCapture.cs
2025-05-10 12:49:47 +08:00

44 lines
1.7 KiB
C#

using UnityEngine;
public class SkyCapture : MonoBehaviour
{
public Camera mainCamera;
public Material reflectionSkyboxMaterial;
public RenderTexture skyRenderTexture;
private Camera skyCaptureCamera;
void Start()
{
// 创建一个隐藏的截图相机
GameObject camObj = new GameObject("SkyCaptureCam");
skyCaptureCamera = camObj.AddComponent<Camera>();
skyCaptureCamera.enabled = false;
// 配置截图用的 RenderTexture
skyRenderTexture = new RenderTexture(1024, 1024, 16, RenderTextureFormat.ARGB32);
skyRenderTexture.Create();
// 配置 skybox 材质(你需要一个简单的 Skybox/6 Sided Shader 材质)
reflectionSkyboxMaterial.SetTexture("_FrontTex", skyRenderTexture);
reflectionSkyboxMaterial.SetTexture("_BackTex", skyRenderTexture);
reflectionSkyboxMaterial.SetTexture("_LeftTex", skyRenderTexture);
reflectionSkyboxMaterial.SetTexture("_RightTex", skyRenderTexture);
reflectionSkyboxMaterial.SetTexture("_UpTex", skyRenderTexture);
reflectionSkyboxMaterial.SetTexture("_DownTex", skyRenderTexture);
}
void LateUpdate()
{
// 将截图相机位置同步到主相机
skyCaptureCamera.transform.position = mainCamera.transform.position;
skyCaptureCamera.transform.rotation = mainCamera.transform.rotation;
skyCaptureCamera.CopyFrom(mainCamera);
skyCaptureCamera.cullingMask = LayerMask.GetMask("Sky", "Clouds"); // 只渲染天空和云层
skyCaptureCamera.targetTexture = skyRenderTexture;
skyCaptureCamera.clearFlags = CameraClearFlags.Skybox;
skyCaptureCamera.Render();
}
}