当前位置: 首页 > news >正文

【工具插件类教学】实现运行时2D物体交互的利器Runtime2DTransformInteractor

目录

​编辑

1. 插件核心功能

1.1 基础变换操作

1.2 高级特性

2. 安装与配置

2.1 导入插件

2.2 配置控制器参数

2.3 为物体添加交互功能

3. 使用示例

3.1 基础操作演示

3.2 多选与批量操作

3.3 自定义光标与外观

4. 高级配置技巧

4.1 动态调整包围框控件尺寸

4.2 分层渲染控制

4.3 事件扩展

5. 常见问题解答

Q1:包围框未显示

Q2:光标未切换

Q3:缩放时宽高比未锁定

6. 结语

7.工具下载



1. 插件核心功能

1.1 基础变换操作

  • 移动:点击物体碰撞体(Collider2D)并拖拽,即可自由移动物体。

  • 缩放

    • 单轴缩放:拖拽包围框的边缘(Edge)可沿单个轴缩放。

    • 双轴缩放:拖拽包围框的角落(Corner)可同时在两个轴上缩放。

    • 保持宽高比:支持全局锁定宽高比,或通过快捷键临时锁定(如按住Shift键)。

  • 旋转:拖拽旋转控件(Rotation Gizmo)可自由旋转物体。

1.2 高级特性

  • 多选操作:支持同时选中多个物体进行统一移动(需启用Allow Multi Selection)。

  • 光标反馈:当鼠标悬停在交互区域(如角落、边缘、旋转控件)时,光标自动切换为预设图标。

  • 动态尺寸调整:包围框的控件(角落、边缘、旋转控件)会根据摄像机缩放(orthographicSize)自动调整屏幕显示尺寸。

  • 自定义外观:可修改包围框的颜色、图标及排序层级,适配不同美术风格。


2. 安装与配置

2.1 导入插件

  1. 将插件包导入Unity项目(通过Asset Store或手动导入)。

  2. 添加控制器预制体
    在场景中拖入 TransformInteractorController 预制体(位于 Package/Prefabs)。
    该控制器全局管理所有交互逻辑,必须存在于场景中。

2.2 配置控制器参数

打开 TransformInteractorController 组件的参数面板,关键配置如下:

参数分类关键参数
包围框外观Corner Color(角落颜色)、Line Color(边缘颜色)、Rotation Color(旋转控件颜色)
交互行为Allow Multi Selection(启用多选)、Allow Rotation(启用旋转)
光标设置Change Cursor(启用光标切换)、Move Cursor(移动光标图标)
摄像机与缩放Main Camera(绑定正交摄像机)、Adjust Size To Zoom(动态调整控件尺寸)
宽高比锁定Always Preserve Aspect Ratio(全局锁定)、Preserve Aspect Ratio On Key Hold(按键临时锁定)

2.3 为物体添加交互功能

  1. 添加组件:为需要交互的2D物体添加 TransformInteractor 脚本。

  2. 自动添加碰撞体:若物体没有 BoxCollider2D,插件会自动添加一个。调整碰撞体大小以匹配物体实际范围。

  3. 自定义包围框:通过修改 TransformInteractor 的 Collider Offset 和 Collider Size 调整交互区域。


3. 使用示例

3.1 基础操作演示

  1. 移动物体:点击物体碰撞体并拖拽。

  2. 缩放物体

    • 拖拽角落进行双轴缩放。

    • 拖拽边缘进行单轴缩放。

    • 按住 Aspect Ratio Keys(如Shift键)临时锁定宽高比。

  3. 旋转物体:拖拽旋转控件(默认位于包围框顶部)。

3.2 多选与批量操作

  1. 启用多选:在控制器中勾选 Allow Multi Selection

  2. 选择多个物体:按住 Multi Selection Keys(如Ctrl键)点击多个物体。

  3. 统一移动:拖拽任意选中物体,所有选中物体将同步移动。

3.3 自定义光标与外观

// 示例:通过代码动态修改光标图标(需提前导入纹理)
TransformInteractorController controller = FindObjectOfType<TransformInteractorController>();
controller.MoveCursor = YourCustomMoveCursorTexture;
controller.RotateCursor = YourCustomRotateCursorTexture;

4. 高级配置技巧

4.1 动态调整包围框控件尺寸

  1. 确保摄像机为 正交投影(Orthographic)。

  2. 在控制器中启用 Adjust Size To Zoom

  3. 设置 Default Corner Width/Height 等参数,控制控件的默认屏幕尺寸。

4.2 分层渲染控制

通过设置不同排序层级(Sorting Layer),避免控件与游戏物体重叠:

  • Corner Sorting Layer > Rotation Gizmo Sorting Layer > Line Sorting Layer

