找回密码
 注册帐号

扫一扫,访问微社区

着色器 unity 制作圆环进度条

12
回复
1464
查看
[ 复制链接 ]
3偶尔光临
258/300
排名
10112
昨日变化

16

主题

40

帖子

258

积分

Rank: 3Rank: 3Rank: 3

UID
295003
好友
0
蛮牛币
217
威望
0
注册时间
2018-8-28
在线时间
94 小时
最后登录
2019-4-8
2018-9-26 11:44:08 显示全部楼层 阅读模式
5蛮牛币
看了网上的帖子的,都是用FillAmount来做,就是想问一个控制时间的问题,比如说我想5秒达到100%,那我要怎么设置或者怎么写代码才能控制?
我是希望是从0在5秒内持续增长到100%,而不是间断式增长的。有一个想法是想用dotween的sequence来做,每个一秒执行一次fillamout += 0.2,不过感觉这样就是间断式增长了。
回复

使用道具 举报

排名
17814
昨日变化

0

主题

20

帖子

82

积分

Rank: 2Rank: 2

UID
268245
好友
0
蛮牛币
27
威望
0
注册时间
2018-2-8
在线时间
26 小时
最后登录
2019-4-10
2018-9-26 11:44:09 显示全部楼层
QQ截图20180926132624.png 用这个  
image.fillAmount += Time.deltatime*0.2;

在update里面调用
回复

使用道具 举报

3偶尔光临
258/300
排名
10112
昨日变化

16

主题

40

帖子

258

积分

Rank: 3Rank: 3Rank: 3

UID
295003
好友
0
蛮牛币
217
威望
0
注册时间
2018-8-28
在线时间
94 小时
最后登录
2019-4-8
楼主 2018-9-26 16:49:41 显示全部楼层
found_dada 发表于 2018-9-26 11:44
用这个  
image.fillAmount += Time.deltatime*0.2;

还有个问题,就是这个方法是可以实现,但是花的时间超过了5秒,大概到了7、8秒的样子,如果我修改成一个倍数的话,比如说1.5 * deltaTime,会不会有什么影响
回复

使用道具 举报

7日久生情
1742/5000
排名
1338
昨日变化

1

主题

67

帖子

1742

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
164137
好友
0
蛮牛币
1844
威望
0
注册时间
2016-8-25
在线时间
763 小时
最后登录
2019-6-17
2018-9-26 17:07:10 显示全部楼层
你难道不知道Dotween里 有DoFillAmount的方法吗!就算没有的也可以用Dotween.To自己构造啊
回复

使用道具 举报

排名
17814
昨日变化

0

主题

20

帖子

82

积分

Rank: 2Rank: 2

UID
268245
好友
0
蛮牛币
27
威望
0
注册时间
2018-2-8
在线时间
26 小时
最后登录
2019-4-10
2018-9-26 18:03:08 显示全部楼层
Deliver_Nk8a0 发表于 2018-9-26 16:49
还有个问题,就是这个方法是可以实现,但是花的时间超过了5秒,大概到了7、8秒的样子,如果我修改成一个 ...

不不不  fillAmount的最大值就是1  要在5秒里每次走1/5      就是0.2    你试试写在fixedUpdate里面
回复

使用道具 举报

3偶尔光临
258/300
排名
10112
昨日变化

16

主题

40

帖子

258

积分

Rank: 3Rank: 3Rank: 3

UID
295003
好友
0
蛮牛币
217
威望
0
注册时间
2018-8-28
在线时间
94 小时
最后登录
2019-4-8
楼主 2018-9-26 18:35:26 显示全部楼层
found_dada 发表于 2018-9-26 18:03
不不不  fillAmount的最大值就是1  要在5秒里每次走1/5      就是0.2    你试试写在fixedUpdate里面 ...

我是在lua里写的,用了update来写,就是按照你的写法的话,确实超过了5秒才完全转完,就是1.5倍的Time.deltaTime才合适,不知道是什么原因
回复

使用道具 举报

3偶尔光临
258/300
排名
10112
昨日变化

16

主题

40

帖子

258

积分

Rank: 3Rank: 3Rank: 3

UID
295003
好友
0
蛮牛币
217
威望
0
注册时间
2018-8-28
在线时间
94 小时
最后登录
2019-4-8
楼主 2018-9-26 18:36:47 显示全部楼层
cqy1992 发表于 2018-9-26 17:07
你难道不知道Dotween里 有DoFillAmount的方法吗!就算没有的也可以用Dotween.To自己构造啊 ...

嗯 知道了。后来查到了。谢谢
回复

使用道具 举报

3偶尔光临
258/300
排名
10112
昨日变化

16

主题

40

帖子

258

积分

Rank: 3Rank: 3Rank: 3

UID
295003
好友
0
蛮牛币
217
威望
0
注册时间
2018-8-28
在线时间
94 小时
最后登录
2019-4-8
楼主 2018-9-27 16:30:14 显示全部楼层
found_dada 发表于 2018-9-26 18:03
不不不  fillAmount的最大值就是1  要在5秒里每次走1/5      就是0.2    你试试写在fixedUpdate里面 ...

写在fixedUpdate里,效果会好些,不过上网查过资料,好像说fixedUpdate也不是完全准确,在低于50帧的时候好像就效果差一些
回复

使用道具 举报

4四处流浪
443/500
排名
7018
昨日变化

1

主题

53

帖子

443

积分

Rank: 4

UID
90111
好友
0
蛮牛币
493
威望
0
注册时间
2015-4-7
在线时间
203 小时
最后登录
2019-6-10
2018-9-28 09:27:27 显示全部楼层
直接用协程或者Update
private IEnumerator Test()
{
    float time = 5F;
    float cacheTime = 0F;
    Image img = XXXX;//假设这是你要操作的图片
    img.fillAmount = 0F;
    while(cacheTime < 5F)
    {
        yield return null;
        cacheTime += Time.deltaTime;
        img.fillAmount = Mathf.Lerp(0F, 1F, cacheTime / time);
    }
}
回复

使用道具 举报

7日久生情
2774/5000
排名
263
昨日变化

0

主题

129

帖子

2774

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
18512
好友
0
蛮牛币
5573
威望
0
注册时间
2014-3-22
在线时间
661 小时
最后登录
2019-6-15
2018-9-29 09:34:39 显示全部楼层
不错,学习中,谢谢分享。。。。。。。。。。。
回复

使用道具 举报

排名
48132
昨日变化

0

主题

8

帖子

13

积分

Rank: 1

UID
297877
好友
0
蛮牛币
23
威望
0
注册时间
2018-9-21
在线时间
1 小时
最后登录
2018-9-29
2018-9-29 17:23:01 显示全部楼层
多福多寿
回复

使用道具 举报

7日久生情
2774/5000
排名
263
昨日变化

0

主题

129

帖子

2774

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
18512
好友
0
蛮牛币
5573
威望
0
注册时间
2014-3-22
在线时间
661 小时
最后登录
2019-6-15
2018-10-6 09:22:50 显示全部楼层
学习学习,谢谢分享!
回复

使用道具 举报

3偶尔光临
297/300
排名
10224
昨日变化
1

3

主题

54

帖子

297

积分

Rank: 3Rank: 3Rank: 3

UID
146770
好友
1
蛮牛币
388
威望
0
注册时间
2016-4-26
在线时间
134 小时
最后登录
2019-5-10
2018-10-8 09:55:53 显示全部楼层
简单,dotween.to方法来做
回复

使用道具 举报

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

本版积分规则