Unity 在Scroll View内连续截图并保存本地(把滚动列表内的内容截成一个长图)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、需求
- 二、创建Scroll View
- 1.Scroll View锚点选择
- 2.只是用垂直
- 3.添加组件Vertical Layout Group(垂直布局)用于垂直排序。
- 二、代码挂载
- 三、代码
- 总结
前言
在项目中得到一个需求,需要把考核结果,导出到本地。
1.导出PDF
2.直接截图导出
链接: 项目源码
一、需求
Scroll View是unity内的滚动列表,怎么在Scroll View内连续截图,并拼接成一个长图,保存本地。
二、创建Scroll View
1.Scroll View锚点选择
2.只是用垂直
3.添加组件Vertical Layout Group(垂直布局)用于垂直排序。
Vertical Layout Group(内容大小自动扩充)选择垂直Vertical Fit —》Preferred Size,用于向下自动扩充填充
二、代码挂载
三、代码
进行拼接长图,编辑器平台调试,Windows平台保存本地,并打开所保存的文件夹
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;
using System.IO;
namespace Twq
{/// <summary>/// 截图合成/// </summary>public class Capture_Long : MonoBehaviour{//public void /// <summary>/// Scroll View /// </summary>public RectTransform svrt;/// <summary>/// Content/// </summary>public RectTransform contentRT;public Action<string> CapCallBack;public Action<byte[]> CapByteCallBack;Vector2 vec;public Button DownloadBtn;private void Start(){// DownloadBtn.onClick.AddListener(() => {Cap_LongTex();});}/// <summary>/// 接长图,进行拼接/// </summary>/// <param name="SVRT">Scroll Rect</param>/// <param name="ContentRT">Content</param>public void Cap_LongTex(){StartCoroutine(Cap(svrt, contentRT));}private IEnumerator Cap(RectTransform SVRT, RectTransform ContentRT){yield return new WaitForSeconds(0.5f);//画布中的高度 float SV_Y = SVRT.sizeDelta.y;//content显示的区域高度 float Content_Y = ContentRT.anchoredPosition.y;