查看: 238|回复: 2

【新人求教】自学练习了一段逻辑但是无法实现

[复制链接]

1

主题

2

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2021-3-7 00:14:04 | 显示全部楼层 |阅读模式
本帖最后由 鹿的线 于 2021-3-7 00:18 编辑

感觉是很简单的东西,但是本人没啥程序基础所以看不出,希望各位大佬能不吝赐教,谢谢各位!
先说下练习想要达到的效果:通过按钮控制计时器,令显示的数字每秒增加0.1
我个人的做法是:首先按钮信号连接到计时器,按下按钮时计时器启动
  1. extends Timer

  2. func _ready():
  3.         pass

  4. func _on_Button2_pressed():
  5.         autostart = true
复制代码



然后计时器连接到标签,每次计时结束后变量+0.1再update一下

  1. extends Label

  2. func _ready():
  3.         _update()

  4. func _update():
  5.         text = "resource: " + str(Global.resource)

  6. func _on_Button_pressed():
  7.         Global.resource += 1
  8.         _update()

  9. func _on_Timer_timeout():
  10.         Global.resource += 0.1
  11.         _update()
复制代码



用print检查的时候发现计时器应该是成功启动了,但是不知道为什么后面计数显示那里一直会出问题

回复

使用道具 举报

1

主题

2

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2021-3-7 00:17:14 | 显示全部楼层
不知道为什么代码传上来有问题。。我直接复制下来把这是timer的代码:
extends Timer

func _ready():
        pass

func _on_Button2_pressed():
        autostart = true


这是label的代码:

extends Label

func _ready():
        _update()

func _update():
        text = "resource: " + str(Global.resource)

func _on_Button_pressed():
        Global.resource += 1
        _update()

func _on_Timer_timeout():
        Global.resource += 0.1
        _update()

回复

使用道具 举报

0

主题

1

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2021-4-7 23:23:08 来自手机 | 显示全部楼层
要实现你预期的效果, 只需要button、timer、label各一个, 放在同一个场景中, 设置timer的wait_time属性为0.1(0.1秒后超时), 设置one_shot为false,也就是不勾选(重复定时), 处理timeout信号,也就是在_on_Timer_timeout改变label的text属性, 要显示累加的时间,label.text = label.text + 0.1 这句累加代码,存在几个问题, 其一,没有初值,可以编辑label的text属性为0,或者在_ready中写label.text="0" 其二,字符串不能和数字做加法,label.text的值是字符串,所以要把它转为支持小数计算的float类型,和0.1相加后,要作为显示用途,又得把结果转为字符串类型,就是 label.text=str( float(label.text) + 0.1 ) 至此,每0.1秒刷新label就实现了,可以勾选timer的autostart(自动开始)属性,就能看到效果。 剩下的,就是用button按钮,控制定时器启停,在pressed信号中写入 $timer.start() 即可启动定时器(如果已经勾选autostart,则此操作多余),$timer.stop()停止定时器。 至于跨场景使用全局变量,建议以上OK了在实践,循序渐进吧
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Godot中文社区

GMT+8, 2021-5-11 14:11 , Processed in 0.106687 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2020, Godoter.top

快速回复 返回顶部 返回列表