Godot Version
Godot 4.6.2
Question
Hey guys, I am trying to add a character portrait to the HUD of my game, but for whatever reason it doesn’t appear. Everything else in the scene tree does, even the status icons when applying the states, but never the portrait.
When I copy and paste another texture rectangle and leave it as a sibling but isnt part of the script it does show up. So I think its has to be something about the script rather than the nodes.
extends Control
@export var texture_male: Texture2D
@export var texture_female: Texture2D
@export var texture_extra1: Texture2D
@export var texture_extra2: Texture2D
@export var icon_no_walk: Texture2D
@export var icon_no_run: Texture2D
@export var icon_no_jump: Texture2D
@export var icon_no_crouch: Texture2D
@export var icon_no_attack: Texture2D
@export var icon_no_see: Texture2D
@export var icon_no_talk: Texture2D
@export var icon_no_answer: Texture2D
@export var icon_no_touch: Texture2D
@onready var portrait: TextureRect = $AnchorBottomLeft/PlayerPortrait
@onready var health_bar: ProgressBar = $AnchorBottomLeft/InfoPanel/HBoxContainer/VBoxContainer/HealthBar
@onready var inspect_label: Label = $AnchorBottomLeft/InfoPanel/HBoxContainer/VBoxContainer/InspectLabel
@onready var icon_walk: TextureRect = $AnchorBottomLeft/InfoPanel/HBoxContainer/StatusIcons/IconWalk
@onready var icon_run: TextureRect = $AnchorBottomLeft/InfoPanel/HBoxContainer/StatusIcons/IconRun
@onready var icon_jump: TextureRect = $AnchorBottomLeft/InfoPanel/HBoxContainer/StatusIcons/IconJump
@onready var icon_crouch: TextureRect = $AnchorBottomLeft/InfoPanel/HBoxContainer/StatusIcons/IconCrouch
@onready var icon_attack: TextureRect = $AnchorBottomLeft/InfoPanel/HBoxContainer/StatusIcons/IconAttack
@onready var icon_see: TextureRect = $AnchorBottomLeft/InfoPanel/HBoxContainer/StatusIcons/IconSee
@onready var icon_talk: TextureRect = $AnchorBottomLeft/InfoPanel/HBoxContainer/StatusIcons/IconTalk
@onready var icon_answer: TextureRect = $AnchorBottomLeft/InfoPanel/HBoxContainer/StatusIcons/IconAnswer
@onready var icon_touch: TextureRect = $AnchorBottomLeft/InfoPanel/HBoxContainer/StatusIcons/IconTouch
func _ready():
GameManager.state_changed.connect(_on_state_changed)
_on_state_changed()
func _on_state_changed():
# Portrait
match GameManager.current_state:
"male":
portrait.texture = texture_male
inspect_label.text = "Male"
"female":
portrait.texture = texture_female
inspect_label.text = "Female"
"extra1":
portrait.texture = texture_extra1
inspect_label.text = "extra1"
"extra2":
portrait.texture = texture_extra2
inspect_label.text = "extra2"
# State icons
icon_walk.visible = not GameManager.can_walk
icon_run.visible = not GameManager.can_run
icon_jump.visible = not GameManager.can_jump
icon_crouch.visible = not GameManager.can_crouch
icon_attack.visible = not GameManager.can_attack
icon_see.visible = not GameManager.can_see
icon_talk.visible = not GameManager.can_talk
icon_answer.visible = not GameManager.can_answer
icon_touch.visible = not GameManager.can_touch
icon_walk.texture = icon_no_walk
icon_run.texture = icon_no_run
icon_jump.texture = icon_no_jump
icon_crouch.texture = icon_no_crouch
icon_attack.texture = icon_no_attack
icon_see.texture = icon_no_see
icon_talk.texture = icon_no_talk
icon_answer.texture = icon_no_answer
icon_touch.texture = icon_no_touch
Thanks for you time and assistance!

