using System.Collections; using System.Collections.Generic; using UnityEngine; public class UavFpsCamera : MonoSingleton { public Camera uav_fps_camera; public RenderTexture camera_rendertexture; public delegate void UpdateCameraViwer(RenderTexture _rendertexture); public UpdateCameraViwer camera_update; private void Start() { camera_update += OnUpdateCameraTarget; } /// /// 更新目标 /// /// public void UpdateTarget(Transform _transform) { CreateCamera(); if (_transform != null) { uav_fps_camera.transform.SetParent(_transform); uav_fps_camera.transform.localEulerAngles = new Vector3(90, 0, 0); camera_update?.Invoke(camera_rendertexture); } else { uav_fps_camera.transform.SetParent(transform); camera_update?.Invoke(null); } } /// /// 相机目标切换事件 /// /// public void OnUpdateCameraTarget(RenderTexture _rt) { if (_rt == null) { MainCanvasManager.webcam_panel.camera_rawimage.texture = null; MainCanvasManager.webcam_panel.OnNagetive(); } else { MainCanvasManager.webcam_panel.camera_rawimage.texture = _rt; MainCanvasManager.webcam_panel.OnActive(false); } } public void CreateCamera() { var __uav_camera = new GameObject("UavCamera"); uav_fps_camera = __uav_camera.AddComponent(); uav_fps_camera.targetTexture = camera_rendertexture; } private void OnDestroy() { camera_update -= OnUpdateCameraTarget; } }