博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UGUI Set Anchor And Pivot
阅读量:6596 次
发布时间:2019-06-24

本文共 2086 字,大约阅读时间需要 6 分钟。

我的环境

Unity 5.3.7p4

在运行时动态的设置UI元素的锚点和中心点。

设置Anchor

修改offsetMax不生效

使用下面这段代码设置Anchor并不会生效,尽管他和你在属性面板看到的值是一样的。

retRoot.offsetMin = Vector2(0,0)retRoot.offsetMax = Vector2(0,0)

SetInsetAndSizeFromParentEdge

使用SetInsetAndSizeFromParentEdge函数来进行设定。此函数不受锚点和中心的影响,其中第一个参数代表对齐方式,第二个参数为距离边界的距离,第三个参数为宽度或高度。

示例:

---设置为左上角retRoot:SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, 0, width)retRoot:SetInsetAndSizeFromParentEdge(RectTransform.Edge.Top, 0, height)

修改Anchor不会影响Pivot

修改Anchor之后,并不会影响Pivot

设置Pivot(中心点)

pivot是一个0~1之间的值 示例:retRoot.pivot = Vector2(0, 0)

其中0,0为左下角

当你要做动画,设置父容器的Pivot就可以控制动画的出现方向

查看Pivot

在Editor的工具栏将Pivot的模式设置为这个模式(Pivot Local),才能查看到正确的Pivot。

363476-20180419165746196-472786449.png

示例代码

设置左上、左下、右上、右下四个锚点,并同时设置中心点。

---@param retRoot UnityEngine.RectTransformfunction TipsHelper.SetTipsAnchor(retRoot, anchor, width, height)    if not retRoot then        print("[error] SetAnchor失败,RectTransform不能为空")        return    end    if anchor == Constants.Anchor.LeftTop then        retRoot.pivot = Vector2(0, 1)        retRoot:SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, 0, width)        retRoot:SetInsetAndSizeFromParentEdge(RectTransform.Edge.Top, 0, height)    elseif anchor == Constants.Anchor.LeftBottom then        retRoot.pivot = Vector2(0, 0)        retRoot:SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, 0, width)        retRoot:SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, 0, height)    elseif anchor == Constants.Anchor.RightTop then        retRoot.pivot = Vector2(1, 1)        retRoot:SetInsetAndSizeFromParentEdge(RectTransform.Edge.Right, 0, width)        retRoot:SetInsetAndSizeFromParentEdge(RectTransform.Edge.Top, 0, height)    elseif anchor == Constants.Anchor.RightBottom then        retRoot.pivot = Vector2(1, 0)        retRoot:SetInsetAndSizeFromParentEdge(RectTransform.Edge.Right, 0, width)        retRoot:SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, 0, height)    endend

参考资料

参考:http://www.arkaistudio.com/blog/334/unity/unity-ugui-%E5%8E%9F%E7%90%86%E7%AF%87%E4%B8%89%EF%BC%9Arecttransform

转载于:https://www.cnblogs.com/zhaoqingqing/p/8884303.html

你可能感兴趣的文章
Directx教程(23) 简单的光照模型(2)
查看>>
Java 并发性和多线程
查看>>
Python线程专题9:线程终止与挂起、实用工具函数
查看>>
Unity中关于作用力方式ForceMode的功能注解
查看>>
view生命周期的一个找父类的控件的方法
查看>>
物理读之LRU(最近最少被使用)的深入解析
查看>>
Python2.7升级到3.0 HTMLTestrunner报错解决方法
查看>>
建立Git版本库管理框架例子
查看>>
nginx防止部分DDOS攻击
查看>>
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字......
查看>>
number_format() 函数定义和用法
查看>>
Java8中聚合操作collect、reduce方法详解
查看>>
查看记录
查看>>
mybatis报ORA-00911: 无效字符
查看>>
我的友情链接
查看>>
Linux运维学习笔记之二:常用命令1
查看>>
snort安装常见问题及解决方法
查看>>
在ubuntu系统安装jdk
查看>>
Extjs - Panel组件
查看>>
我的友情链接
查看>>