67 lines
1.8 KiB
C#
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;
|
|
}
|
|
}
|