首页
学习
活动
专区
工具
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
相关搜索:如何让div中的元素在不超出父元素的情况下跟随光标?如何让代码跟随第一个链接之后的另一个链接?如何让tkinter在不运行另一个函数的情况下延迟一个特定的函数?如何传递位于另一个不希望指定的可选参数之后的可选参数如何在不签出的情况下获取另一个分支的文件列表如何在不导入的情况下引用另一个文件中的变量?如何让一个图像的重复行位于左侧,将另一个图像的重复行置于中心html元素的右侧?如何让一个类的iter方法在不运行for循环的情况下返回值?如何在不触发另一个函数的情况下将值从一个函数传递到另一个函数?如何在不溢出的情况下对另一个数进行模运算?Rails devise:如何在不注销前一个帐户的情况下登录另一个帐户如何让sbt在不考虑前一个命令的结果的情况下运行另一个连续的命令?如何在不更改时间窗口的情况下强制访问VRPTW中的下一个节点如何在不更改链接的情况下重定向到.htaccess中的另一个链接如何在不添加引用的情况下从另一个项目调用c#函数?如何在不声明另一个数组的情况下转置一个2D数组?如何在C#中不继承的情况下从另一个类获取值属性如何在不返回的情况下访问在main中的另一个函数中创建的数组?如何以紧凑的方式在不浪费空间的情况下将子div一个置于另一个之上?如何在不传递调用对象的情况下将函数从一个类移动到另一个类
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

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

2.4K30

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

5.3K30
  • 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.4K20

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

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

    1.6K30

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

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

    3K22

    零基础入门 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.7K50

    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.9K80

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

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

    3.5K30

    用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.8K20

    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。

    45750

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

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

    1.9K10

    【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通道值。

    46521

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

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

    1.5K10
    领券