Unity_使用Image和脚本生成虚线段

news2024/12/24 2:42:36

生成如图样式的虚线段

原理:使用Image做一条线段,这个方法的原理就是给固定的片元长度,对Image进行分割,把片元添加到一个列表中,然后循环对列表中的偶数位进行隐藏,也可以调整线段的宽度

缺陷:有曲线折线的时候,要对每个片元再做旋转位移等操作,且效果不太理想,所以对直线最方便

代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class DashLineDraw : MonoBehaviour
{
    public static DashLineDraw _dashlineInstance;
    public Image TargetWellWidth;//井径
    public Image TargetWellPosition;//方位
    public Image TargetWellincline;//井斜

    public int WidthpieceLength,inclineLength;//固定线的片元长度

    private void Awake()
    {
        _dashlineInstance = this;
        WidthpieceLength = 5;
        inclineLength = 10;

        DashLine(TargetWellWidth, WidthpieceLength);
        //DashLine(TargetWellPosition, WidthpieceLength);
        //DashLine(TargetWellincline, inclineLength);
    }
   
    /// <summary>
    /// 画虚线
    /// </summary>
    /// <param name="目标线段"></param>
    /// <param name="片元长度"></param>
    public void DashLine(Image targetpic,int pieceLength)
    {
        int pieceNum;//片元数量
        List<GameObject>pieceList = new List<GameObject>();
        RectTransform targetRect;
        targetRect = targetpic.GetComponent<RectTransform>();

        float offsetLineX = (targetRect.sizeDelta.x) / 2;
        pieceNum = (int)((targetpic.GetComponent<RectTransform>().rect.width) / pieceLength);
        RectTransform firstRectTransform = null;
        
        for (int i = 0; i < pieceNum; i++)
        {
            Image pieceImage = Instantiate(targetpic, transform);
            RectTransform pieceRectTransform = pieceImage.rectTransform;

            if (i == 0)
            {
                pieceRectTransform.sizeDelta = new Vector2(pieceLength, 2);
                pieceRectTransform.anchoredPosition = new Vector2(targetRect.anchoredPosition.x - offsetLineX + (pieceLength / 2), targetRect.anchoredPosition.y);
                firstRectTransform = pieceRectTransform;
            }
            else
            {
                pieceRectTransform.sizeDelta = new Vector2(pieceLength, 2);
                pieceRectTransform.anchoredPosition = new Vector2(firstRectTransform.anchoredPosition.x + (pieceLength * i), firstRectTransform.anchoredPosition.y);
            }
            pieceList.Add(pieceImage.gameObject);
        }
        targetpic.GetComponent<Image>().enabled = false;
        for (int i = 0; i < pieceList.Count; i++)
        {
            if ((i + 1) % 2 == 0)
            {
                // 偶数
                pieceList[i].GetComponent<Image>().enabled = false;
            }
        }
    }
}

通过调整Length对宽度调整。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1407607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pandas.Series.idxmin() 最小值索引 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本&#xff1a; 本文基于 pandas2.2.0 编写。 关于本文内容更新&#xff1a; 随着pandas的stable版本更迭&#xff0c;本文持续更新&#xff0c;不断完善补充。 传送门&#xff1a; Pandas API参考目录 传送门&#xff1a; Pandas 版本更新及新特性 传送门&…

Java Web(二)--HTML

基本介绍 官网文档地址: HTML 教程 HTML&#xff08;HyperText Mark-up Language&#xff09;即超文本标签语言&#xff1b;HTML 文本是由 HTML 标签组成的文本&#xff0c;可以包括文字、图形、动画、声音、表格、链接等&#xff1b;HTML 的结构包括头部&#xff08;Head&…

如何通过内网穿透+代理共享网络

去年写了一篇博客&#xff1a;如何通过代理共享网络&#xff0c;在这篇文章探索了怎么在同一个局域网内共享代理服务。不过&#xff0c;它的实用性也比较缺乏&#xff0c;要求必须处于同一个局域网之下&#xff0c;大多数时候&#xff0c;我们可能很难有这样的环境。所以&#…

【GitHub项目推荐--12 年历史的 PDF 工具开源了】【转载】

最近在整理 PDF 的时候&#xff0c;有一些需求普通的 PDF 编辑器没办法满足&#xff0c;比如 PDF 批量合并、编辑等。 于是&#xff0c;我就去 GitHub 上看一看有没有现成的轮子&#xff0c;发现了这个 PDF 神器「PDF 补丁丁」&#xff0c;让人惊讶的是这个 PDF 神器有 12 年的…

基于SpringBoot Vue美食网站系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

mysql生成最近24小时整点/最近30天/最近12个月时间临时表

