首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何让一个RectTransform跟随位于不同父节点下的另一个RectTransform?

要让一个RectTransform跟随位于不同父节点下的另一个RectTransform,可以通过以下步骤实现:

  1. 获取目标RectTransform的位置和大小信息,可以使用RectTransform的属性,如anchoredPosition、sizeDelta等。
  2. 将目标RectTransform的位置和大小信息转换为世界坐标系下的值,可以使用RectTransform的方法TransformPoint和TransformVector将本地坐标转换为世界坐标。
  3. 将转换后的世界坐标系下的位置和大小信息应用到需要跟随的RectTransform上,可以使用RectTransform的属性,如anchoredPosition、sizeDelta等。

以下是一个示例代码,演示如何实现RectTransform的跟随:

代码语言:txt
复制
using UnityEngine;

public class FollowRectTransform : MonoBehaviour
{
    public RectTransform targetRectTransform; // 需要跟随的RectTransform

    private RectTransform rectTransform; // 当前RectTransform

    private void Start()
    {
        rectTransform = GetComponent<RectTransform>();
    }

    private void Update()
    {
        // 获取目标RectTransform的位置和大小信息
        Vector2 targetPosition = targetRectTransform.anchoredPosition;
        Vector2 targetSize = targetRectTransform.sizeDelta;

        // 将目标RectTransform的位置和大小信息转换为世界坐标系下的值
        Vector3 worldPosition = targetRectTransform.TransformPoint(targetPosition);
        Vector3 worldSize = targetRectTransform.TransformVector(targetSize);

        // 将转换后的世界坐标系下的位置和大小信息应用到当前RectTransform上
        rectTransform.position = worldPosition;
        rectTransform.sizeDelta = worldSize;
    }
}

在这个示例中,通过获取目标RectTransform的位置和大小信息,然后将其转换为世界坐标系下的值,最后将转换后的世界坐标系下的位置和大小信息应用到当前RectTransform上,实现了RectTransform的跟随效果。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云人工智能平台(AI Lab):https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台(IoT Hub):https://cloud.tencent.com/product/iothub
  • 腾讯云移动应用分析(MTA):https://cloud.tencent.com/product/mta
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云游戏多媒体引擎(GME):https://cloud.tencent.com/product/gme
  • 腾讯云音视频处理(VOD):https://cloud.tencent.com/product/vod
  • 腾讯云网络安全(NSA):https://cloud.tencent.com/product/nsa
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

零基础入门 40:Inspector禁用RectTransform属性修改

---- Hello,今天给大家分享一如何通过代码实现Inspector面板禁止修改RectTransform组件上属性。...如上图可以看出,我禁止了对PosX和PosY以及Anchors修改,所以这些属性在Inspector面板上是灰态无法修改。 那如何做到呢?进入正题 ?...然后InitializeOnLoad作用是为了脚本在Editor模式也可以加载运行,之所以这里加这个,是为了下一偏做铺垫。 然后增加一个菜单代码 ?...这样在Help里就有了可以帮助我们点击禁用入口了 然后增加一个DrivenRectTransformTracker DrivenRectTransformTracker是Unity提供用来驱动RectTransform...此时无论直接在Inspector面板输入数值还是拖动Posx箭头都无法通过Inspector面板修改RectTransform上禁用属性。 好了,这就是今天分享内容,大家下期见~

2.3K30

unity--实现新手引导功能 一:矩形镂空功能 三、新手引导方法封装四、事件渗透五、完善优化

