Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | Pitanov V.V. |
Good day!
There is a problem when exporting to android.
If script export mode is compiled - error!
If script export mode is text - it works!
log cat:
04-24 03:32:42.568 28146 28161 I godot : free current scene
04-24 03:32:42.572 28146 28161 I godot : free background
04-24 03:32:42.572 28146 28161 I godot : Background load scene...
04-24 03:32:42.572 28146 28161 E godot : **SCRIPT ERROR**: Invalid type in built-in function 'range'. Cannot convert argument 1 from String to float.
04-24 03:32:42.572 28146 28161 E godot : At: res://Scripts/CoreSceneManager.gdc:31:AS_SceneManager._init_bg() - Invalid type in built-in function 'range'. Cannot convert argument 1 from String to float.
Where did this function ‘range’ come from ?!
AS_SceneManager - is singleton:
func _init_bg() -> void:
printerr("free current scene")
if current_scene != null :
current_scene.free()
current_scene = null
printerr("free background")
if background_scene != null :
background_scene.free()
background_scene = null
printerr("Background load scene...")
var res_bg = ResourceLoader.load(background_tscn, "", false) # <<<==== ERROR! Line 31 WHAT?!
printerr("Background load success")
background_scene = res_bg.instance()
printerr("Background instance")
get_tree().get_root().add_child(background_scene)
get_tree().set_current_scene(background_scene)
background_scene.init_bg()
goto_scene("res://Scenes/Loading.tscn")
return
Background tscn:
func init_bg() -> void :
if not get_viewport().is_connected("size_changed", self, "_on_size_changed"):
#warning-ignore:return_value_discarded
get_viewport().connect("size_changed", self, "_on_size_changed")
_on_size_changed()
if has_node("AnimationPlayer") :
$AnimationPlayer.play("Run")
return
func _on_size_changed() -> void:
#... change size Node2D scene...
Did you use range()
in a class inheriting CoreSceneManager.gd
?
If not… that would be a bug. If you can reproduce this in a minimal project you should report it on Github.
Zylann | 2019-04-24 12:38
Only in this function. Analogue of the existing function “print_tree”.
But it outputs to a variable tree.
Called in a special error scene.
func get_node_tree_name(node : Node, var indent : String = "", var last : bool = true) :
if node == null :
return ""
str_buffer += indent + "|\n"
str_buffer += indent
if last :
str_buffer += "\\--"
indent += " "
else :
str_buffer += "|--"
indent += "| "
str_buffer += node.name + "\n"
var childs = node.get_children()
for i in range(childs.size()) :
get_node_tree_name(childs[i], indent, i == (childs.size() - 1))
Pitanov V.V. | 2019-04-24 12:54
What version are you using? I think this should be fixed in recent versions.
Godot fails loading compiled GDScript in release build when assigning new value to iterator · Issue #25334 · godotengine/godot · GitHub
Xrayez | 2019-04-24 13:43
3.1 stable verison used
Pitanov V.V. | 2019-04-24 13:50
I redid the code.
This script is executed in the scene (Background).
extends Sprite
export(float) var time_offset = 0.0
const _multi_rect : float = 3.0
const _min_size : float = 2048.0
const _half : float = 0.5
const _speed_k : float = 0.005
const _step_offset : float = 128.0
var time : float = 0.0
func _ready():
time = time_offset
var viweport = get_viewport()
if viweport != null :
viweport.connect("size_changed", self, "_update_rect")
_update_rect()
func _update_rect() :
var viweport = get_viewport()
printerr("set x")
var x : float = max(_min_size, viweport.size.x * _multi_rect)
printerr("set y")
var y : float = max(_min_size, viweport.size.y * _multi_rect)
printerr("set sprite size")
self.region_rect.size = Vector2(x, y)
printerr("set bg sprite position")
self.global_position = Vector2(viweport.size.x * _half, viweport.size.y * _half)
self.position.x += _step_offset * time_offset
self.position.y += _step_offset * time_offset
func _process(delta):
time += (delta * _speed_k)
self.position.x += sin(time) * _half
self.position.y += cos(time) * _half
If you remove the script - WORK! …
ERROR:
04-25 00:16:32.100 32445 32460 E godot : **SCRIPT ERROR**: Parse Error: Too few arguments for 'wrapf()' call. Expected at least 3.
04-25 00:16:32.100 32445 32460 E godot : At: res://Scripts/SpriteBackground.gdc:28:GDScript::load_byte_code() - Parse Error: Too few arguments for 'wrapf()' call. Expected at least 3.
04-25 00:16:32.100 32445 32460 E godot : **ERROR**: Method/Function Failed, returning: ERR_PARSE_ERROR
04-25 00:16:32.100 32445 32460 E godot : At: modules\gdscript\gdscript.cpp:785:load_byte_code() - Method/Function Failed, returning: ERR_PARSE_ERROR
04-25 00:16:32.101 32445 32460 E godot : **ERROR**: Condition ' err != OK ' is true. returned: RES()
04-25 00:16:32.103 32445 32460 E godot : At: modules\gdscript\gdscript.cpp:2173:load() - Condition ' err != OK ' is true. returned: RES()
04-25 00:16:32.103 32445 32460 E godot : **ERROR**: Failed loading resource: res://Scripts/SpriteBackground.gdc
04-25 00:16:32.103 32445 32460 E godot : At: core\io\resource_loader.cpp:285:_load() - Method/Function Failed, returning: RES()
Pitanov V.V. | 2019-04-24 14:34