找回密码
 注册帐号

扫一扫,访问微社区

脚本 Unity的bug

6
回复
598
查看
[ 复制链接 ]
3偶尔光临
167/300
排名
14229
昨日变化

7

主题

44

帖子

167

积分

Rank: 3Rank: 3Rank: 3

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

回复

使用道具 举报

6蛮牛粉丝
1378/1500
排名
3109
昨日变化

5

主题

384

帖子

1378

积分

Rank: 6Rank: 6Rank: 6

UID
234410
好友
4
蛮牛币
1705
威望
0
注册时间
2017-7-26
在线时间
499 小时
最后登录
2019-5-24
2019-3-15 09:31:18 显示全部楼层
可能不是 Unity Bug 可能是你没有弄好而已
你试试这个看好使不
LayoutRebuilder.ForceRebuildLayoutImmediate()
回复

使用道具 举报

6蛮牛粉丝
1331/1500
排名
2036
昨日变化

4

主题

171

帖子

1331

积分

Rank: 6Rank: 6Rank: 6

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

使用道具 举报

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

1

主题

37

帖子

291

积分

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

排名
672
昨日变化

19

主题

1181

帖子

3558

积分

Rank: 9Rank: 9Rank: 9

UID
68430
好友
13
蛮牛币
18421
威望
0
注册时间
2015-1-14
在线时间
980 小时
最后登录
2019-5-23
2019-3-18 10:37:44 显示全部楼层
本帖最后由 绝世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熟悉之中
717/1000
排名
5477
昨日变化

9

主题

216

帖子

717

积分

Rank: 5Rank: 5

UID
91563
好友
2
蛮牛币
262
威望
0
注册时间
2015-4-12
在线时间
230 小时
最后登录
2019-5-24
2019-3-18 17:33:13 显示全部楼层
刷新canvas 试试
回复

使用道具 举报

6蛮牛粉丝
1209/1500
排名
2867
昨日变化

10

主题

266

帖子

1209

积分

Rank: 6Rank: 6Rank: 6

UID
196727
好友
0
蛮牛币
1584
威望
0
注册时间
2016-12-28
在线时间
409 小时
最后登录
2019-5-24

迈向小康

2019-3-19 15:03:14 显示全部楼层
dmxy 发表于 2019-3-18 17:33
刷新canvas 试试

我以为你是那个绿茶风凉呢,皮卡丘使劲使多了,玩累了。
回复

使用道具 举报

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

本版积分规则