一:矩形镂空功能 1、新建一个场景,创建两个按钮,一个Image ? 2、导入shader,创建两个材质,将两个shader拖到两个材质上。将材质拖动到Image组件Material上。 ? ?...3、创建脚本RectGuide,创建一个方法Guide(参数:Canvas(为了将世界转换屏幕坐标提供需要Camera,target(要镂空组件)),测试一 GetWorldCorners:在世界空间中得到计算矩形角...material.SetVector("_Center", center); 完整代码:改动组件值,镂空区域中心点能够跟随移动 using System.Collections;...RectTransform target) { //调用base,中方法 base.Guide(canvas,target); // 中心点计算在...(target, sp);矩形区域包包含鼠标点击点 3、在GuideController脚本中改 using System.Collections; using System.Collections.Generic

4.9K30

Unity-Optimizing Unity UI(UGUI优化)05 UI Optimization Techniques and Tips

通过分配RectTransform锚点,RectTransform位置和大小可以基于它们节点。...比如,一个简单两列布局可以通过下面两个RectTransform实现: The left column’s anchors should be X: (0, 0.5) and Y: (0, 1)...禁用画布 在显示或隐藏UI中连续部分时,常见做法是在UI节点启用或禁用GameObject,这样可以确保UI组件不会受到输入回调或Unity回调函数。...如果这个操作很频繁将导致CPU帧率下降。 一个可行办法是将需要显示隐藏UI放到一个专用画布上,在禁用和启用时候,只禁用启用这个画布组件。...要避免这一问题,以这种方式实现隐藏UI上MonoBehaviour不应该直接实现Unity生命周期回调,而应该去接收它们UI根节点自定义“CallbackManager”回调。

1.1K20

Unity基础(24)-UGUI

系统自动打包图集,图片小,重复性比较高图片最好打成图集, 注意: 1,一个图集内图片用UISprite,那么它就是一个DrawCall。...Set Native Size:点击此按钮则 Image 组件长宽自动与原图片长宽一致 Image Type(图片显示类型): Simple(基本):图片整张全显示,裁切,叠加,根据边框大小会有拉伸...6.使用Advance 进一步设置Sprite 或者Texture 你贴图无论如何都必须是2幂次方。...ScrollViewContent不能根据实际Content游戏物体多少自动改变Content宽高问题 在实际使用UGUI开发过程中发现一个UGUIBUG:当Content子物体增加时...于是自己写了一个脚本,根据Content子物体个数来控制Content宽高(原理是修改RectTransformsizedelta) /* * 说明:挂在UGUI中ScrollView中

4.3K20

UGUI系列-实现层级菜单(Unity3D)

: 1、新建一个Scrpll View 2、制作预制体 界面就这么设计就行: 名字改一 Content:父节点容器 ParentMenu:父节点 TextParent:父节点文本 ChildMenu...第二种实现效果 实现原理:这个也是用UGUI做,不一样是不需要容器组件,主要是寻找父节点,然后保存父节点信息,下一个节点以父节点为目标进行偏移,或者以父节点为目标做子节点 优缺点: 优点:是代码清晰...可以了 第四种实现效果 实现原理:这个是用代码动态生成,其中一个脚本主要用来创建父物体和子物体,以及父级关系,另一个脚本是设置位置,箭头变化,按钮功能初始化 优缺点: 优点是代码清晰,结构明了,可以实现层级多级显示...、多级目录设置、树级菜单等 缺点是没有判断最后一个节点代码,最后一个节点无法设置图片,最后一个节点功能没有添加 实现过程: 1、首先也是制作预制体 ArrowButton和ArrowButton2...,子物体也是同样结构 就是把image往后拉了一 三级菜单也一样: 再加一个一级菜单: 是不是so easy....哈哈哈 真的好low 脚本功能就很简单 一级菜单控制它往下所有子节点隐藏于显示

1.4K30

Unity 如何实现卡片循环滚动效果

在遍历生成卡片时判断当前索引值是否小等于卡片数量/2,是则在层级中将其插入到最上方,也就是SiblingIndex=0,否则将其插入在第一张卡片之上,第一张卡片始终在最下方,也就是说插入为倒数第二个,即SiblingIndex=父节点子物体数量...1.2f : 1f) * Vector3.one; 卡片尺寸大小 至此已经完成了卡片生成,但是如何在点击上一个、下一个按钮时动态调整所有卡片坐标、层级和大小才是关键。...,如果是,使其立即变为最左侧的卡片,表现动画过程,目的是为了防止如下图所示,卡片从最右侧移动到最左侧穿帮现象: 穿帮现象 在生成卡片时,为卡片物体添加该脚本,并添加到列表中进行缓存,同时,定义一个用于存储各编号对应层级和坐标的数据结构...).anchoredPosition3D)); } } } 按钮事件 在生成卡片时,记录了卡片当前编号,以及各编号对应层级和位置,在点击下一个、上一个按钮时,只需要根据卡片当前编号...,将卡片生成到该物体 [SerializeField] private Button prevButton; //上一个按钮 [SerializeField] private Button

2.8K22

零基础入门 11: 通过脚本设置UGUI Image

上一篇分享了UGUI Image在Unity编辑器相关使用。 这篇分享介绍通过代码来创建和设置Image。 ? 进入正题: ---- 首先我们创建一个脚本,名为TestImage。 ?...Path是资源路径。 ? 然后我们切回到Unity,非运行模式下代码是运行,我们运行项目,效果如下。可以看到,运行后,Image图片就已经被加载上并且显示了出来。 ?...修改图片位置和大小,我们是通过Image上RectTransform组件来修改。 Image上RectTransform组件,任何一个Canvas对象都存在这个组件。...此时我们在Start方法里,创建一个GameObject,命名为Image。 ? 然后将这个对象设置一个节点,那就是我们Canvas。...下面这张图里,setParent是给我们Image对象设置一个节点。 括弧里面的是获取一个名为Canvas对象。并且把Canvas设置成Image节点。 ? 运行如下图。 ?

5.6K50

Unity零基础到进阶 ☀️| UGUI布局 之Content Size Fitter组件介绍 和 使用示例

这意味着可以使用枢轴控制调整大小方向。 例如,当枢轴位于中心时,内容大小调整器将在所有方向上均等地扩展矩形变换。...使用Content Size Fitter组件后,该对象RectTransform组件会发生相应变化 默认情况下一个对象RectTransform组件Width 和 Height 可以在编辑模式就行修改...Content Size Fitter 几种使用方法 1.在文本框中使用 在文本框中添加这个Content Size Fitter组件,并设置为Preferred Size之后 文本框就会跟随文字大小自由变化了...,也是一个小技巧,但是就不可以再自定义控制文本框大小了 ---- 2.控制Scroll View(Scroll Rect组件)控件Content大小 在使用Scroll View组件时候,...一般会设置Content大小来调节现实内容 如果Content东西太多,就会拖不到最后面的模块了,所以这个时候给Content添加一个Content Size Fitter组件,将Vertical

2.6K80

【Unity游戏开发】UGUI不规则区域点击实现

众所周知在UGUI中,响应点击通常是依附在一张图片上,而图片不管美术怎么给你切,导进Unity之后都是一个矩形,如果要做其他形状,最多只能旋转一,或者自己做一些处理。...而为了美术效果,很多时候我们不得不需要特定形状UI,并且它们实现精准响应点击。例如下图就是一个不规则点击区域。 ?       ...{ 9 //正常情况这一步骤可以忽略这里是为了统一坐标系 10 polyPoints [i].x += transform.GetComponent<RectTransform...四、总结   通过本篇博客,马三和大家一起学习了如何在Unity中实现UGUI不规则区域点击,希望本篇博客能为大家工作过程中带来一些帮助与启发。   ...,分享成为一种美德,欢迎转载。

3.3K30

用ECMAScript4 ( ActionScript3) 实现Unity热更新 -- 使用原型链和EventTrigger

原型链是JS必备,作为ECMAScript4,原型链也是支持。 特别说明,ActionScript3是支持完整面向对象继承支持,原型链只在某些非常特殊情况使用。...本文旨在介绍如何使用原型链。 任意对象类型都有一个prototype属性,包括导入UnityAPI也有。我们可以和JS一样对这个prototype进行操作,比如动态添加成员,添加方法等。...本文说明,如何在脚本中,动态监听 EventTrigger。我们将这篇文章中介绍使用不可热更C#代码做监听,改写为ActionScript3实现。...工程说明 新建一个Untiy工程,并且创建AS3热更新项目。如果不会创建,请参考这里 在HotFixDemoScene1上添加一个Image。...= data.pointerPress.getComponent(RectTransform) as RectTransform; var globalMousePos

1.3K60

零基础入门 27:加载Loading制作和使用

今天要给大家说一个游戏中很常见东西,想必大家也都不会陌生,那就是加载Loading,俗称游戏里小菊花。 效果图如下 ? 那究竟应该如何制作使用呢?...今天就来给大家简单明了说一简易制作方式,并且我会提供出相关代码。 ?...制作流程如下图,首先创建了一个节点,命名为Loading,然后在Loading内部创建一个Image,赋上菊花贴图,然后又创建了一个Image,名为bg,然后把bg贴图去掉后,调成半透黑色即可。...如上图中,我公开一个btn,和一个canvas,目的在于响应btn点击事件,然后加载出loading菊花预设后,把canvas设置为菊花节点。...在点击事件lambda表达式中,第一句代码根据路径"Loading",从Resources路径加载出这个菊花预设,然后通过Instantiate方式实例化到场景中,第二句是把实例化出来菊花预设节点设置为我们

1.2K40

hash哈希竞猜游戏模式系统开发技术源码丨hash哈希游戏开发逻辑程序方案

Rebuild概念   Canvas负责将子节点UI元素网格合并,并生成相应渲染指令再发送到Unity图形管道过程。...所以Canvas就是渲染UI组件,当UI发生变化就要执行一次Batch,它是影响性能更大元凶。注意CanvasBatch只会影响其子节点,但不会影响其子Canvas。   ...①Simple 4个顶点;   ②Sliced勾选FillCenter顶点数是36个,勾选是32个;   ③Tiled取决于Rectranform设置大小和原图大小,铺开了N张图就是4*N个;   ...Canvas为根节点进行,不同Canvas不会影响另外一个Canvas。...:设置最大文本大小   public TextAnchor alignment:文本相对其RectTransform定位。

1.7K20

Unity3D 入门:如何为游戏添加 UI

本文简单介绍如何添加 UI 作为入门,不会深入介绍各种 UI 和细节。 添加 Canvas Unity UI 都需要放到 Canvas 上才能工作。你可以像如下图这样插入一个 Canvas。...当然,你也可以插入其他 UI 对象,不过最终 Unity 编辑器都会帮你插入一个 Canvas,然后把你插入对象放到这个 Canvas 里面。...Canvas 属性 在 Inspector 窗口中,表示 Canvas 在场景中位置对象是 RectTransform 对象了,不再是 Transform 对象。...这是定位 UI 坐标而设计类型。 你无法修改 Canvas RectTransform 对象任何属性,这样 Unity 才可以这个 Canvas 能根据分辨率自适应。...当然,如果你不像我这样能看得到整个 Canvas 的话,可以考虑调整视角或者直接双击 F。

40950

【100个 Unity实用技能】☀️ | Unity中 过滤透明区域点击事件

一、使用Image组件自带参数检测 而UGUI中可以通过Image组件拿到一个alphaHitTestMinimumThreshold ,这个值代表含义就是期望像素Alpha阈值,通过改变这个值就可以实现过滤透明区域点击事件...比如alpahThreshold 为0则代表只过滤全透明区域,alpahThreshold 为0.5则是把半透明一过滤掉,alpahThreshold 为1的话那就整张图都被过滤了,都不会响应事件...将两个Button挂载到脚本中,第一个Button参与透明过滤,第二个Button过滤透明区域点击事件。...(_image.rectTransform, sp, eventCamera, out localPoint); Vector2 pivot = _image.rectTransform.pivot...它返回一个Color结构,其中包含红、绿、蓝和alpha通道值。

26421

Unity ugui拖动控件(地图模式与物件模式)

然而遗憾是,每有一个要拖动物件对象,都需要重新写一遍如何去处理它们,而大部分时候拖动功能都相对通用,一般就是根据你鼠标或者手指滑动方向对应移动物体方向,只有在拖动结束时候可能需要额外判断一物体状态...基于这样思考,考虑将一些通用拖动实现过程再封装一,只留一个拖动结束后委托用于外部调用即可,这样省去了每次都写一遍地图拖动时如何移动,拖动到边界了如何判断等。...幸运是,Unity在EventTrigger中已经包含了拖动事件,具体如何动态添加EventTrigger侦听可以详细见上一篇随笔末尾处: https://www.cnblogs.com/koshio0219...假设上图中黑色框代表拖动范围,同样贴近范围左边缘情况,左图物件不能再往向左方向拖动,而右图地图则不能再往向右方向拖动。...并不会像是在编辑器中一样友好帮你自动计算RectTransform,而是会各种乱,位置也可能不对了,大小也可能不对了,所以这里写一个扩展方法进行安全改变锚框: 1 public static

1.5K10

【Unity3d游戏开发】浅谈UGUI中Canvas以及三种画布渲染模式

使UI元素像素对应,效果就是边缘清晰模糊。   (2)Sort Layer: Sort Layer是UGUI专用设置,用来指示画布深度。   ...所不同是,在该模式,画布会被放置到摄影机前方。在这种渲染模式,画布看起来 绘制在一个与摄影机固定距离平面上。所有的UI元素都由该摄影机渲染,因此摄影机设置会影响到UI画面。...在此模式,画布被视为与场景中其他普通游戏对象性质相同类似于一张面片(Plane)游戏物体。画布尺寸可以通过RectTransform设置,所有的UI元素可能位于普通3D物体前面或者后面显示。...这种模式可以用来实现跟随人物移动血条或者名称,如下图所示: ? ?   ...,分享成为一种美德,欢迎转载。

1.7K10
领券