Unity摄像机拍照并显示在小窗口里(RenderTexture和RawImage将摄像机图像渲染到GUI屏幕上小图显示)
1.实现效果和实现思想
实现效果:
本文使用飞机模型实现此功能。
实现思想:
01.在 hierarchy创建RawImage 和Toggle,并为它们命名为如下的名字。
02.在assest中创建一个RenderTexture,并为其命名为render。
03.在飞机的预制体下面创建一个相机,命名为FollowCamera
04.编写脚本cameraDisplay,编写完成之后挂在isRawImage上面
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class cameraDisplay : MonoBehaviour
{
public RenderTexture rt;
public Camera cam;
private RawImage UIImage;
Toggle isRawCamera;
void Start()
{
if (isRawCamera == null)
{
isRawCamera = GetComponent<Toggle>();
}
isRawCamera.isOn = false;
if (UIImage == null)
{
UIImage = GameObject.Find("RawImage").GetComponent<RawImage>();
}
UIImage.enabled = false;
UIImage.texture = null;
}
void Update()
{
if (Input.GetKeyUp(KeyCode.F))
{
if (isRawCamera.isOn == false)
{
isRawCamera.isOn = true;
}
else
{
isRawCamera.isOn = false;
}
}
if (isRawCamera.isOn == true)
{
UIImage.enabled = true;
UIImage.texture = rt;
}
else
{
UIImage.enabled = false;
UIImage.texture = null;
}
}
}
05.将render拉到Rt上,相机也拖拽到Cam里。
06.摄像机的TargetTexture也要将render拖拽过去!!!(注意,如果不拖过去,显示的小窗口中将会是一片黑色或者并不是动图!如下图)
实现截图:
以上,本文是看着
https://blog.csdn.net/weixin_39549161/article/details/99303088
这个链接做的。
我踩坑的点:
01.添加了挂在飞机上面的摄像机之后,Game只显示FollowCamera的画面,不在显示mainCamera的画面了。这种情况下你要去查看2个相机的Depth属性。Depth属性值越大,谁就先显示在Game当中。
02.忘了将摄像机的TargetTexture属性也要将render拖拽过去,以至于找了半天,小窗口显示的还是黑屏。