Перепечатка [Unity3D] Камера Unity3D с прозрачными скриншотами - Jingru ♂ fish - Blog Garden
using System;
using UnityEngine;
using System.IO;
public class CropPicture : MonoBehaviour
{
public Camera cropCamera; //待截图的目标摄像机
RenderTexture renderTexture;
Texture2D texture2D;
void Start()
{
renderTexture = new RenderTexture(800, 600, 32);
texture2D = new Texture2D(800, 600, TextureFormat.ARGB32, false);
cropCamera.targetTexture = renderTexture;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
RenderTexture.active = renderTexture;
texture2D.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);
texture2D.Apply();
RenderTexture.active = null;
byte[] bytes = texture2D.EncodeToPNG();
File.WriteAllBytes(Application.dataPath + "//pic//" + (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalMilliseconds + ".png", bytes);
}
}
}
Затем перетащите этот скрипт на основную камеру
Создайте новую камеру, которая должна делать скриншоты, зачем вам создавать новую? Потому что у него не может быть скайбокса.
Затем перетащите этот объект камеры в переменную CropCamera в скрипте CropPicture основной камеры.
Затем установите свойство сплошной цвет камеры, которая должна сделать снимок экрана, и установите прозрачный фон.
Это можно использовать для создания снимка экрана 3D-модели и отображения его в пользовательском интерфейсе, например, в списке рюкзака персонажа.Необходимо отображать изображение, но не обязательно отображать модель.Отображение модели приведет к тому, что прокрутка UGUI не будет закрыта маской, и модель не будет отображаться при скольжении.Это было отображено в пользовательском интерфейсе и может быть решено только путем написания шейдера.Шейдер действительно не понимает. Так динамически сгенерировать скриншот модели в рюкзаке, отобразить ее в списке, нажать на элемент списка, и справа отобразится отдельная модель
Запиши это!