4.3 事件扩展

插件内置事件系统(需自行扩展):

TransformInteractor interactor = GetComponent<TransformInteractor>();
interactor.OnDragStart += () => { /* 拖拽开始逻辑 */ };
interactor.OnScale += (scale) => { /* 缩放中逻辑 */ };

5. 常见问题解答

Q1:包围框未显示

  • 确认 TransformInteractorController 预制体已添加到场景。

  • 检查物体的 TransformInteractor 脚本是否启用。

Q2:光标未切换

  • 在控制器中启用 Change Cursor

  • 确认 Default Cursor 和特定操作光标已正确赋值。

Q3:缩放时宽高比未锁定

  • 检查 Always Preserve Aspect Ratio 或 Preserve Aspect Ratio On Key Hold 是否启用。

  • 确认快捷键设置(Aspect Ratio Keys)是否冲突。


6. 结语

Runtime 2D Transform Interactor 是一款功能强大且高度可定制的2D交互插件,尤其适合编辑器工具、关卡设计或需要精细物体操作的2D游戏。通过灵活的配置和直观的操作,开发者可以显著减少编码时间,专注于核心玩法开发。立即尝试这款插件,提升你的开发效率!

7.工具下载

https://download.csdn.net/download/qq_37310110/90394947

【注:此博文为工具生成,内容未经校对,注意甄别】  

相关文章:

【工具插件类教学】实现运行时2D物体交互的利器Runtime2DTransformInteractor

目录 ​编辑 1. 插件核心功能 1.1 基础变换操作 1.2 高级特性 2. 安装与配置 2.1 导入插件 2.2 配置控制器参数 2.3 为物体添加交互功能 3. 使用示例 3.1 基础操作演示 3.2 多选与批量操作 3.3 自定义光标与外观 4. 高级配置技巧 4.1 动态调整包围框控件尺寸 4.…...

回调处理器

文章目录 什么是回调处理器回调处理器的工作流程回调处理器的使用自定义链组件中的回调 内置回调处理器自定义回调处理器 在编程领域中&#xff0c;回调是一个非常重要的概念。简而言之&#xff0c;回调是一种特殊的函数或方法&#xff0c;它可以被传递给另一个函数作为参数&am…...

Redis-03高级篇中-多级缓存:

说明&#xff1a; 分布式缓存和多级缓存的视频&#xff0c;与springcloud高级篇redis的一模一样。这里就不在重复学习了&#xff0c;如果后面用到关于redis的配置&#xff0c;直接到springcloud模块安装的redis中学习即可。 多级缓存 0.学习目标 1.什么是多级缓存 传统的缓…...

Spring Boot ShardingJDBC分库分表(草稿)

ShardingJDBC分库分表 1.Maven 引用 <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jdbc-spring-boot-starter</artifactId><version>4.1.1</version></dependency><dependency><…...

Jenkins 环境搭建---基于 Docker

前期准备 提前安装jdk、maven、nodeJs&#xff08;如果需要的话&#xff09; 创建 jenkins 环境目录&#xff0c;用来当做挂载卷 /data/jenkins/ 一&#xff1a;拉取 Jenkins 镜像 docker pull jenkins/jenkins:lts 二&#xff1a;设置 Jenkins挂载目录 mkdir -p ~/jen…...

如何在自定义组件中使用v-model实现双向绑定

在 Vue 2 中&#xff0c;v-model 是双向数据绑定的语法糖&#xff0c;它默认将 value 作为 prop 传入组件&#xff0c;并通过监听 input 事件来更新父组件的数据。若要在自定义组件中实现 v-model 的双向绑定&#xff0c;需遵循以下步骤&#xff1a; 1. 基本实现&#xff1a;va…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_pool_t 类型

