如何解决如何获取从 godot 中的 get_clipboard 函数获得的字符串?
因此,当我在 godot 中使用 OS.get_clipboard()
函数时,它将剪贴板值存储为字符串。
现在我想以某种方式在屏幕上显示它,但我不能。
txt1 = OS.get_clipboard
不起作用。
解决方法
关于 OS.get_clipboard
的局限性:
调用 OS.get_clipboard()
会将剪贴板的内容作为字符串(如果是文本)提供给您。例如,如果您复制了一张图片,OS.get_clipboard()
将返回空字符串。
此外,根据平台,OS.get_clipboard()
可能无法正常工作(移动),或者 Godot 可能会保留独立于操作系统的剪贴板(网络,可能取决于浏览器)。
显示剪贴板的内容:
我会从 print
开始,只是为了测试它是否有效:
print(OS.get_clipboard())
另一个选项是OS.alert
:
OS.alert(OS.get_clipboard())
但是,如果要设置 Label
或 TextEdit
或类似的文本,则需要设置其 text
属性。
例如:
onready var label = get_node("Label")
func _something():
label.text = OS.get_clipboard()
另见onready
。
这也可以:
func _something():
$Label.text = OS.get_clipboard()
如果您不熟悉引用其他节点,请参阅 Understanding node paths 和 get_node
上的文档。
顺便说一下,OS.get_clipboard()
是 OS.clipboard
属性的 getter。你可以简单地这样做:
onready var label = get_node("Label")
func _something():
label.text = OS.clipboard
可能的错误:
如果你这样做:
onready var label = get_node("Label")
func _something():
label = OS.get_clipboard()
您正在用字符串替换对节点的引用。您也不会看到剪贴板的内容。 没有错误或警告。这不是您想要的。
如果您希望 Godot 帮助您避免此类错误,请注释变量的类型,例如,这告诉 Godot 您使用的是 Label
,因此 Godot 会知道它不应该是字符串,并尝试为它设置一个字符串是一个错误(Godot 可以在不执行代码的情况下指出这一点):
onready var label:Label = get_node("Label") # notice type annotation after ":"
func _something():
label = OS.get_clipboard() # error
或者对于TextEdit
:
onready var text:TextEdit = get_node("TextEdit") # notice type annotation after ":"
func _something():
text = OS.get_clipboard() # error
另见Static typing in GDScript。 如果您属于“不需要类型”的阵营,请参阅Ideology。
我还要提醒你,当你想调用一个方法时,你不应该忘记()
。如果这样做,则会出现运行时错误:
onready var label:Label = get_node("Label")
func _something():
label.text = OS.get_clipboard # runtime error
通过运行时错误,我的意思是它在执行时会失败。
避免此错误的一种方法是改用该属性:
onready var label:Label = get_node("Label")
func _something():
label.text = OS.clipboard
最后,为了覆盖基础,我会说,如果您将剪贴板的内容存储在某个变量中:
func _something():
var txt1:String
txt1 = OS.get_clipboard()
好吧,你打算怎么处理那个变量?如果您不使用它,Godot 应该会在编辑器中显示 UNUSED_VARIABLE
警告。
记住要注意 Godot 向您展示的错误和警告。这些类型可以帮助发现错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。