|
|
|
|
Attention |
Topic was automatically imported from the old Question2Answer platform. |
|
Asked By |
salvob |
I have something like
extends Node2D
export (Resource) var this_card
export (Texture) var back_texture = "res://assets/cards/cardBack_red1.png"
func _ready():
piece_name = this_card.piece_name
mana_cost = this_card.mana_cost
$CardControl/Template/Artwork.texture = this_card.artwork
flipcard(true)
and I wish to instantiate the node from gdscript editing dynamically the resource and texture to set.
But I cannot figure it out how to do it.
I tried with _init(card)
but it says :
Cannot convert from Object to int
Can you help me, pleease ?
|
|
|
|
Reply From: |
camarones |
To access a node for instancing that it must be saved as a separate scene. (Right click on it in the scene tree and choose Instance Child Scene). The function _init():
is called once a node has been initialised and cannot be used to instance other nodes. Instead you use "path_to_the_instance_child_scene".instance()
, which returns a reference to that node.
From there you can adjust any properties you like before finally adding it as a child of something (it won’t be created until you do this). Here I’ve added it as a child of the object that is doing the instancing, but you could use get_tree().get_root()
to put it somewhere else.
var new_card = preload("res://*path of the scene to be loaded*")
export (Texture) var back_texture = "res://assets/cards/cardBack_red1.png"
func _ready():
var instantiated = new_card.instance()
new_card.name = self.name
new_card.mana_cost = self.mana_cost
new_card.get_child(interger_index_of_child_sprite).texture = back_texture
add_child(new_card)