ngx_pool_t 定义在 src/core/ngx_core.h typedef struct ngx_pool_s ngx_pool_t; ngx_pool_s 定义在 src/core/ngx_palloc.h struct ngx_pool_s {ngx_pool_data_t d;size_t max;ngx_pool_t *current;ngx_chain_t *chain;ng…...

如何在 ubuntu 上使用 Clash 与 docker 开启代理拉起

如何在 ubuntu 上使用 Clash https://github.com/doreamon-design/clash/releases上面是clash 的地址 clash_2.0.24_linux_386.tar.gz 下载 386 的 如果你的电脑是inter tar -xzvf clash_2.0.24_linux_386.tar.gz 启动 ./clash 然后会在电脑上生成一个config的文件 /home/xxx/…...

linux tcpdump抓包

参数说明: -i 指定网卡 -w 指定保存文件 -s0 完整抓包 -G 指定间隔时长(秒) -C 指定每个文件大小(M) 用法1: 指定端口输出到指定文件 tcpdump -i em3 -w 182910.pcap 用法2: 指定端口每10分钟输出到不同文件 tcpdump -i em3 -s0 -G 600 -w %Y_%m%d_%H%M_%S.pcap 用法3: 指…...

PLSQL连接Oracle 19c报错ORA-28040

PLSQL连接Oracle 19c报错ORA-28040 原因解析解决办法原因解析 使用PLSQL Developer连接19c数据库报错: ORA-28040: No matching authentication protocol报错信息解析: [oracle@ora19c ~]$ oerr ora 2804028040, 0000, "No matching authentication protocol" /…...

汽车免拆诊断案例 | 2010 款路虎揽胜车空调偶尔出风异常

故障现象  一辆2010款路虎揽胜车&#xff0c;搭载5.0 L发动机&#xff0c;累计行驶里程约为16万km。车主反映&#xff0c;接通空调开关后&#xff0c;有时出风忽大忽小&#xff0c;有时不出风&#xff0c;有时要等2 min左右才出风&#xff1b;有时两三天出现一次&#xff0c;…...

音视频入门基础:RTP专题(9)——FFmpeg接收RTP流的原理和内部实现

一、引言 由《音视频入门基础&#xff1a;RTP专题&#xff08;2&#xff09;——使用FFmpeg命令生成RTP流》可以知道&#xff0c;推流端通过下面FFmpeg命令可以将一个媒体文件转推RTP&#xff0c;生成RTP流&#xff1a; ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec cop…...

Nginx 安装及配置教程(Windows)【安装】

文章目录 一、 Nginx 下载 1. 官网下载2. 其它渠道 二、 Nginx 安装三、 配置四、 验证五、 其它问题 1. 常用命令2. 跨域问题 软件 / 环境安装及配置目录 一、 Nginx 下载 1. 官网下载 安装地址&#xff1a;https://nginx.org/en/download.html 打开浏览器输入网址 htt…...

《跟李沐学 AI》AlexNet论文逐段精读学习心得 | PyTorch 深度学习实战

前一篇文章&#xff0c;使用 AlexNet 实现图片分类 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于学习 9年后重读深度学习奠基作之一&#xff1a;AlexNet【下】【论文精读】】的心得。 《跟李沐…...

嵌入式0xDEADBEEF

在嵌入式系统中&#xff0c;0xDEADBEEF 是一个常见的“魔数”&#xff08;magic number&#xff09;&#xff0c;通常用于调试和内存管理。它的含义和用途如下&#xff1a; 1. 调试用途 未初始化内存的标记&#xff1a;在调试时&#xff0c;0xDEADBEEF 常用于标记未初始化或已…...

B+树作为数据库索引结构的优势对比

MySQL作为数据库&#xff0c;它的功能就是做数据存储和数据查找&#xff1b;使用B树作为索引结构是为了实现高效的查找、插入和删除操作。 B树的查找、插入、删除的复杂度都为 O(log n)&#xff0c;它是一个多叉树的结构&#xff0c;能兼顾各种操作的效率的数据结构。如果使用…...

自适应SQL计划管理(Adaptive SQL Plan Management)在Oracle 12c中的应用

在Oracle Database 12c Release 1 (12.1)版本中&#xff0c;引入了对SQL计划管理&#xff08;SPM&#xff09;功能的增强&#xff0c;特别是关于SQL计划基线的自动进化机制。这一改进允许数据库更加智能地管理和优化SQL查询的执行计划&#xff0c;确保即使数据分布发生变化&…...

什么是DeFi (去中心化金融)

DeFi (去中心化金融) 概述 &#x1f4b0; 1. DeFi 基础概念 1.1 什么是 DeFi&#xff1f; DeFi 是建立在区块链上的金融服务生态系统&#xff0c;它&#xff1a; 无需中心化中介开放且透明无需许可即可参与代码即法律 1.2 DeFi 的优势 开放性&#xff1a;任何人都可以参与…...

计算机毕业设计Python农产品推荐系统 农产品爬虫 农产品可视化 农产品大数据(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

LLM论文笔记 15: Transformers Can Achieve Length Generalization But Not Robustly

Arxiv日期&#xff1a;2024.2.14机构&#xff1a;Google DeepMind / University of Toronto 关键词 长度泛化位置编码数据格式 核心结论 1. 实验结论&#xff1a;十进制加法任务上的长度泛化最佳组合&#xff1a; FIRE位置编码 随机化位置编码 反向数据格式 索引提示&…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

Python学习(8) ----- Python的类与对象

Python 中的类&#xff08;Class&#xff09;与对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心。我们可以通过“类是模板&#xff0c;对象是实例”来理解它们的关系。 &#x1f9f1; 一句话理解&#xff1a; 类就像“图纸”&#xff0c;对…...