diff --git a/prefab/packsacks/packsack.tscn b/prefab/packsacks/packsack.tscn
index 9520244..31b1f76 100644
--- a/prefab/packsacks/packsack.tscn
+++ b/prefab/packsacks/packsack.tscn
@@ -11,11 +11,6 @@ collision_layer = 8
collision_mask = 38
script = ExtResource("1_8ehup")
Id = "packsack"
-metadata/Id = "Packsack"
-metadata/MaxStackQuantity = 1
-metadata/Icon = ExtResource("2_e1ale")
-metadata/Name = "packsack"
-metadata/Description = "packsack_desc"
[node name="Player" type="Sprite2D" parent="."]
texture = ExtResource("2_e1ale")
diff --git a/prefab/weapons/staffOfTheUndead.tscn b/prefab/weapons/staffOfTheUndead.tscn
index 6bd0176..d4732bf 100644
--- a/prefab/weapons/staffOfTheUndead.tscn
+++ b/prefab/weapons/staffOfTheUndead.tscn
@@ -2,7 +2,7 @@
[ext_resource type="Texture2D" uid="uid://e6670ykyq145" path="res://sprites/weapon/staffOfTheUndead.png" id="1_ms3us"]
[ext_resource type="Script" path="res://scripts/item/weapon/ProjectileWeapon.cs" id="1_w8hhv"]
-[ext_resource type="Texture2D" uid="uid://b2blj0yf4ohx3" path="res://icon.svg" id="2_l5lni"]
+[ext_resource type="PackedScene" uid="uid://c01av43yk1q71" path="res://prefab/projectile/curseOfTheUndead.tscn" id="2_34250"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_obcq2"]
size = Vector2(49, 5)
@@ -14,14 +14,9 @@ size = Vector2(49, 5.25)
collision_layer = 8
collision_mask = 34
script = ExtResource("1_w8hhv")
+ProjectileScenes = [ExtResource("2_34250")]
Id = "staff_of_the_undead"
metadata/Projectiles = PackedStringArray("res://prefab/projectile/curseOfTheUndead.tscn")
-metadata/Name = "staff_of_the_undead"
-metadata/FiringIntervalArray = PackedInt64Array(5000, 500, 250)
-metadata/Icon = ExtResource("2_l5lni")
-metadata/ID = "StaffOfTheUndead"
-metadata/MaxStackQuantity = 1
-metadata/Description = "staff_of_the_undead_desc"
[node name="DamageArea2D" type="Area2D" parent="."]
collision_layer = 8
diff --git a/scripts/item/weapon/ProjectileWeapon.cs b/scripts/item/weapon/ProjectileWeapon.cs
index afbd3f9..323caa2 100644
--- a/scripts/item/weapon/ProjectileWeapon.cs
+++ b/scripts/item/weapon/ProjectileWeapon.cs
@@ -24,31 +24,35 @@ public partial class ProjectileWeapon : WeaponTemplate
///
private Marker2D? _marker2D;
- ///
- /// List of projectiles
- /// 抛射体列表
- ///
- private string[]? _projectiles;
+ // ///
+ // /// List of projectiles
+ // /// 抛射体列表
+ // ///
+ // private string[]? _projectiles;
+ //
+ // private Dictionary? _projectileCache;
+
+ [Export] protected PackedScene[] ProjectileScenes { get; set; } = [];
- private Dictionary? _projectileCache;
private Node2D? _projectileContainer;
public override void _Ready()
{
base._Ready();
_marker2D = GetNode("Marker2D");
- _projectileCache = new Dictionary();
- _projectiles = GetMeta("Projectiles", "").AsStringArray();
- foreach (var projectileItem in _projectiles)
- {
- var packedScene = GD.Load(projectileItem);
- if (packedScene == null)
- {
- continue;
- }
- _projectileCache.Add(projectileItem, packedScene);
- }
+ // _projectileCache = new Dictionary();
+ // _projectiles = GetMeta("Projectiles", "").AsStringArray();
+ // foreach (var projectileItem in _projectiles)
+ // {
+ // var packedScene = GD.Load(projectileItem);
+ // if (packedScene == null)
+ // {
+ // continue;
+ // }
+ //
+ // _projectileCache.Add(projectileItem, packedScene);
+ // }
_projectileContainer = GetNode("/root/Game/ProjectileContainer") as Node2D;
}
@@ -56,13 +60,10 @@ public partial class ProjectileWeapon : WeaponTemplate
protected override void DoFire(Node2D? owner, Vector2 enemyGlobalPosition)
{
- if (_projectileCache == null || _projectiles == null || owner == null || _projectileContainer == null ||
- _marker2D == null)
- {
- return;
- }
+ if (owner == null || _projectileContainer == null || _marker2D == null) return;
- if (_projectiles.IsEmpty())
+ //空列表检查
+ if (ProjectileScenes is [])
{
LogCat.LogError("projectiles_is_empty");
return;
@@ -70,7 +71,8 @@ public partial class ProjectileWeapon : WeaponTemplate
//Get the first projectile
//获取第一个抛射体
- var projectileScene = _projectileCache[_projectiles[0]];
+ var projectileScene = ProjectileScenes[0];
+ // var projectileScene = _projectileCache[_projectiles[0]];
var projectile = NodeUtils.InstantiatePackedScene(projectileScene, _projectileContainer);
if (projectile == null) return;
projectile.Owner = owner;