unity中鼠标划定范围截图

在Unity中,通过监听鼠标按钮的按下和抬起事件,可以划定一个矩形区域并实现截图功能。首先记录鼠标按下时的位置,然后在鼠标抬起时计算选定区域的宽度和高度。使用WaitForEndOfFrame确保所有渲染完成后,创建一个Texture2D对象读取选定区域的像素,并将其编码为PNG图像保存到应用的数据路径下。
摘要由CSDN通过智能技术生成
using UnityEngine;
using System.Collections;

public class jietu : MonoBehaviour {

    int w, h;
    Vector3 v1, v2;
    void Update()
    {
        //按下鼠标拖动直至松开鼠标划定范围,截图
        if (Input.GetMouseButtonDown(0))
        {
            v1 = Input.mousePosition;//鼠标按下位置~
        }
        if (Input.GetMouseButtonUp(0))
        {
            v2 = Input.mousePosition; //鼠标抬起位置~
            //计算鼠标划定范围的长和宽~~
            w = int.Parse(Mathf.Abs(v1.x - v2.x).ToString());
            h = int.Parse(Mathf.Abs(v1.y - v2.y).ToString());
            StartCoroutine(GetCapture());
        }
    }
    IEnumerator GetCapture()
    {
        //等待所有的摄像机跟GUI渲染完成
        yield return new WaitForEndOfFrame();

        Texture2D tex = new Texture2D(w, h, TextureFormat.RGB24, false);
        //计算区域
        float vx = (v1.x > v2.x) ? v2.x : v1.x;                                 //取较小的x,y作为起始点
        float vy = (v1.y > v2.y) ? v2.y : v1
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity实现鼠标在固定圆形范围内的移动可以通过以下步骤完成: 1. 首先,创建一个空的GameObject,并将其命名为"MouseMovement"(或其他你喜欢的名称)。将该GameObject的位置设置为鼠标当前的屏幕坐标。 2. 创建一个脚本并将其附加到"MouseMovement" GameObject上。可以将脚本命名为"MouseRestriction"。 3. 在脚本,添加以下变量来存储圆形范围的半径和圆心位置: ```c# public float radius = 5f; // 圆形范围的半径 public Vector2 center; // 圆心位置 ``` 4. 在Update函数,使用以下代码来限制鼠标移动在圆形范围内: ```c# void Update() { // 获取鼠标当前的屏幕坐标 Vector2 mousePosition = Input.mousePosition; // 将屏幕坐标转换为世界坐标 Vector3 worldPosition = Camera.main.ScreenToWorldPoint(new Vector3(mousePosition.x, mousePosition.y, 10f)); // 计算鼠标位置和圆心位置之间的距离 float distance = Vector2.Distance(worldPosition, center); // 如果距离大于半径,则限制鼠标在圆形范围内移动 if (distance > radius) { // 计算鼠标位置相对于圆心的方向向量 Vector2 direction = worldPosition - center; // 将方向向量归一化,并乘以半径 direction = direction.normalized * radius; // 重新计算鼠标位置 worldPosition = center + direction; } // 更新"MouseMovement" GameObject的位置为限制后的鼠标位置 transform.position = worldPosition; } ``` 这样,鼠标移动将被限制在指定的圆形范围内。确保将Camera.main替换为你场景的实际相机引用,也可以根据需要调整半径和圆心的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值