24/01/25 21:16:25.06 kXZori1n.net
Resourceクラスを継承したオリジナルのstatus.tresを作成し、それをベースキャラクターノードの派生ノードに保持させる事で擬似的なコンポーネントパターンのようなものを実現したと思っていました
しかしこれらは設計として非常に便利なのですが、保持している変数が同じ値を参照してしまいspankbangます
そのせいで別々に実体化した敵キャラが同時に死んだり、同じタイミングでqueue_free()
されてしまい困ります
これを防ぐにはどうしたら良いのでしょうか……?
Resourceを個別に実体化する等はは可能なのでしょうか?
どうか教えていただきたいです
簡単な設計としては以下のようなものです
stats.tres
∟var hit-point
∟func Damage()→もしhit-pointがゼロになったらHP-is-ZEROをemit
∟signal HP-is-ZERO
Enemy.tscn
∟@export var stats:Resource→インスペクタ上でstats.tresをドラッグドロップ
∟func _ready()→ HP-is-ZEROをPopにコネクト
∟func Pop()→自身をqueue_free()
変数のヒットポイントは全てのEnemyインスタンスで共通してしまい、シングルトンを参照したみたいになってしまいます……orz
おそらくシグナルも同時に飛ばされている筈……