随机生成UI不重叠
注释
简单的随机生成UI且不发生重叠,可以修改算法进行更深入的探索
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class CellInfo
{/// <summary>/// 物体位置/// </summary>public Vector2 pos;/// <summary>/// 物体宽/// </summary>public float width;/// <summary>/// 物体高/// </summary>public float height;
}/// <summary>
/// 屏幕随机生成文字并不叠加
/// </summary>public class TextTest : MonoBehaviour
{/// <summary>/// 外面的父级/// </summary>public RectTransform parent;/// <summary>/// 想要显示的子物体集合/// </summary>[Header("想要显示的子物体集合")]public List<GameObject> cells = new List<GameObject>();/// <summary>/// 已经存在的子物体信息/// </summary>private List<CellInfo> hadCells = new List<CellInfo>();/// <summary>/// 最大尝试的次数/// </summary>[Header("最大尝试的次数")]public int maxIndex;private void Update(){if (Input.GetKeyDown(KeyCode.Space)){StartCoroutine(CreateGameObject());}}/// <summary>/// 生成图片/// </summary>/// <returns></returns>public IEnumerator CreateGameObject(){int i = 0;while (i < cells.Count){float ItmeWidth = cells[i].GetComponent<RectTransform>().rect.width / 2;float ItmeHeigh = cells[i].GetComponent<RectTransform>().rect.height / 2;Vector2 cellPos = new Vector2(Random.Range(ItmeWidth, parent.rect.width - ItmeWidth),Random.Range(ItmeHeigh, parent.rect.height - ItmeHeigh));//尝试更新新坐标的次数int index = 0;while (index < maxIndex){if (i == 0 || (i != 0 && TwoPointDistance2D2(cellPos, ItmeWidth, ItmeHeigh))){CellInfo cellinfo = new CellInfo();cellinfo.pos = cellPos;cellinfo.width = ItmeWidth;cellinfo.height = ItmeHeigh;hadCells.Add(cellinfo);GameObject obj = Instantiate<GameObject>(cells[i], parent);obj.GetComponent<RectTransform>().position = cellPos;break;}index++;}i++;yield return null;}}/// <summary>/// 进行距离比较/// </summary>/// <param name="p1"></param>/// <param name="p2"></param>/// <returns></returns>private bool TwoPointDistance2D2(Vector2 currentPos, float w, float h){float x1 = currentPos.x - w;float x2 = currentPos.x + w;float y1 = currentPos.y - h;float y2 = currentPos.y + h;for (int i = 0; i < hadCells.Count; i++){float x11 = hadCells[i].pos.x - hadCells[i].width;float x22 = hadCells[i].pos.x + hadCells[i].width;float y11 = hadCells[i].pos.y - hadCells[i].height;float y22 = hadCells[i].pos.y + hadCells[i].height;if ((x2 < x11 || x1 > x22) && (y1 > y22 || y2 < y11)){continue;}else{return false;}}return true;}
}
相关文章:
随机生成UI不重叠
注释 简单的随机生成UI且不发生重叠,可以修改算法进行更深入的探索 using System.Collections; using System.Collections.Generic; using UnityEngine;public class CellInfo {/// <summary>/// 物体位置/// </summary>public Vector2 pos;/// <s…...
【C/C++】C/C++编程——第一个 C++ 程序:HelloWorld
第一个 C 程序:HelloWorld 大家好,我是 shopeeai,也可以叫我虾皮,中科大菜鸟研究生。昨天我们成功搭建好了 C 的开发环境,今天我们来介绍一下第一个 C 程序,打印一个"hello world"。首先我们先贴一下示例代…...
扩散视觉反事实算法 DVC:对抗性鲁棒分类器 + 扩散模型,跨模态对比原始的 fundus 图 VS 生成的 OCT 图
对抗性鲁棒分类器 扩散模型:为 正常的 fundus 和 OCT 图,生成更多病症图 解决问题创新点 效果调参技巧总结Fundus 转 OCT(只是猜想,不一定)1. 疾病特征模拟2. 数据增强3. 疾病进展模拟4. 跨模态学习 解决问题 论文&a…...
C++(6) 继承
文章目录 继承1. 继承1.1 什么是继承1.2 C 继承方式1.2.1 基本案例1.2.2 继承权限组合1.2.3 继承中构造函数的说法1.2.4 继承中析构函数的执行顺序1.2.5 继承中变量名称冲突问题1.2.6 继承中函数【重写】 继承 1. 继承 1.1 什么是继承 面向对象程序设计中最重要的一个概念是继…...
【Servlet】Smart Tomcat插件简化Servlet开发流程及解决常见问题
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Servlet】 本专栏旨在分享学习Servlet的一点学习心得,欢迎大家在评论区交流讨论💌 目录 一、Smart Tomcat插件二…...
解决Qt连接不上mysql数据库
问题: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7 下载网盘中的三个文件(网盘链接在文章结尾):qsqlmysql.dll、qsqlmysqld.qll、libmysql.dll找到你安装Qt的目录ÿ…...
kubernetes-快速部署一套k8s集群
1、前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式: kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 二进制包 从github下载发行…...
Windows Server 安装 Docker
一、简介 Docker 不是一个通用容器工具,它依赖运行的 Linux 内核环境。Docker 实质上是在运行的 Linux 服务器上制造了一个隔离的文件环境,所以它执行的效率几乎等同于所部署的 Linux 主机服务器性能。因此,Docker 必须部署在 Linux 内核系统…...
智能分析网关V4智慧机房:视频AI智能安全监管方案
一、背景分析 随着互联网的迅猛发展,机房及其配套设施的数量持续攀升,它们的运行状况对于企业运营效率和服务质量的影响日益显著。作为企业信息化的基石,机房的安全监测与管理的重要性不容忽视。它不仅关乎企业的稳定运营,同时也直…...
一些反序列化总结
1 反序列化漏洞原理 如果反序列化的内容就是那串字符串,是用户可以控制的(即变量的值),且后台不正当的使用了PHP中的魔法函数,就会导致反序列化漏洞,可以执行任意命令。Java 序列化指 Java 对象转换为字节序…...
分披萨(100%用例)C卷(JavaPythonC++Node.jsC语言)
“吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨,并咐店员将披萨按放射状切成大小相同的偶数扇形小块。但是粗心服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。 由于两人都想吃到最多的披萨,他们商量了一个他们认为公平的分法:从“吃货开始,轮流…...
SQL字符串截取函数【简笔记】
MySQL提供了多种字符串函数来处理和截取字符串。下面是一些常用的字符串截取函数及其使用示范: SUBSTRING(str, pos, len) str 是要截取的字符串。pos 是开始截取的位置。len 是截取的长度。 示例: SELECT SUBSTRING(Hello, World!, 8, 5); -- 结果: "World…...
会话技术复习笔记
一.登录校验的需求 什么是登录校验? 所谓登录校验,指的是我们在服务器端接收到浏览器发送过来的请求之后,首先我们要对请求进行校验。先要校验一下用户登录了没有,如果用户已经登录了,就直接执行对应的业务操作就可以…...
我用Rust开发Rocketmq name server
我是蚂蚁背大象(Apache EventMesh PMC&Committer),文章对你有帮助给Rocketmq-rust star,关注我GitHub:mxsm,文章有不正确的地方请您斧正,创建ISSUE提交PR~谢谢! Emal:mxsmapache.com 1. Rocketmq-rust namesrv概述 经过一个多月的开发,终…...
【Deep Dive: Al Webinar】开源人工智能中赋能、透明性和可重复性三者之间的关系...
【深入探讨人工智能】网络研讨系列总共有 17 个视频。我们按照视频内容,大致上分成了 3 个大类: 1. 人工智能的开放、风险与挑战(4 篇) 2. 人工智能的治理(总共 12 篇),其中分成了几个子类&…...
将Html页面转换为Wordpress页面
问题:我们经常会从html源码下载网站上获得我们想要的网站内容框架,以及部分诸如联系我们,About 等内页,但是在文章的发布上,则远不如Wordpress简便。而Wordpress尽管有各种模板,但修改又比较麻烦。解决方法…...
Next.js 学习笔记(七)——样式
样式 Next.js 支持不同的应用程序样式设计方法,包括: 全局 CSS:对于有传统 CSS 使用经验的人来说,使用简单且熟悉,但随着应用程序的增长,可能会导致 CSS 包过大,难以管理样式。CSS 模块&#…...
金线检测步骤
半导体行业,金线检测是必不可以少的一个检测项,除了焊点,die面,手指以外的必检项目. 重难点在于金线的提取,算法多种多样,找到适合才是关键,涉及到打光,图像处理,这里不做深入分析,软件和硬件配合好才能做的最好. 经典算法Block分析,结合图像检测. 高斯算法提取 边缘检测算法提…...
电池-电量监测基础知识
一、为何要进行电池电量监测 不知各位有没有想过为何现在手机电池和笔记本电脑电池不容易鼓包了?十年前还经常出现的电池鼓包最近像是消失了一样,其实是因为随着电量监测技术的发展,哪怕是最基本的电子设备也有电池侧和产品侧至少两级电量监测…...
西瓜书学习笔记——层次聚类(公式推导+举例应用)
文章目录 算法介绍实验分析 算法介绍 层次聚类是一种将数据集划分为层次结构的聚类方法。它主要有两种策略:自底向上和自顶向下。 其中AGNES算法是一种自底向上聚类算法,用于将数据集划分为层次结构的聚类。算法的基本思想是从每个数据点开始࿰…...
交通顶刊TR Part C 2026年5月论文导读(上)
一期刊简介Transportation Research Part C (TR-C): Emerging Technologies 是交通领域顶刊,由 Elsevier 出版,中科院与 JCR 均为 1 区,近年影响因子约8–9.6。该期刊以交通系统为核心,聚焦 AI、大数据、运筹学等新兴技术对交通规…...
intv_ai_mk11效果惊艳:技术概念解释附带类比(如‘注意力机制像老师点名’)提升理解
intv_ai_mk11效果惊艳:技术概念解释附带类比提升理解 1. 什么是intv_ai_mk11 intv_ai_mk11是一款基于Llama架构的AI对话助手,拥有7B参数规模,运行在GPU服务器上。它就像一位24小时在线的智能助手,能够理解并回答各种问题&#x…...
WarcraftHelper:让经典魔兽争霸3重获现代游戏体验的兼容性增强工具
WarcraftHelper:让经典魔兽争霸3重获现代游戏体验的兼容性增强工具 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸3作为一款经典…...
避坑指南:QML调用C++时那些让你debug到崩溃的隐藏问题(Qt5/6通用)
QML与C交互避坑实战:信号槽、内存管理与类型转换的终极解决方案 第一次在QML中调用C对象时,那种跨语言调用的兴奋感很快会被各种诡异问题冲淡——信号死活不触发、对象莫名其妙被销毁、类型转换时程序崩溃...这些问题往往让开发者陷入数小时的debug泥潭。…...
Ostrakon-VL-8B赋能微信小程序:开发餐饮AI点餐助手
Ostrakon-VL-8B赋能微信小程序:开发餐饮AI点餐助手 你有没有过这样的经历?走进一家新餐厅,面对琳琅满目的菜单,却不知道哪道菜合自己口味,或者担心食材里有自己过敏的东西。又或者,正在控制饮食的你&#…...
Comfyui从入门到进阶教程分享
接触Comfyui的这段时间,从最开始的安装部署踩坑,到后来独立搭建自定义工作流,试过不少零散的教程,也整理了一套成体系的学习内容,覆盖了从基础操作到高阶玩法的各个环节,不管是刚入门的新手,还是…...
实战应用:基于快马平台快速开发openclaw视觉分拣机器人demo
实战应用:基于快马平台快速开发openclaw视觉分拣机器人demo 最近在研究工业自动化场景,正好用InsCode(快马)平台尝试做了一个视觉分拣机器人的demo。这个项目模拟了流水线上用机械臂分拣不同颜色物品的场景,特别适合用来验证自动化分拣方案的…...
Make:目标(Target)构建的详细和依赖项的处理过程(个人总结)
相关文章 Make专栏https://blog.csdn.net/weixin_45791458/category_12383799.html 这段时间在用makefile,所以自己探究了一下make的工作过程,并经过实验总结了一些规律。 对于一个规则的处理如下,首先make会检查规则中的目标文件是否存在和…...
Keil中内存概念:Flash、SRAM、RO、RW、ZI、.data、.bss、heap、stack、MAP文件
此文章转载于微信公众号:嵌入式电子学习,只作为笔记备忘录使用 内存属性 理解Keil MDK(或ARM编译器)中关于程序内存布局的一些基本概念(RO、RW、ZI和.data、.bss、heap、stack、Flash、SRAM)。这些概念对…...
5分钟快速上手:AI视频生成工具完整指南
5分钟快速上手:AI视频生成工具完整指南 【免费下载链接】auto-video-generateor 自动视频生成器,给定主题,自动生成解说视频。用户输入主题文字,系统调用大语言模型生成故事或解说的文字,然后进一步调用语音合成接口生…...
