unity 鼠标实时画箭头

本文介绍如何在Unity中实现类似QQ和微信截图的鼠标画箭头功能,适用于WebGL和PC端。箭头由线段和图片构成,鼠标操作可调整箭头长度和方向。虽然在移动端未测试,但预计同样可行。通过OpenGL绘制线段,确保高性能,不过Unity本身不支持线段变粗。附带展示了线段和图片的Shader效果,线段具备透视特性且不会被物体遮挡,但会被UI覆盖。作者近期对图形学有深入研究,分享了部分成果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pc端的QQ与微信截图里都有个拖拽鼠标画箭头的功能以至于好做标注,其实unity也可以实现这个功能,亲测在webgl端与pc端可用,移动端由于感觉没意义没测试,博主觉得应该没啥问题,主要思路就是:箭头由线段和图片组成,鼠标可以实时改变箭头长短和方向(箭头的方向我暂时只是在2维下画的,绕着z轴实时旋转就行,一点向量基础就行),鼠标按下出现一个三角箭头,鼠标滑动就绘制出线段,线段可跟着你的鼠标变长变短,变粗这块博主很苦恼(因为男人嘛都要粗害羞),由于最近一直在研究OpenGL,所以线段是用GL画的,性能这块没得说,dc不会随着线段的条数增加,unity没有提供变粗的方法,那就忍忍吧哭,bb了这么多看起来很厉害吧!来张图压压惊:

效果看了那就直接看脚本了?

using UnityEngine;
using System.Collections;
public class LinesGL : MonoBehaviour
{
    private  Shader shader;
    private static Material m;
    private GameObject g;//便于查看当前点的坐标信息
    public Vector3[] lp;//存储的点
    private Vector3 s;//开始点
    public GameObject JT;
    private GameObject go;
    private Vector3 Vxyz;
    void Start()
    {
        shader = Shader.Find("Yogi3/ImageEffect/Occlusion");
        m = new Material(shader);
        m.SetColor("_MainColor", new Color(1f, 0.01f, 0.1f, 1f));//修改shader颜色
        g = new GameObject("g");
        lp = new Vector3[0];
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值