Encountered a weird problem in Godot. Consider the following code:
class_name VoiceBanks
const banks: Dictionary = {
"lemon": preload("res://prefabs/voice_player/voices/ava.tres")
}
static func lookup(key: String) -> VoiceBank:
if banks.has(key):
return banks[key]
else:
return null
lookup
, even though it successfully
finds the right VoiceBank
resource,
fails with the error
Trying to return value of type "Resource" from a function which the return type is "VoiceBank".
However, delaying the load until later works:
class_name VoiceBanks
const banks: Dictionary = {
"lemon": "res://prefabs/voice_player/banks/ava.tres"
}
static func lookup(key: String) -> VoiceBank:
if banks.has(key):
return load(banks[key])
else:
return null
I'm not really sure why this is, but I'm guessing
it has something to do with how Godot treats
const
values.