文章目录 生成最近24小时整点生成最近30天生成最近12个月 生成最近24小时整点 SELECT-- 每向下推1行, i比上次减去1b.*, i.*,DATE_FORMAT( DATE_SUB( NOW(), INTERVAL ( -( i : i - 1 ) ) HOUR ), %Y-%m-%d %H:00 ) AS time FROM-- 目的是生成12行数据( SELECTa FROM( SELECT…

可直接将视频转文字的工具,速到快到离谱!

如何将视频转换成文字&#xff0c;推荐大家使用视频提取文案小助手&#xff0c;三秒一键搞定&#xff0c;真的快到离谱​&#xff01; 不少草根博主在做短视频的时候&#xff0c;就有很多人给大家支招让大家先模仿后超越的模式&#xff0c;激起一众爱好短视频的草根博主成为短…

Scrapy爬虫在新闻数据提取中的应用

Scrapy是一个强大的爬虫框架&#xff0c;广泛用于从网站上提取结构化数据。下面这段代码是Scrapy爬虫的一个例子&#xff0c;用于从新闻网站上提取和分组新闻数据。 使用场景 在新闻分析和内容聚合的场景中&#xff0c;收集和组织新闻数据是常见需求。例如&#xff0c;如果我…

【小黑嵌入式系统第十六课】PSoC 5LP第三个实验——μC/OS-III 综合实验

上一课&#xff1a; 【小黑嵌入式系统第十五课】μC/OS-III程序设计基础&#xff08;四&#xff09;——消息队列&#xff08;工作方式&数据通信&生产者消费者模型&#xff09;、动态内存管理、定时器管理 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂…

纯注解开发bean

注解开发定义bean&#xff1a;Controller:用于表现层bean定义&#xff1b;Service&#xff1a;用于业务层bean定义&#xff1b;Repository&#xff1a;用于数据层bean定义。 我们先来完成数据层和业务逻辑层的注解 数据层&#xff1a; package org.example.dao.impl;import or…

智慧博物馆信息化系统建设(3)

博物馆智能电子导览系统 IPAD智能化定制服务 系统采用的IPAD。使用者通过智能IPAD终端上的三维立体导图,可以在参观的同时,随时读取展馆平面地图以及展品相关信息,然后选择相关服务。简单操作便可获得文字、图片、声音以及视频资料展现给使用者。 游客通过该智能IPAD终端…

构建中国人自己的私人GPT—与文档对话

先看效果 他可以从上传的文件中提取内容作为答案。上传文件摄取速度 摄取速度取决于您正在摄取的文档数量以及每个文档的大小。为了加快摄取速度&#xff0c;您可以在配置中更改摄取模式。 存在以下摄取模式&#xff1a; simple&#xff1a;历史行为&#xff0c;一次按顺序摄…

03 SpringBoot实战 -微头条之首页门户模块(跳转某页面自动展示所有信息+根据hid查询文章全文并用乐观锁修改阅读量)

1.1 自动展示所有信息 需求描述: 进入新闻首页portal/findAllType, 自动返回所有栏目名称和id 接口描述 url地址&#xff1a;portal/findAllTypes 请求方式&#xff1a;get 请求参数&#xff1a;无 响应数据&#xff1a; 成功 {"code":"200","mes…

RubbleDB: CPU-Efficient Replication with NVMe-oF——论文泛读

ATC 2023 Paper 论文阅读笔记整理 问题 由于需要执行昂贵的后台压缩操作&#xff0c;CPU 往往是持久键值存储的性能瓶颈。在日志结构合并树&#xff08;LSM树&#xff09;&#xff0c;标准的基于磁盘的键值存储设计[2,4,8,22,41]&#xff0c;压缩可以在生产工作负载中消耗高达…

基于FPGA的OFDM基带发射机的设计与实现

文章目录 前言一、OFDM描述二、本系统的实现参照 1.IEEE 802.11a协议主要参数2.不同调制方式与速率 3. IFFT映射关系4. IEEE 802.11a物理层规范5. PPDU帧格式三、设计与实现 1.扰码2.卷积编码与删余3.数据交织4.符号调制5.导频插入6.IFFT变换 7.循环前缀&加窗8.训练序列生成…

快速上手的AI工具-文心一言绘本创作

前言 大家好晚上好&#xff0c;现在AI技术的发展&#xff0c;它已经渗透到我们生活的各个层面。对于普通人来说&#xff0c;理解并有效利用AI技术不仅能增强个人竞争力&#xff0c;还能在日常生活中带来便利。无论是提高工作效率&#xff0c;还是优化日常任务&#xff0c;AI工具…

RKE快速搭建离线k8s集群并用rancher管理界面

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 本文记录使用RKE快速搭建一套k8s集群过程&#xff0c;使用的rancher老版本2.5.7&#xff08;当前最新版为2.7&#xff09;。适用…

Xftp连接不上Linux虚拟机的原因解决方法

前言&#xff1a; 在当今数字化时代&#xff0c;远程连接到Linux虚拟机是许多开发者和系统管理员日常工作的一部分。然而&#xff0c;有时候&#xff0c;面对Xftp连接不上Linux虚拟机的问题&#xff0c;我们可能感到困惑和无措。这个看似小问题可能导致工作中断&#xff0c;因…

NQA网络质量分析

概念 网络质量分析是设备上集成网络测试功能&#xff0c;不仅可以实现对网络运行情况的准确测试&#xff0c;还可以输出统计信息&#xff0c;有效的节约成本。 NQA可以检测网络上运行的各种协议的性能&#xff0c;使运营商能够实时采集到各种网络运行指标。 例如&#xff1a;…

动态设置和获取类实例变量(setattr、getattr)

动态设置和获取类实例变量 写在前面的话setattr 示例代码getattr 示例代码&#xff1a; 写在前面的话 在pyqt5的界面设置中&#xff0c;有很多相同的Qlabel、Qpushbutton、Qslider的设置&#xff0c;这些具有相同属性的界面模块可能需要不同的触发方法&#xff0c;定义为self.…