From e688f7f0c17ae8a30d18fb012843c0a3c45048bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Sun, 21 Sep 2025 13:05:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(ComponentManager):=20=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E7=AE=A1=E7=90=86=E5=99=A8=E5=B9=B6=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E5=AD=90=E5=BC=B9=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refactor(DirTool): 添加获取无扩展名文件名的方法 feat(WorldManager): 初始化ComponentManager 新增多个子弹资源文件并移动至统一目录 包括ForeverRainbow、ArrowSeven、SunDance、HeavyCrystal和LightGun --- .../{BossAttack/Bear => }/ArrowSeven.tscn | 0 .../{BossAttack/Bear => }/ForeverRainbow.tscn | 0 .../{BossAttack/KukeMC => }/HeavyCrystal.tscn | 0 .../{BossAttack/Bear => }/LightGun.tscn | 0 .../{BossAttack/Bear => }/SunDance.tscn | 0 scripts/Tools/DirTool.gd | 2 ++ scripts/Tools/Managers/ComponentManager.gd | 18 +++++++++++++++++- scripts/Tools/Managers/WorldManager.gd | 1 + 8 files changed, 20 insertions(+), 1 deletion(-) rename components/Bullets/{BossAttack/Bear => }/ArrowSeven.tscn (100%) rename components/Bullets/{BossAttack/Bear => }/ForeverRainbow.tscn (100%) rename components/Bullets/{BossAttack/KukeMC => }/HeavyCrystal.tscn (100%) rename components/Bullets/{BossAttack/Bear => }/LightGun.tscn (100%) rename components/Bullets/{BossAttack/Bear => }/SunDance.tscn (100%) diff --git a/components/Bullets/BossAttack/Bear/ArrowSeven.tscn b/components/Bullets/ArrowSeven.tscn similarity index 100% rename from components/Bullets/BossAttack/Bear/ArrowSeven.tscn rename to components/Bullets/ArrowSeven.tscn diff --git a/components/Bullets/BossAttack/Bear/ForeverRainbow.tscn b/components/Bullets/ForeverRainbow.tscn similarity index 100% rename from components/Bullets/BossAttack/Bear/ForeverRainbow.tscn rename to components/Bullets/ForeverRainbow.tscn diff --git a/components/Bullets/BossAttack/KukeMC/HeavyCrystal.tscn b/components/Bullets/HeavyCrystal.tscn similarity index 100% rename from components/Bullets/BossAttack/KukeMC/HeavyCrystal.tscn rename to components/Bullets/HeavyCrystal.tscn diff --git a/components/Bullets/BossAttack/Bear/LightGun.tscn b/components/Bullets/LightGun.tscn similarity index 100% rename from components/Bullets/BossAttack/Bear/LightGun.tscn rename to components/Bullets/LightGun.tscn diff --git a/components/Bullets/BossAttack/Bear/SunDance.tscn b/components/Bullets/SunDance.tscn similarity index 100% rename from components/Bullets/BossAttack/Bear/SunDance.tscn rename to components/Bullets/SunDance.tscn diff --git a/scripts/Tools/DirTool.gd b/scripts/Tools/DirTool.gd index 074ed7d..30b4168 100644 --- a/scripts/Tools/DirTool.gd +++ b/scripts/Tools/DirTool.gd @@ -18,3 +18,5 @@ static func listdir(path: String) -> Array[String]: return files else: return [] +static func getBasenameWithoutExtension(path: String) -> String: + return path.get_file().get_basename() diff --git a/scripts/Tools/Managers/ComponentManager.gd b/scripts/Tools/Managers/ComponentManager.gd index 8aeb49c..607b239 100644 --- a/scripts/Tools/Managers/ComponentManager.gd +++ b/scripts/Tools/Managers/ComponentManager.gd @@ -1,3 +1,19 @@ class_name ComponentManager -var store = {} \ No newline at end of file +static var bullets = {} +static var characters = {} +static var effects = {} + +static func init(): + for i in DirTool.listdir("res://components/Bullets"): + bullets[DirTool.getBasenameWithoutExtension(i)] = load(i) + for i in DirTool.listdir("res://components/Characters"): + characters[DirTool.getBasenameWithoutExtension(i)] = load(i) + for i in DirTool.listdir("res://components/Effects"): + effects[DirTool.getBasenameWithoutExtension(i)] = load(i) +static func getBullet(name: String): + return bullets[name] +static func getCharacter(name: String): + return characters[name] +static func getEffect(name: String): + return effects[name] diff --git a/scripts/Tools/Managers/WorldManager.gd b/scripts/Tools/Managers/WorldManager.gd index 30d0526..c8b3609 100644 --- a/scripts/Tools/Managers/WorldManager.gd +++ b/scripts/Tools/Managers/WorldManager.gd @@ -8,6 +8,7 @@ static var runningTime: int = 0 func _ready(): tree = get_tree() rootNode = self + ComponentManager.init() func _physics_process(delta): runningTime += delta * 1000 if EntityBase.mobCount() == 0 and runningTime > 3000: