解决Unity 各种LayoutGroup无法解决的 动态子成员位置不对 强制刷新布局问题

Posted NickLiaoye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Unity 各种LayoutGroup无法解决的 动态子成员位置不对 强制刷新布局问题相关的知识,希望对你有一定的参考价值。

对于unity的gridLayout verticalLayout 或者horizontalLayout
经常有加入新成员或者改变成员大小后,部件大小、位置不对的问题。
一般来说,这个方式就能解决

LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform);

这样

也有些则只能像这个链接10楼里说到的那样用开关gameobject 等一帧之类的方法解决。
比如

horizLayoutGroup.CalculateLayoutInputHorizontal();
horizLayoutGroup.CalculateLayoutInputVertical();
horizLayoutGroup.SetLayoutHorizontal();
horizLayoutGroup.SetLayoutVertical();

而上面这个链接的15楼则完美解决了我的问题,而这个问题的本质来源于
layoutgroup下的子物体有contentSizeFitter 或者dotween动画等控制其大小造成的冲突

那删掉就解决了
那么我又想要contentSizeFitter 之类的怎么办呢?
这就是这里解决的问题了

我姑且给大家翻译过来
Make the parent have the content size fitter and set either the horizontal or vertical fit to preferred size.
让有layoutGroup成员的这个父物体挂着ContentSizeFitter ,把这个ContentSizeFitter 设为horizontal或者vertical fit是preferred的状态

Let its immediate child be the background, and add a layout element to it to control its minimum size. Also add a layout group to it to control the text that you will put as a child to it.
让它的直辖子物体 十字军之王狂喜 是我们新建的一个background物体(有没有Image无所谓),
给他加一个Layout 元素设定其最小长宽
然后再给它加一个vertical layout group 让它的子物体Text本身来控制长宽
所以把child control size两个勾选

Add the text as a child of background
把text(或者别的本来的子物体)放成这个background物体的子物体
text当然要有ContentSizeFitter

Change the text to check the background.
改text就会自动改动background物体的长宽
contentsizefitter 达到了 效果 也没有影响主layout的布局。

Unity-解决Input类无法识别的问题

前言

今天在学习Unity的时候遇到了一个问题,当输入Input的时候VS没法识别对应的内容。
如果你修改之后还是没法识别的话,那就是其他的原因了。

Unity版本: 2019.4.26
Visual Studio版本: 2019

在这里插入图片描述

相关介绍

Everything工具官网

Utools工具官网

其他介绍

微软官方C#函数文档

Unity官方API文档(英文)

Unity官方API文档(中文)

Unity官方用户手册(中文)

Unity游戏蛮牛API文档(中文)

Unity教程-C语言中文网

Unity用户手册-unity圣典

Unity组件手册-unity圣典

Unity脚本手册-unity圣典

上一篇笔记

Unity(4)-生成2D预制体

下一篇笔记

Unity(6)-通过脚本修改图片sprite

解决方法

选择Edit下的Preferences,如果是中文版的Unity应该是编辑下的首选项

在这里插入图片描述

Preferences界面中有一个External Tools扩展工具

在这里插入图片描述

编辑器默认是选择的Open by file extension

在这里插入图片描述

点击下拉框,选择浏览Brose本地的编辑器

在这里插入图片描述

找到VS的存放位置,选择devenv就行了
通常下载VS的时候会默认把VS安装在C盘,如果找不到的话可以试试EverthingUtool软件

在这里插入图片描述
在这里插入图片描述

然后关闭之前打开的脚本,重新打开脚本,输入Input就能识别了

在这里插入图片描述

以上是关于解决Unity 各种LayoutGroup无法解决的 动态子成员位置不对 强制刷新布局问题的主要内容,如果未能解决你的问题,请参考以下文章

Unity3d中UGUI组件精简复盘(十七)LayoutElement组件

VS无法附加到Unity的问题解决过程

Unity sdk 版本等于0,无法打包如何解决

Unity-解决Input类无法识别的问题

Unity-解决Input类无法识别的问题

怎么解决Unity2017无法发布WebGL