找回密码
 注册帐号

扫一扫,访问微社区

脚本 Unity的bug

6
回复
394
查看
[ 复制链接 ]
2初来乍到
140/150
排名
14227
昨日变化

5

主题

36

帖子

140

积分

Rank: 2Rank: 2

UID
307525
好友
2
蛮牛币
140
威望
0
注册时间
2018-12-8
在线时间
43 小时
最后登录
2019-3-18
2019-3-14 20:09:16 显示全部楼层 阅读模式
50蛮牛币
HorizontalLayoutGroup这个组件加载完成之后, 立即设置spacing无效, 请问有米有好的解决思路
v.horizontalLayouGgroup.spacing = 22

回复

使用道具 举报

6蛮牛粉丝
1231/1500
排名
3110
昨日变化

5

主题

332

帖子

1231

积分

Rank: 6Rank: 6Rank: 6

UID
234410
好友
2
蛮牛币
1382
威望
0
注册时间
2017-7-26
在线时间
406 小时
最后登录
2019-3-21
7 天前 显示全部楼层
可能不是 Unity Bug 可能是你没有弄好而已
你试试这个看好使不
LayoutRebuilder.ForceRebuildLayoutImmediate()
回复

使用道具 举报

6蛮牛粉丝
1188/1500
排名
2037
昨日变化

1

主题

142

帖子

1188

积分

Rank: 6Rank: 6Rank: 6

UID
126588
好友
0
蛮牛币
4494
威望
0
注册时间
2015-10-24
在线时间
373 小时
最后登录
2019-3-21
7 天前 显示全部楼层
v.horizontalLayouGgroup的v是什么?是否有获取到HorizontalLayoutGroup组件?如果都没有问题的话,可是试试延迟0.1秒再设置spacing。
我用GetComponent<VerticalLayoutGroup>().spacing = 22;是没有问题的
回复

使用道具 举报

3偶尔光临
289/300
排名
8415
昨日变化

1

主题

37

帖子

289

积分

Rank: 3Rank: 3Rank: 3

UID
269212
好友
0
蛮牛币
511
威望
0
注册时间
2018-2-23
在线时间
113 小时
最后登录
2019-3-20
7 天前 显示全部楼层
不是BUG设置有问题而已。你不发图,怎么解决呢
回复

使用道具 举报

排名
673
昨日变化

18

主题

1162

帖子

3510

积分

Rank: 9Rank: 9Rank: 9

UID
68430
好友
13
蛮牛币
18222
威望
0
注册时间
2015-1-14
在线时间
954 小时
最后登录
2019-3-20
4 天前 显示全部楼层
本帖最后由 绝世love情缘 于 2019-3-18 10:44 编辑

unity Layout 组件 布局刷新有问题~~他不能即使响应,需要等待一两帧,你自己再拼接预制体时候,有没有发现layOut 组件,设置错了,然后你得必须保存预制后,重新挂接到 hiearchy面板再修改才可以~~~~所以,你在动态设置layout 相关东西完毕时,需要强制刷新所有  layout ,在实际中即使执行了刷新,也未必全部响应设置,
[AppleScript] 纯文本查看 复制代码
    IEnumerator UpdateLayout()
    {
        LayoutGroup[] rectTransforms = transform.GetComponentsInChildren<LayoutGroup>();
        for (int i = 0; i < rectTransforms.Length; i++)
        {
            LayoutGroup rect = rectTransforms[i];
            if (rect == null || rect.gameObject == null || !rect.gameObject.activeInHierarchy)
                continue;

            LayoutRebuilder.ForceRebuildLayoutImmediate(rect.transform as RectTransform);

            while(rect == null && rect.gameObject == null&&CanLayoutWait(rect.transform as RectTransform))
            {
                LayoutRebuilder.ForceRebuildLayoutImmediate(rect.transform as RectTransform);
                yield return new WaitForEndOfFrame();
            }
            yield return new WaitForEndOfFrame();
        }
    }

    private bool CanLayoutWait(RectTransform rectTransform)
    {
        return BeWaitHandleSelfFittingAlongAxis(rectTransform, 0) && BeWaitHandleSelfFittingAlongAxis(rectTransform, 1);
    }
    private bool BeWaitHandleSelfFittingAlongAxis(RectTransform rectTransform,int axis)
    {
        if(rectTransform.childCount >0)
        {
            var contentSizeFitter = rectTransform.GetComponent<ContentSizeFitter>();
            if (contentSizeFitter == null)
                return false;

            FitMode fitting = (axis == 0 ? contentSizeFitter.horizontalFit : contentSizeFitter.verticalFit);
            if (fitting == FitMode.MinSize)
            {
                if( LayoutUtility.GetMinSize(rectTransform, axis)  == 0)
                    return true;
            }
            else
            {
                if (LayoutUtility.GetPreferredSize(rectTransform, axis) == 0)
                    return true;
            }
        }
        return false;
    }

这是我写的刷新,但是仍然不保证能layout 刷新到位!!
回复

使用道具 举报

5熟悉之中
542/1000
排名
5478
昨日变化

6

主题

122

帖子

542

积分

Rank: 5Rank: 5

UID
91563
好友
2
蛮牛币
62
威望
0
注册时间
2015-4-12
在线时间
156 小时
最后登录
2019-3-20
4 天前 显示全部楼层
刷新canvas 试试
回复

使用道具 举报

6蛮牛粉丝
1095/1500
排名
2868
昨日变化

9

主题

222

帖子

1095

积分

Rank: 6Rank: 6Rank: 6

UID
196727
好友
0
蛮牛币
1644
威望
0
注册时间
2016-12-28
在线时间
340 小时
最后登录
2019-3-20
3 天前 显示全部楼层
dmxy 发表于 2019-3-18 17:33
刷新canvas 试试

我以为你是那个绿茶风凉呢,皮卡丘使劲使多了,玩累了。
[发帖际遇]: 一个袋子砸在了 洛神同学 头上,洛神同学 赚了 1 蛮牛币. 幸运榜 / 衰神榜
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则