这篇文章主要为大家详细介绍了unity实现按住鼠标选取区域截图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了unity按住鼠标选取区域截图的具体代码,供大家参考,具体内容如下
private int capBeginX;
private int capBeginY;
private int capFinishX;
private int capFinishY;
public Image showImg;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown (0)) {
Vector3 mousePos = Input.mousePosition;
Vector2 beginPos = new Vector2 (mousePos.x, mousePos.y);
capBeginX = (int)mousePos.x;
capBeginY = (int)mousePos.y;
}
if (Input.GetMouseButtonUp (0)) {
Vector3 mousePos = Input.mousePosition;
Vector2 finishPos = new Vector2 (mousePos.x, mousePos.y);
capFinishX = (int)mousePos.x;
capFinishY = (int)mousePos.y;
//重新计算截取的位置
int capLeftX = (capBeginX < capFinishX) ? capBeginX : capFinishX;
int capRightX = (capBeginX < capFinishX) ? capFinishX : capBeginX;
int capLeftY = (capBeginY < capFinishY) ? capBeginY : capFinishY;
int capRightY = (capBeginY < capFinishY) ? capFinishY : capBeginY;
Rect rect=new Rect(capLeftX,capLeftY,capRightX,capRightY);
StartCoroutine( Captrue (rect));
}
}
IEnumerator Captrue(Rect rect){
int t_width = Mathf.Abs (capFinishX - capBeginX);
int t_length = Mathf.Abs (capFinishY - capBeginY);
yield return new WaitForEndOfFrame ();
Texture2D t = new Texture2D(t_width , t_length,TextureFormat.RGB24, true);//需要
正确设置好图片保存格式
t.ReadPixels(rect, 0, 0, false);//按照设定区域读取像素;注意是以左下角为原点读取
t.Apply();
byte[] byt = t.EncodeToPNG();
File.WriteAllBytes(Application.dataPath + Time.time + ".png", byt);
Sprite target = Sprite.Create (t, new Rect(0, 0, t_width, t_length), Vector2.zer);
showImg.sprite = target;
}
小编为大家分享一段Unity实现截屏功能的代码,供大家参考:
public class ScreenShot : MonoBehaviour
{
void OnScreenShotClick()
{
//得到当前系统时间
System.DateTime now = System.DateTime.Now;
string times = now.ToString();
//去掉前后空格
times = times.Trim();
//将斜杠替换成横杠
times = times.Replace("/", "-");
string fileName = "ARScreenShot" + times + ".png";
//判断该平台是否为安卓平台
if (Application.platform == RuntimePlatform.Android)
{
//参数依次为 屏幕宽度 屏幕高度 纹理格式 是否使用映射
Texture2D texture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
//读取贴图
texture.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
//应用截屏
texture.Apply();
//将对象序列化
byte[] bytes = texture.EncodeToPNG();
//设定存储到的手机文件夹路径
string destination = "/sdcard/DCIM/Screenshots";
//如果不存在该文件夹
if (!Directory.Exists(destination))
{
//创建该文件夹
Directory.CreateDirectory(destination);
}
string pathSave = destination + "/" + fileName;
File.WriteAllBytes(pathSave, bytes);
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持得得之家。
织梦狗教程
本文标题为:unity实现按住鼠标选取区域截图


基础教程推荐
猜你喜欢
- 实例详解C#实现http不同方法的请求 2022-12-26
- Unity 如何获取鼠标停留位置下的物体 2023-04-10
- C#中的Linq to JSON操作详解 2023-06-08
- Unity shader实现高斯模糊效果 2023-01-16
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20
- C# 解析XML和反序列化的示例 2023-04-14
- C#中 Json 序列化去掉null值的方法 2022-11-18
- C#调用摄像头实现拍照功能的示例代码 2023-03-09