49 lines
1.7 KiB
Lua
Raw Permalink Normal View History

2025-01-04 23:00:19 +08:00
---@class BP_SpawnPickupWrapper_C:AActor
---@field Box UBoxComponent
---@field DefaultSceneRoot USceneComponent
---@field ItemID int32
---@field DelayTime float
--Edit Below--
---@type BP_SpawnPickupWrapper_C
local BP_SpawnPickupWrapper = {
WrapperClass = nil;
PickupWrapper = nil;
};
function BP_SpawnPickupWrapper:ReceiveBeginPlay()
self.SuperClass.ReceiveBeginPlay(self);
if not self:HasAuthority() then return end
self.WrapperClass = UE.LoadClass(UGCBackPackSystem.GetPickupWrapperClassPath(self.ItemID))
self:SpawnItem()
end
function BP_SpawnPickupWrapper:SpawnItem()
if UE.IsValid(self.WrapperClass) then
self.PickupWrapper = ScriptGameplayStatics.SpawnActor(UGCGameSystem.GameState, self.WrapperClass, self:K2_GetActorLocation(), self:K2_GetActorRotation(), VectorHelper.ScaleOne());
if self.PickupWrapper.UGC_PickUpWrapperDestroyDelegate then
self.PickupWrapper.UGC_PickUpWrapperDestroyDelegate:Add(self.DelaySpawnItem, self)
UGCLogSystem.Log("[BP_SpawnPickupWrapper_SpawnItem] SpawnSucceed")
else
UGCLogSystem.Log("[BP_SpawnPickupWrapper_SpawnItem] UGC_PickUpWrapperDestroyDelegate is nil")
end
else
UGCLogSystem.LogError("[BP_SpawnPickupWrapper_SpawnItem] WrapperClass is not Valid")
end
end
function BP_SpawnPickupWrapper:DelaySpawnItem()
if self.PickupWrapper.UGC_PickUpWrapperDestroyDelegate then
self.PickupWrapper.UGC_PickUpWrapperDestroyDelegate:Remove(self.DelaySpawnItem, self)
end
UGCEventSystem.SetTimer(self,
function()
self:SpawnItem()
end,
self.DelayTime
)
end
return BP_SpawnPickupWrapper;