关于Unity UI翻转的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Unity UI翻转的问题相关的知识,希望对你有一定的参考价值。

参考技术A

demo地址 ,里面UIRevertTest场景

之前在项目中发现UI布局错乱,原本在左上角的东西跑到了右下角,原本在下面的跑到了上面,最后发现是UI翻转的问题。

假设现在有这样的UI结构

然后button的布局信息是这样的:

那么button应该在panel的左上角。因为锚点在左上角,而posX和posY都很小。可实际button在左下角去了,如图:

而且注意锚点的位置,在视觉上就是右下角。这就很奇怪,为什么?

因为button的父控件panel翻转了

怎么翻转?只要拖住左上角的点,把它往右下角拉,直到超过原本右下角的点就好了。也就是说现在你看到的右下角其实并不是右下角,而是正常状态的左上角。

而翻转有什么迹象可以一眼看出来?

翻转的控件会有红色的对角线标识出来,主意看第二张图

还有一个相关的问题,就是如果UI制作成预制件,如果进行这样的操作就会出问题:
把预制件拖进场景查看,然后再拖进 Cavas 。

预制件的scale会发生变化。准确说,是 Cavas 的 Render Mode 设为 Screen Space - Camera 的时候,因为这个时候, Cavas 的scale是缩小的。

Screen Space - Camera 的时候, Cavas 的实际大小根据距离相机的距离来算,而它数据里的大小是屏幕大小,而一般屏幕大小都很大,所以这时 Cavas 的scale就很小了。

scale很小,导致预制件从其他位置拖到 Cavas 下,而不是直接放到 Cavas 下面,Unity在修改parent transform的时候会自动修改物体的数据来保证它显示大小和原来一样,那么父物体缩小了,子物体就会调整放大,保持和原来一致。

这一切都没有问题,但如果这个时候你修改了预制件,然后Apply了,就悲剧了

Unity学习笔记 之 关于 Unity UI 的 Slider 的代码记录


代码例如以下:

using UnityEngine;
using System.Collections;

//1.引入 UI 。
using UnityEngine.UI;

public class testSliderEvent : MonoBehaviour {

	//2.定义一个 Text 目标对象。

public Text targetTextObject; //3.定义一个 Slider 目标对象。 public Slider targetSliderOject; // Use this for initialization void Start () { } // Update is called once per frame void Update () { //4.更新内容。 targetTextObject.text = "滑动值为 " + targetSliderOject.value; } }



将代码直接绑在 Slider 控件上。完事。

技术分享


Min Value 设置 Slider 的最小值。

Max Value 设置 Slider 的最大值。

Whole Numbers Slider的值是否为整数,勾选为整数,没有勾选则为浮点数。

Value 设置 Slider的当前值。








以上是关于关于Unity UI翻转的问题的主要内容,如果未能解决你的问题,请参考以下文章

Unity学习笔记 之 关于 Unity UI 的 Slider 的代码记录

Unity 关于特效和UI显示的优先级问题

Unity中实现UI翻转

Unity中实现UI翻转

关于unity3D UI 对canvas的操作问题(鼠标拖动改变画布大小)

关于Unity中UI中的Button节点