Unity的UGUI在SetParent后修改UI的localposition问题

正常情况下,UGUI设置UI的localposition可以直接赋值

UIxxx.rectTransform.localPosition = new Vector3(lineLenght[0] / 2f, 0, 0);

运行后在Unity的Inspector面板可以得到正确的()。
但如果

UIxxx.rectTransform.SetParent(GameObx]);
UIxxx.rectTransform.localPosition = new Vector3(lineLenght[0] / 2f, 0, 0);

运行后得到的坐标值是错误的。
正确的做法:

UIxxx.rectTransform.SetParent(GameObx]);
UIxxx.rectTransform.anchoredPosition= new Vector3(lineLenght[0] / 2f, 0, 0);

通过设置锚点的坐标来设置UI的position。
运行后,在Inspector面板下可以看到正确的Rect Transform。

原文地址:https://www.cnblogs.com/Afuness/p/11442545.html

时间: 2024-12-06 11:36:12

Unity的UGUI在SetParent后修改UI的localposition问题的相关文章

Unity界面UGUI遮挡的问题

解决方法: 在使用Unity的UGUI时候,重叠的UI控件可能会导致某一个控件点击失败,如下图: 在前面的图片挡住了后面的Button,导致后面的Button无法触发点击事件,此时只要把图片的Image组件的Raycast Target的勾选取消即可解决遮挡的问题: 原理: 鼠标点击屏幕实际上是以点击的点为原点,发射一条垂直屏幕向里的射线,然后通过射线与第一个物体的相交来判断是否点击到该物体.取消了Raycast Target选项表明不作为射线相交的对象,则不会挡住后面的Button 原文地址:

修改UI及盒子启动

服务器操作: 1.配置nfs: # vim /etc/exports /home/nfsroot *(insecure,rw,no_root_squash) mkdir -pv /home/nfsroot 1.安装nfs # rpm -qa |grep nfs # yum -y install nfs-utils portmap # systemctl start nfs.service # systemctl status nfs.service 盒子操作: 1.用telnet协议连接盒子(盒

C# Wpf异步修改UI,多线程修改UI(二)

1.使用定时器异步修改 这是相对比较简单的方法 在Wpf中定时器使用DiapatcherTimer,不使用Timer原因: 在一个应用程序中,Timer会重复生成time事件,而DispatcherTimer是一个集成到了Dispatcher队列中的时钟,这可以使它被按照指定的时间间隔以指定的priority定期执行. 对于一个Timer时钟事件,系统并不能保证在时间间隔到达后被立即执行,但是能够确保在时间间隔到达之前不被执行.这是因为DispatcherTimer像其他操作一样被放置在了Dis

C# WPF 使用委托修改UI控件

近段时间在自学WPF,是一个完全不懂WPF的菜鸟,对于在线程中修改UI控件使用委托做一个记录,给自已以后查询也给需要的参考: 界面只放一个RichTextBox,在窗体启动时开起两个线程,调用两个函数,每隔1秒写一次当前时间 一 界面XAML如下: <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation&qu

C# 自定义线程修改UI(一)

在Wpf中界面显示数据的修改,都是通过UI线程完成,如果尝试从其他线程中直接修改控件的值回抛出异常,“调用线程无法访问此对象,因为另一个线程拥有该对象”. 例如:http://www.cnblogs.com/tianma3798/p/5762016.html 解决方案1:通过Invoke或者BeginInvoke将操作发送给Dispatcher 对象,委托Dispatcher去执行UI操作,每个UI控件都有Dispatcher 对象 代码实例: Xaml代码 <ProgressBar x:Nam

解决克隆 centos虚拟机后修改克隆后的机器的ip、mac、uuid失败的问题

解决办法: So here’s how we fix it: Remove the kernel’s networking interface rules file so that it can be regenerated # rm -f /etc/udev/rules.d/70-persistent-net.rules Restart the VM # reboot UPDATE your interface configuration file # vi /etc/sysconfig/ne

调试与运行结果不一致?第一次运行正确,后面错误,由于多线程修改UI吗?

先说说问题背景:使用Eclipse安装android程序到手机,调试ok,达到预想效果,退出,重新打开程序,No,部分UI界面未显示,Why? 首先想到的是多线程问题,调试与运行结果不一致说明中间存在时间差,因为单步调试的时候时间会被延长,然后找原因点,程序中修改UI 的代码分两部分,1部分修改好友图像,2部分更新地图,1是通过AsyncHttpClient异步从后台取数据,2则不涉及异步问题,在线程上测试了 很久,没搞定. 今天早上过来,突然意识到,修改地图的activity是新增的,不像其他

安装完sql server 后修改计算机名后不能进行发布的订阅的解决办法

由于需要需要配置一个发布订阅,可是一直报告:" sql server 复制需要有实际的服务器名称才能连接到服务器,不支持通过别名.ip地址或其他任何备用名称进行连接.请指定实际的服务器名称“xxxx”(Replication Utlities)." 经过一番分析发现是在安装完sql server 后修改过机器名称,运行下面两条语句既可以看出来:       use master select @@servername: select serverproperty('servername

VMware虚拟机克隆CentOS6.5后修改网卡

在学习zk伪分布式集群对的时候,第一次注意到克隆虚拟机后修改eth的ip地址,发现ip不是自己修改的ip,进而在询问下发现,当我们第一次登陆查看我们克隆的虚拟机ip时:我们看到的ip不是eth0的ip,而是eth1的ip. 而究其原因是因为在克隆后出现网卡MAC地址和原系统MAC地址一样,在局域网内会有冲突,这时我们需要更改克隆后的MAC地址. 解释一下:实际上克隆后的系统有两个网卡eth0和 eth1,实际起作用的是eth1,eth0是从之前克隆过来的,eth1才是我们需要的.克隆系统会重新生