ict.lixian.three/Assets/Scripts/UAV/UavFpsCamera.cs

67 lines
1.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UavFpsCamera : MonoSingleton<UavFpsCamera>
{
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;
}
/// <summary>
/// 更新目标
/// </summary>
/// <param name="_transform"></param>
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);
}
}
/// <summary>
/// 相机目标切换事件
/// </summary>
/// <param name="_rt"></param>
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<Camera>();
uav_fps_camera.targetTexture = camera_rendertexture;
}
private void OnDestroy()
{
camera_update -= OnUpdateCameraTarget;
}
}