Merge branch 'main' of http://47.102.46.119:3000/ugc/UGCProjects
This commit is contained in:
commit
150f1d59e4
@ -153,16 +153,20 @@ function UGCSystemLibrary.AsyncLoadAsset(AssetPath, CallBackFunc, Obj, SaveAsset
|
||||
end
|
||||
end
|
||||
|
||||
---@param AssetPath:string
|
||||
---@param SaveAsset:bool 是否保存
|
||||
function UGCSystemLibrary.LoadAsset(AssetPath, SaveAsset)
|
||||
if SaveAsset == nil then SaveAsset = true end
|
||||
if not UE.IsValid(UGCSystemLibrary.CacheAsset[AssetPath]) then
|
||||
local TargetAsset = UE.LoadObject(AssetPath)
|
||||
if SaveAsset and UE.IsValid(TargetAsset) then UGCSystemLibrary.CacheAsset[AssetPath] = TargetAsset end
|
||||
return TargetAsset
|
||||
--- 通过路径获取DataTable
|
||||
---@param DataTablePath string
|
||||
---@param ToNumberKey bool 是否将Key值转化为Number类型再返回
|
||||
function UGCSystemLibrary.GetDataTableFromPath(DataTablePath, ToNumberKey)
|
||||
local ResDataTable = Gameplay.GetTable(DataTablePath)
|
||||
|
||||
if ToNumberKey then
|
||||
local Res = {}
|
||||
for i, v in pairs(ResDataTable) do
|
||||
Res[tonumber(i)] = v
|
||||
end
|
||||
return Res
|
||||
else
|
||||
return UGCSystemLibrary.CacheAsset[AssetPath]
|
||||
return ResDataTable
|
||||
end
|
||||
end
|
||||
|
||||
|
Binary file not shown.
@ -14,7 +14,7 @@ DefaultLevelDirectorPath=/Asset/Blueprint/UGCLevelDirector.UGCLevelDirector_C
|
||||
|
||||
[MatchSetting]
|
||||
NumberOfTeams=2
|
||||
TeamPlayers=4
|
||||
TeamPlayers=2
|
||||
bEnableChat=1
|
||||
bEnableRoomChat=1
|
||||
ChannelName=全部
|
||||
@ -53,18 +53,18 @@ SwitchesInMaps=((Key="r.Mobile.EnableIBL",Value=0),(Key="s.StreamableDelegateLim
|
||||
PlayBindingArray=[]
|
||||
|
||||
[JobOption]
|
||||
LastJobId=600043001
|
||||
LastWindowsJobId=600039234
|
||||
LastAndroidJobId=600039234
|
||||
LastIOSJobId=600039234
|
||||
PakOnly=1
|
||||
LastSkipBake=True
|
||||
LastTargetPlatform=LinuxServer+Android_ETC2
|
||||
LastJobId=-1
|
||||
LastWindowsJobId=-1
|
||||
LastAndroidJobId=-1
|
||||
LastIOSJobId=-1
|
||||
PakOnly=0
|
||||
LastSkipBake=False
|
||||
LastTargetPlatform=LinuxServer
|
||||
|
||||
[UGCUploadOption]
|
||||
PlatformIndex=0
|
||||
SkipBake=True
|
||||
TargetPlatform=LinuxServer+WindowsNoEditor+Android_ETC2+IOS+OpenHarmony_ETC2
|
||||
TargetPlatform=LinuxServer+Android_ETC2
|
||||
|
||||
[DebugSettings]
|
||||
bRoomOB=0
|
||||
|
@ -153,6 +153,22 @@ function UGCSystemLibrary.AsyncLoadAsset(AssetPath, CallBackFunc, Obj, SaveAsset
|
||||
end
|
||||
end
|
||||
|
||||
--- 通过路径获取DataTable
|
||||
---@param DataTablePath string
|
||||
---@param ToNumberKey bool 是否将Key值转化为Number类型再返回
|
||||
function UGCSystemLibrary.GetDataTableFromPath(DataTablePath, ToNumberKey)
|
||||
local ResDataTable = Gameplay.GetTable(DataTablePath)
|
||||
|
||||
if ToNumberKey then
|
||||
local Res = {}
|
||||
for i, v in pairs(ResDataTable) do
|
||||
Res[tonumber(i)] = v
|
||||
end
|
||||
return Res
|
||||
else
|
||||
return ResDataTable
|
||||
end
|
||||
end
|
||||
---@param AssetPath:string
|
||||
---@param SaveAsset:bool 是否保存
|
||||
function UGCSystemLibrary.LoadAsset(AssetPath, SaveAsset)
|
||||
|
Binary file not shown.
Binary file not shown.
BIN
FX_Preview/Asset/FX/A_Table/EFXType.uasset
Normal file
BIN
FX_Preview/Asset/FX/A_Table/EFXType.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/A_Table/FFXData.uasset
Normal file
BIN
FX_Preview/Asset/FX/A_Table/FFXData.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/A_Table/Table_FXData.uasset
Normal file
BIN
FX_Preview/Asset/FX/A_Table/Table_FXData.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXMaterial/MAT_FX_Square_4.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXMaterial/MAT_FX_Square_4.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Glow_02.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Glow_02.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Noise_01.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Noise_01.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Noise_04.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Noise_04.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Noise_05.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Noise_05.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Noise_06.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Noise_06.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Noise_07.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Noise_07.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trail.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trail.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trail_02.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trail_02.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trail_03.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trail_03.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trail_04.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trail_04.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trail_05.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trail_05.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trail_07.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trail_07.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trails.uasset
Normal file
BIN
FX_Preview/Asset/FX/ArtBase/FXTexture/Trailing/T_Trails.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
FX_Preview/Asset/FX/BulletFX/Bullet1/P_Bullet_1_P.uasset
Normal file
BIN
FX_Preview/Asset/FX/BulletFX/Bullet1/P_Bullet_1_P.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
FX_Preview/Asset/FX/KillFX/ElectricBall/P_Kill_Boom_P.uasset
Normal file
BIN
FX_Preview/Asset/FX/KillFX/ElectricBall/P_Kill_Boom_P.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
FX_Preview/Asset/FX/TailedMuzzle/Type2/P_TailedMuzzle_2_P.uasset
Normal file
BIN
FX_Preview/Asset/FX/TailedMuzzle/Type2/P_TailedMuzzle_2_P.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
FX_Preview/Asset/FX/TailedMuzzle/Type7/P_TailedMuzzle_7.uasset
Normal file
BIN
FX_Preview/Asset/FX/TailedMuzzle/Type7/P_TailedMuzzle_7.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/TailedMuzzle/Type7/P_TailedMuzzle_7_P.uasset
Normal file
BIN
FX_Preview/Asset/FX/TailedMuzzle/Type7/P_TailedMuzzle_7_P.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_MGL_Ball_Inner01.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_MGL_Ball_Inner01.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_MGL_Ball_Outter01.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_MGL_Ball_Outter01.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_MGL_Shooting_01.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_MGL_Shooting_01.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Nitrog_min_01.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Nitrog_min_01.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_BNT_A_02.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_BNT_A_02.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_BNT_B_01.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_BNT_B_01.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_BNT_B_02.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_BNT_B_02.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_JGT_B_01.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_JGT_B_01.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_PT_A_01.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_PT_A_01.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_SBT_A_01.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_SBT_A_01.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_SDT_A_01.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_SDT_A_01.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_SDT_B_01.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_Turret_SDT_B_01.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_burst_01.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_burst_01.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_mofadan_01.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_mofadan_01.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_mofadan_02.uasset
Normal file
BIN
FX_Preview/Asset/FX/Z_ReferenceAssets/P_mofadan_02.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/UI/PreviewFX/WB_FX_Main.uasset
Normal file
BIN
FX_Preview/Asset/UI/PreviewFX/WB_FX_Main.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/UI/PreviewFX/WB_Item_FXType.uasset
Normal file
BIN
FX_Preview/Asset/UI/PreviewFX/WB_Item_FXType.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/UI/PreviewFX/WB_Item_Slide.uasset
Normal file
BIN
FX_Preview/Asset/UI/PreviewFX/WB_Item_Slide.uasset
Normal file
Binary file not shown.
BIN
FX_Preview/Asset/UI/PreviewFX/WB_PreviewFX.uasset
Normal file
BIN
FX_Preview/Asset/UI/PreviewFX/WB_PreviewFX.uasset
Normal file
Binary file not shown.
@ -1,20 +1,132 @@
|
||||
---@class BP_PreViewFXActor_C:AActor
|
||||
---@field DynamicTextRender UDynamicTextRenderComponent
|
||||
---@field DefaultSceneRoot USceneComponent
|
||||
---@field MuzzleParticle UParticleSystem
|
||||
---@field KillParticle UParticleSystem
|
||||
---@field BulletParticle UParticleSystem
|
||||
---@field TailedMuzzle UParticleSystem
|
||||
---@field HitParticle UParticleSystem
|
||||
---@field DefaultFX TMap:TEnumAsByte<EFXType>,UParticleSystem
|
||||
---@field KillParticleOffsetTF FTransform
|
||||
--Edit Below--
|
||||
local BP_PreViewFXActor = {}
|
||||
local BP_PreViewFXActor = {
|
||||
FXTable = {};
|
||||
FXIDList = {};
|
||||
OverrideColor = {};
|
||||
NowFXIndex = {};
|
||||
}
|
||||
|
||||
--[[
|
||||
|
||||
function BP_PreViewFXActor:ReceiveBeginPlay()
|
||||
BP_PreViewFXActor.SuperClass.ReceiveBeginPlay(self)
|
||||
|
||||
if UGCGameSystem.IsServer() then
|
||||
else
|
||||
--self.DefaultFX = {
|
||||
-- [EFXType.Muzzle] = self.MuzzleParticle;
|
||||
-- [EFXType.Kill] = self.KillParticle;
|
||||
-- [EFXType.Bullet] = self.BulletParticle;
|
||||
-- [EFXType.MuzzleTailed] = self.TailedMuzzle;
|
||||
-- [EFXType.Hit] = self.HitParticle;
|
||||
--}
|
||||
self:InitFXTable()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--[[
|
||||
FFXData
|
||||
ID int32
|
||||
FXType EFXType
|
||||
Rarity int32
|
||||
Name FString
|
||||
Desc FString
|
||||
Particle UParticleSystem
|
||||
ColorValue float[]
|
||||
BaseColor FLinearColor
|
||||
]]
|
||||
function BP_PreViewFXActor:InitFXTable()
|
||||
for i, v in pairs(EFXType) do
|
||||
self.FXIDList[v] = {}
|
||||
self.NowFXIndex[v] = 0
|
||||
end
|
||||
local ReadFXTable = UGCSystemLibrary.GetDataTableFromPath(UGCGameSystem.GetUGCResourcesFullPath('Asset/FX/A_Table/Table_FXData.Table_FXData'))
|
||||
self.FXTable = table.DeepCopy(ReadFXTable)
|
||||
for i, v in pairs(self.FXTable) do
|
||||
UGCLogSystem.Log("[BP_PreViewFXActor_LoadFXTable] Key:%s", tostring(i))
|
||||
table.insert(self.FXIDList[v.FXType], v.ID)
|
||||
end
|
||||
for i, v in pairs(self.FXIDList) do
|
||||
table.sort(self.FXIDList[i])
|
||||
end
|
||||
end
|
||||
|
||||
function BP_PreViewFXActor:GetParticleColor(FXType)
|
||||
return self.OverrideColor[FXType]
|
||||
end
|
||||
|
||||
function BP_PreViewFXActor:GetParticleDefaultColor(FXType)
|
||||
local FXIndex = self:GetNowFXIndex(FXType)
|
||||
local FXID = self.FXIDList[FXType][FXIndex]
|
||||
if FXID then
|
||||
return self.FXTable[FXID].BaseColor
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function BP_PreViewFXActor:GetColorValue(FXType)
|
||||
local FXIndex = self:GetNowFXIndex(FXType)
|
||||
local FXID = self.FXIDList[FXType][FXIndex]
|
||||
if FXID then
|
||||
return self.FXTable[FXID].ColorValue
|
||||
end
|
||||
return {}
|
||||
end
|
||||
|
||||
--- 覆盖对应特效的颜色
|
||||
---@param FXType EFXType
|
||||
---@param NewColor FLinearColor 为nil则重置为默认颜色
|
||||
function BP_PreViewFXActor:SetOverrideColor(FXType, NewColor)
|
||||
---@field SetColorParameter:fun(ParameterName:FName,param:FLinearColor)
|
||||
---@field SetVectorParameter:fun(ParameterName:FName,param:FVector)
|
||||
self.OverrideColor[FXType] = NewColor
|
||||
UGCEventSystem.SendEvent(EventEnum.OverrideFXColor, FXType, self.OverrideColor[FXType])
|
||||
end
|
||||
|
||||
|
||||
|
||||
function BP_PreViewFXActor:GetNowFXIndex(FXType)
|
||||
return self.NowFXIndex[FXType]
|
||||
end
|
||||
|
||||
function BP_PreViewFXActor:GetNowFXFromFXType(FXType)
|
||||
local FXIndex = self:GetNowFXIndex(FXType)
|
||||
local FXID = self.FXIDList[FXType][FXIndex]
|
||||
if FXID then
|
||||
return self.FXTable[FXID].Particle
|
||||
else
|
||||
return self.DefaultFX[FXType]
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function BP_PreViewFXActor:SetNextFX(FXType)
|
||||
if #self.FXIDList[FXType] > 0 then
|
||||
self.NowFXIndex[FXType] = (self.NowFXIndex[FXType] % #self.FXIDList[FXType]) + 1
|
||||
UGCEventSystem.SendEvent(EventEnum.ChangeFX, FXType)
|
||||
end
|
||||
end
|
||||
|
||||
function BP_PreViewFXActor:SetParticleCompColor(ParticleComp, FXType)
|
||||
if UE.IsValid(ParticleComp) then
|
||||
local ColorValue = self:GetColorValue(FXType)
|
||||
local Color = self:GetParticleColor(FXType)
|
||||
if Color == nil then
|
||||
Color = self:GetParticleDefaultColor(FXType)
|
||||
end
|
||||
for i, v in pairs(ColorValue) do
|
||||
local TempColor = table.DeepCopy(UE.ToTable(Color))
|
||||
local ColorVector = KismetMathLibrary.Conv_LinearColorToVector(TempColor)
|
||||
ColorVector = VectorHelper.MulNumber(ColorVector, v)
|
||||
ParticleComp:SetVectorParameter("Color" .. i, ColorVector)
|
||||
end
|
||||
end
|
||||
end
|
||||
--]]
|
||||
|
||||
--[[
|
||||
function BP_PreViewFXActor:ReceiveTick(DeltaTime)
|
||||
|
@ -27,13 +27,19 @@ end
|
||||
function UGCGameState:SpawnParticleAtPos(Pos)
|
||||
local TempPreViewActor = self:GetPreViewFXActor()
|
||||
if UE.IsValid(TempPreViewActor) then
|
||||
Pos = {
|
||||
X = Pos.X + TempPreViewActor.KillParticleOffsetTF.Translation.X,
|
||||
Y = Pos.Y + TempPreViewActor.KillParticleOffsetTF.Translation.Y,
|
||||
Z = Pos.Z + TempPreViewActor.KillParticleOffsetTF.Translation.Z,
|
||||
}
|
||||
local FXScale = {X = TempPreViewActor.KillParticleOffsetTF.Scale3D.X, Y = TempPreViewActor.KillParticleOffsetTF.Scale3D.Y, Z = TempPreViewActor.KillParticleOffsetTF.Scale3D.Z}
|
||||
GameplayStatics.SpawnEmitterAtLocation(self, TempPreViewActor.KillParticle, Pos, {Roll = 0, Pitch = 0, Yaw = 0}, FXScale, true)
|
||||
local KillParticle = TempPreViewActor:GetNowFXFromFXType(EFXType.Kill)
|
||||
if UE.IsValid(KillParticle) then
|
||||
Pos = {
|
||||
X = Pos.X + TempPreViewActor.KillParticleOffsetTF.Translation.X,
|
||||
Y = Pos.Y + TempPreViewActor.KillParticleOffsetTF.Translation.Y,
|
||||
Z = Pos.Z + TempPreViewActor.KillParticleOffsetTF.Translation.Z,
|
||||
}
|
||||
local FXScale = {X = TempPreViewActor.KillParticleOffsetTF.Scale3D.X, Y = TempPreViewActor.KillParticleOffsetTF.Scale3D.Y, Z = TempPreViewActor.KillParticleOffsetTF.Scale3D.Z}
|
||||
local KillParticleComp = GameplayStatics.SpawnEmitterAtLocation(self, KillParticle, Pos, {Roll = 0, Pitch = 0, Yaw = 0}, FXScale, true)
|
||||
|
||||
-- 设置颜色
|
||||
TempPreViewActor:SetParticleCompColor(KillParticleComp, EFXType.Kill)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
40
FX_Preview/Script/Blueprint/UGCPlayerController.lua
Normal file
40
FX_Preview/Script/Blueprint/UGCPlayerController.lua
Normal file
@ -0,0 +1,40 @@
|
||||
---@class UGCPlayerController_C:BP_UGCPlayerController_C
|
||||
--Edit Below--
|
||||
local UGCPlayerController = {}
|
||||
|
||||
|
||||
function UGCPlayerController:ReceiveBeginPlay()
|
||||
UGCPlayerController.SuperClass.ReceiveBeginPlay(self)
|
||||
if UGCGameSystem.IsServer() then
|
||||
else
|
||||
local PreviewFxWidget = UserWidget.NewWidgetObjectBP(self, UE.LoadClass(UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/PreviewFX/WB_FX_Main.WB_FX_Main_C')));
|
||||
PreviewFxWidget:AddToViewport(20000)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--[[
|
||||
function UGCPlayerController:ReceiveTick(DeltaTime)
|
||||
UGCPlayerController.SuperClass.ReceiveTick(self, DeltaTime)
|
||||
end
|
||||
--]]
|
||||
|
||||
--[[
|
||||
function UGCPlayerController:ReceiveEndPlay()
|
||||
UGCPlayerController.SuperClass.ReceiveEndPlay(self)
|
||||
end
|
||||
--]]
|
||||
|
||||
--[[
|
||||
function UGCPlayerController:GetReplicatedProperties()
|
||||
return
|
||||
end
|
||||
--]]
|
||||
|
||||
--[[
|
||||
function UGCPlayerController:GetAvailableServerRPCs()
|
||||
return
|
||||
end
|
||||
--]]
|
||||
|
||||
return UGCPlayerController
|
@ -31,10 +31,15 @@ function UGCPlayerPawn:ReceiveBeginPlay()
|
||||
if not UGCGameSystem.IsServer() and self.CheckFXHandle == nil then
|
||||
-- 这里防止未设置成功做的校验
|
||||
self.CheckFXHandle = UGCEventSystem.SetTimerLoop(self, self.UpdateFX, 2)
|
||||
-- 绑定粒子颜色改变的函数
|
||||
UGCEventSystem.AddListener(EventEnum.OverrideFXColor, self.OverrideFXColor, self)
|
||||
-- 绑定粒子改变
|
||||
UGCEventSystem.AddListener(EventEnum.ChangeFX, self.ChangeFX, self)
|
||||
|
||||
end
|
||||
|
||||
local TempRescueOtherComp = self:GetCharacterRescueOtherComponent()
|
||||
local TempPreViewActor = UGCGameSystem.GameState:GetPreViewFXActor()
|
||||
|
||||
|
||||
if UE.IsValid(TempRescueOtherComp) and UE.IsValid(TempPreViewActor) then
|
||||
-- 配置倒地粒子 没有用这个方法
|
||||
@ -89,8 +94,33 @@ function UGCPlayerPawn:OnPostGetWeapon(Weapon)
|
||||
self:WeaponAttachEffect(Weapon)
|
||||
end
|
||||
|
||||
-- 覆盖拖尾特效的颜色
|
||||
function UGCPlayerPawn:OverrideFXColor(FXType)
|
||||
--UGCLogSystem.Log("[UGCPlayerPawn_OverrideFXColor] FXType:%s", tostring(FXType))
|
||||
if FXType ~= EFXType.MuzzleTailed then return end
|
||||
if not UE.IsValid(self.MuzzleTailedParticleComp) then return end
|
||||
|
||||
|
||||
local TempPreViewActor = UGCGameSystem.GameState:GetPreViewFXActor()
|
||||
if UE.IsValid(TempPreViewActor) then
|
||||
TempPreViewActor:SetParticleCompColor(self.MuzzleTailedParticleComp, EFXType.MuzzleTailed)
|
||||
end
|
||||
end
|
||||
|
||||
-- 替换FX
|
||||
function UGCPlayerPawn:ChangeFX(FXType)
|
||||
UGCLogSystem.Log("[UGCPlayerPawn_ChangeFX] FXType:%s", tostring(FXType))
|
||||
if FXType ~= EFXType.MuzzleTailed then return end
|
||||
if not UE.IsValid(self.MuzzleTailedParticleComp) then return end
|
||||
local TempPreViewActor = UGCGameSystem.GameState:GetPreViewFXActor()
|
||||
if UE.IsValid(TempPreViewActor) then
|
||||
local Particle = TempPreViewActor:GetNowFXFromFXType(FXType)
|
||||
self.MuzzleTailedParticleComp:SetTemplate(Particle)
|
||||
self:OverrideFXColor(EFXType.MuzzleTailed)
|
||||
UGCLogSystem.Log("[UGCPlayerPawn_ChangeFX] Succeed")
|
||||
end
|
||||
end
|
||||
|
||||
UGCPlayerPawn.BoundOnceEffectWeapons = {}
|
||||
function UGCPlayerPawn:UpdateFX()
|
||||
UGCLogSystem.Log("[UGCPlayerPawn_UpdateFX] PawnName:%s", KismetSystemLibrary.GetObjectName(self))
|
||||
@ -104,6 +134,7 @@ function UGCPlayerPawn:UpdateFX()
|
||||
end
|
||||
|
||||
function UGCPlayerPawn:WeaponAttachEffect(Weapon)
|
||||
if UGCGameSystem.IsServer() then return end
|
||||
local TempPreViewActor = UGCGameSystem.GameState:GetPreViewFXActor()
|
||||
if UE.IsValid(TempPreViewActor) then
|
||||
if UE.IsValid(Weapon) then
|
||||
@ -116,9 +147,10 @@ function UGCPlayerPawn:WeaponAttachEffect(Weapon)
|
||||
--"RemoteMuzzleFX",
|
||||
--"ScopeMuzzleFX",
|
||||
}
|
||||
if UE.IsValid(Effect) and UE.IsValid(TempPreViewActor.MuzzleParticle) then
|
||||
local MuzzleParticle = TempPreViewActor:GetNowFXFromFXType(EFXType.Muzzle)
|
||||
if UE.IsValid(Effect) and UE.IsValid(MuzzleParticle) then
|
||||
for i, v in pairs(MuzzleFXParamName) do
|
||||
Effect[v] = TempPreViewActor.MuzzleParticle
|
||||
Effect[v] = MuzzleParticle
|
||||
end
|
||||
UGCLogSystem.Log("[UGCPlayerPawn_WeaponAttachEffect] Succeed")
|
||||
end
|
||||
@ -134,17 +166,19 @@ function UGCPlayerPawn:WeaponAttachEffect(Weapon)
|
||||
|
||||
|
||||
-- 枪口拖尾特效
|
||||
if UE.IsValid(TempPreViewActor.TailedMuzzle) then
|
||||
local MuzzleTailedParticle = TempPreViewActor:GetNowFXFromFXType(EFXType.MuzzleTailed)
|
||||
if UE.IsValid(MuzzleTailedParticle) then
|
||||
UGCLogSystem.Log("[UGCPlayerPawn_WeaponAttachEffect] 11111111111111111111111111")
|
||||
if UE.IsValid(SKMesh) then
|
||||
UGCLogSystem.Log("[UGCPlayerPawn_WeaponAttachEffect] 22222222222222222222222222222")
|
||||
UGCLogSystem.Log("[UGCPlayerPawn_WeaponAttachEffect] Bind TailedMuzzle")
|
||||
self.BoundOnceEffectWeapons[#self.BoundOnceEffectWeapons + 1] = Weapon
|
||||
GameplayStatics.SpawnEmitterAttached(TempPreViewActor.TailedMuzzle, SKMesh, "MuzzleEffect", {X=0,Y=0,Z=0}, {Roll = 0, Pitch = 0, Yaw = 0}, {X=1,Y=1,Z=1}, EAttachLocation.SnapToTarget, true)
|
||||
self.MuzzleTailedParticleComp = GameplayStatics.SpawnEmitterAttached(MuzzleTailedParticle, SKMesh, "MuzzleEffect", {X=0,Y=0,Z=0}, {Roll = 0, Pitch = 0, Yaw = 0}, {X=1,Y=1,Z=1}, EAttachLocation.SnapToTarget, true)
|
||||
self:OverrideFXColor(EFXType.MuzzleTailed)
|
||||
end
|
||||
end
|
||||
-- 子弹拖尾特效
|
||||
if TempPreViewActor.BulletParticle then
|
||||
if TempPreViewActor:GetNowFXFromFXType(EFXType.Bullet) then
|
||||
Weapon.OnBulletBeforeShootDelegate:Add(self.BindBulletTailFX, self)
|
||||
end
|
||||
end
|
||||
@ -160,23 +194,11 @@ function UGCPlayerPawn:BindBulletTailFX(Bullet)
|
||||
local TempPreViewActor = UGCGameSystem.GameState:GetPreViewFXActor()
|
||||
if UE.IsValid(TempPreViewActor) then
|
||||
if UE.IsValid(Bullet) then
|
||||
|
||||
-- GameplayStatics.SpawnEmitterAttached(TempPreViewActor.BulletParticle, Bullet:K2_GetRootComponent(), "", {X=0,Y=0,Z=0}, {Roll = 0, Pitch = 0, Yaw = 0}, {X=1,Y=1,Z=1}, EAttachLocation.SnapToTarget, true)
|
||||
|
||||
local BulletTailFXActor = UGCGameSystem.GameState:GetBulletFXActor()
|
||||
--BulletTailFXActor.ProjectileMovement.InitialSpeed = InitialSpeed
|
||||
--BulletTailFXActor.ProjectileMovement.Velocity = VectorHelper.MulNumber(Bullet:GetActorForwardVector(), InitialSpeed)
|
||||
local InitialSpeed = Bullet:GetMaxBulletFlySpeed()
|
||||
local Velocity = VectorHelper.MulNumber(Bullet:GetActorForwardVector(), InitialSpeed)
|
||||
BulletTailFXActor:ActiveFly(Bullet:K2_GetActorRotation(), Bullet:K2_GetActorLocation(), Velocity, TempPreViewActor.BulletParticle)
|
||||
BulletTailFXActor:ActiveFly(Bullet:K2_GetActorRotation(), Bullet:K2_GetActorLocation(), Velocity, TempPreViewActor:GetNowFXFromFXType(EFXType.Bullet))
|
||||
UGCLogSystem.Log("[UGCPlayerPawn_BindBulletTailFX] InitialSpeed:%s", tostring(InitialSpeed))
|
||||
--Bullet.NormalTailFX = TempPreViewActor.BulletParticle
|
||||
--Bullet.BeamTailFX = TempPreViewActor.BulletParticle
|
||||
--
|
||||
--Bullet.NormalTailFXComp:SetTemplate(TempPreViewActor.BulletParticle)
|
||||
--Bullet.BeamTailFXComp:SetTemplate(TempPreViewActor.BulletParticle)
|
||||
--
|
||||
--Bullet.bShowNormalTailFXImpactInfo = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -2,3 +2,13 @@
|
||||
|
||||
-- sorted by enum name asc
|
||||
|
||||
---@enum EFXType
|
||||
EFXType = {
|
||||
Muzzle = 0,
|
||||
Kill = 1,
|
||||
Bullet = 2,
|
||||
MuzzleTailed = 3,
|
||||
Hit = 4,
|
||||
};
|
||||
|
||||
|
||||
|
14
FX_Preview/Script/Common/ue_struct_custom.lua
Normal file
14
FX_Preview/Script/Common/ue_struct_custom.lua
Normal file
@ -0,0 +1,14 @@
|
||||
-- auto exported UStruct while compiling
|
||||
|
||||
-- sorted by struct name asc
|
||||
|
||||
---@class FFXData
|
||||
---@field ID int32
|
||||
---@field FXType EFXType
|
||||
---@field Rarity int32
|
||||
---@field Name FString
|
||||
---@field Desc FString
|
||||
---@field Particle UParticleSystem
|
||||
---@field ColorValue float[]
|
||||
---@field BaseColor FLinearColor
|
||||
|
@ -56,6 +56,11 @@ function BP_BulletTailFX:ActiveFly(Rot, Pos, Velocity, ParticleSystemTemplate)
|
||||
end
|
||||
self.BulletFXComp:SetActive(true, true)
|
||||
|
||||
local TempPreViewActor = UGCGameSystem.GameState:GetPreViewFXActor()
|
||||
if UE.IsValid(TempPreViewActor) then
|
||||
TempPreViewActor:SetParticleCompColor(self.BulletFXComp, EFXType.Bullet)
|
||||
end
|
||||
|
||||
self.ProjectileMovement.Velocity = Velocity
|
||||
|
||||
self.BulletFXComp:SetHiddenInGame(false, true);
|
||||
|
@ -1,56 +1,14 @@
|
||||
NowEventID = 0;
|
||||
function GetNewEventID()
|
||||
NowEventID = NowEventID + 1
|
||||
return NowEventID
|
||||
end
|
||||
|
||||
EventEnum = {
|
||||
|
||||
-- DefaultEvent
|
||||
DSStartUp = 1001, -- 服务器启动
|
||||
PlayerLogin = 1003, -- 玩家加入房间 PlayerKey
|
||||
PlayerExit = 1004, -- 玩家离开房间 PlayerKey
|
||||
|
||||
-- GameState
|
||||
GameStateChange = 2001, -- 游戏模式改变 CustomEnum.EGameState
|
||||
WaitPlayerJoin = 2002, -- 等待玩家加入
|
||||
GamePlay = 2003, -- 游戏开始
|
||||
GameEnd = 2004, -- 游戏结束
|
||||
RoundBegining = 2005, -- 回合开始
|
||||
RoundEnd = 2006, -- 回合结束
|
||||
RoundReadyFinish = 2007, -- 回合准备阶段结束
|
||||
|
||||
-- PlayerEvent
|
||||
PlayerDeathInfo = 3001, -- 死亡信息 VictimKey, CauserKey, WeaponID, DamageType, IsHeadShotDamage, Distance, DamageValue uint, uint, int, int, bool, float, float
|
||||
PlayerInjuryInfo = 3002, -- 受伤信息 VictimKey, CauserKey, WeaponID, DamageType, IsHeadShotDamage, Distance, DamageValue uint, uint, int, int, bool, float, float
|
||||
PlayerPossessed = 3003, -- 玩家受控 PlayerKey
|
||||
PlayerBeginPlay = 3004, -- 玩家受控 PlayerPawn
|
||||
BulletHitCallBack = 3005, -- 玩家射出的子弹命中物体或玩家的回调 (PlayerPawn:UGCPlayerPawn, ShootWeapon:ASTExtraShootWeapon,Bullet:ASTExtraShootWeaponBulletBase,HitInfo:FHitResult)
|
||||
PlayerTeamChange = 3006, -- 玩家的队伍改变 PC, TeamID
|
||||
|
||||
-- PlayerPawn同步参数更新 更新传入Pawn及其同步变量值
|
||||
UpdateCanObtainIncreaseCount = 4001,
|
||||
UpdateNowCanSelectIncrease = 4002,
|
||||
UpdateOwnedIncrease = 4003,
|
||||
UpdateToGodSchedule = 4004,
|
||||
|
||||
-- PlayerEvent End
|
||||
|
||||
|
||||
UpdatePlayerStartList = 10001, -- 通知出生点控制器进行更新出生点指针
|
||||
AchievementSettlement = 10002, -- 成就事件游戏结算
|
||||
UpdateTeamScore = 10003, -- 队伍得分信息更新
|
||||
UpdatePlayerScoreData = 10004, -- 玩家得分信息更新 通过UGCGameSystem.GameState.PlayerScoreDatas 获取玩家得分信息
|
||||
AddTip = 10005, -- 添加提提示 TipStr TipType
|
||||
GameWillBegin = 10006, -- 游戏即将开始
|
||||
PlayerIsAliveIsChange = 10007, -- 玩家存活列表改变
|
||||
UpdatePlayerInfo = 10008, -- 玩家个人信息更新
|
||||
|
||||
PlayerWeaponCombinationUpdate = 11001, -- 玩家可选的武器配置列表更新 [PlayerKey] = CombinationType
|
||||
PlayerSelectedWeaponIndexUpdate = 11002, -- 玩家选择的武器配置索引更新 [PlayerKey] = Index
|
||||
|
||||
|
||||
--- SelectMap
|
||||
LoadMap = 20001, -- 关卡加载 MapConifg.MapType
|
||||
SelectMapCallBack = 20002, -- 地图选择服务器的回调 bSucceed, MapType
|
||||
SelectDefaultWeaponCallBack = 20003, -- 默认武器选择回调 bSucceed, WeaponID
|
||||
RandomSelectVoteMap = 20004,
|
||||
UpdateMapKey = 20005, -- 随机出的地图索引 MapKey
|
||||
|
||||
|
||||
PlayerDeathInfo = GetNewEventID(), -- 死亡信息 VictimKey, CauserKey, WeaponID, DamageType, IsHeadShotDamage, Distance, DamageValue uint, uint, int, int, bool, float, float
|
||||
PlayerInjuryInfo = GetNewEventID(), -- 受伤信息 VictimKey, CauserKey, WeaponID, DamageType, IsHeadShotDamage, Distance, DamageValue uint, uint, int, int, bool, float, float
|
||||
|
||||
ChangeFX = GetNewEventID(), -- 切换特效 传入EFXType
|
||||
OverrideFXColor = GetNewEventID(), -- 切换特效颜色 传入EFXType
|
||||
}
|
@ -14,3 +14,4 @@ require(Prefix .. 'UGCSendRPCSystem')
|
||||
require(Prefix .. 'PlayerScoreSystem')
|
||||
require(Prefix .. 'MyVehicleSystem')
|
||||
require(Prefix .. 'MyWeaponSystem')
|
||||
require(Prefix .. 'WidgetLibrary')
|
@ -153,6 +153,23 @@ function UGCSystemLibrary.AsyncLoadAsset(AssetPath, CallBackFunc, Obj, SaveAsset
|
||||
end
|
||||
end
|
||||
|
||||
--- 通过路径获取DataTable
|
||||
---@param DataTablePath string
|
||||
---@param ToNumberKey bool 是否将Key值转化为Number类型再返回
|
||||
function UGCSystemLibrary.GetDataTableFromPath(DataTablePath, ToNumberKey)
|
||||
local ResDataTable = Gameplay.GetTable(DataTablePath)
|
||||
|
||||
if ToNumberKey then
|
||||
local Res = {}
|
||||
for i, v in pairs(ResDataTable) do
|
||||
Res[tonumber(i)] = v
|
||||
end
|
||||
return Res
|
||||
else
|
||||
return ResDataTable
|
||||
end
|
||||
end
|
||||
|
||||
---@param AssetPath:string
|
||||
---@param SaveAsset:bool 是否保存
|
||||
function UGCSystemLibrary.LoadAsset(AssetPath, SaveAsset)
|
||||
@ -166,6 +183,7 @@ function UGCSystemLibrary.LoadAsset(AssetPath, SaveAsset)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--- 通过ItemID获取item类型
|
||||
---@param ItemID int
|
||||
---@return ItemTypeID int
|
||||
|
52
FX_Preview/Script/Global/System/WidgetLibrary.lua
Normal file
52
FX_Preview/Script/Global/System/WidgetLibrary.lua
Normal file
@ -0,0 +1,52 @@
|
||||
WidgetLibrary = WidgetLibrary or {}
|
||||
|
||||
|
||||
--- 设置
|
||||
---@param widget UUserWidget
|
||||
---@param offset float
|
||||
function WidgetLibrary.SetWidgetToRightBorder(widget, offset)
|
||||
if not widget then return end
|
||||
local slot = WidgetLayoutLibrary.SlotAsCanvasSlot(widget)
|
||||
slot:SetAnchors({ Minimum = { X = 1, Y = 0 }, Maximum = { X = 1, Y = 0 } })
|
||||
slot:SetAlignment({ X = 1, Y = 0 })
|
||||
local offsets = slot:GetOffsets()
|
||||
slot:SetOffsets({ Left = offset, Right = offsets.Right, Bottom = offsets.Bottom, Top = offsets.Top })
|
||||
end
|
||||
|
||||
--- 为防止被清除做出的全局处理
|
||||
function WidgetLibrary.BindButtonClicked(TargetButton, Func, Obj)
|
||||
TargetButton.OnClicked:Add(Func, Obj)
|
||||
end
|
||||
|
||||
--- 为防止被清除做出的全局处理
|
||||
function WidgetLibrary.BindButtonPressed(TargetButton, Func, Obj)
|
||||
TargetButton.OnPressed:Add(Func, Obj)
|
||||
end
|
||||
|
||||
--- 为防止被清除做出的全局处理
|
||||
function WidgetLibrary.BindButtonReleased(TargetButton, Func, Obj)
|
||||
TargetButton.OnReleased:Add(Func, Obj)
|
||||
end
|
||||
|
||||
--- 绑定UI文本
|
||||
function WidgetLibrary.TextBlockBindingPropertyText(TargetTextBlock, Func, Obj)
|
||||
TargetTextBlock:BindingProperty("Text", Func, Obj)
|
||||
end
|
||||
|
||||
--- 直接绑定按键点击打开WidgetManager的页面
|
||||
function WidgetLibrary.ButtonOnClickShowPanel(TargetButton, UIType, IsClose)
|
||||
TargetButton.OnClicked:Add(
|
||||
function()
|
||||
if IsClose then
|
||||
WidgetManager:ClosePanel(UIType)
|
||||
else
|
||||
WidgetManager:ShowPanel(UIType, false)
|
||||
end
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
function WidgetLibrary.SliderOnValueChanged(Slider, Func, Obj)
|
||||
Slider.OnValueChanged:Add(Func, Obj)
|
||||
end
|
||||
|
26
FX_Preview/Script/UI/PreviewFX/WB_FX_Main.lua
Normal file
26
FX_Preview/Script/UI/PreviewFX/WB_FX_Main.lua
Normal file
@ -0,0 +1,26 @@
|
||||
---@class WB_FX_Main_C:UUserWidget
|
||||
---@field NewButton_ShowPanel UNewButton
|
||||
---@field REINST_WB_PreviewFX_C_0 UWB_PreviewFX_C
|
||||
---@field WB_PreviewFX UWB_PreviewFX_C
|
||||
--Edit Below--
|
||||
local WB_FX_Main = { bInitDoOnce = false }
|
||||
|
||||
|
||||
function WB_FX_Main:Construct()
|
||||
self.WB_PreviewFX:LuaInit()
|
||||
WidgetLibrary.BindButtonClicked(self.NewButton_ShowPanel, self.ShowPreviewFXPanel, self)
|
||||
end
|
||||
|
||||
function WB_FX_Main:ShowPreviewFXPanel()
|
||||
self.WB_PreviewFX:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
|
||||
end
|
||||
|
||||
-- function WB_FX_Main:Tick(MyGeometry, InDeltaTime)
|
||||
|
||||
-- end
|
||||
|
||||
-- function WB_FX_Main:Destruct()
|
||||
|
||||
-- end
|
||||
|
||||
return WB_FX_Main
|
102
FX_Preview/Script/UI/PreviewFX/WB_Item_FXType.lua
Normal file
102
FX_Preview/Script/UI/PreviewFX/WB_Item_FXType.lua
Normal file
@ -0,0 +1,102 @@
|
||||
---@class WB_Item_FXType_C:UUserWidget
|
||||
---@field NewButton_BindColor UNewButton
|
||||
---@field NewButton_Change UNewButton
|
||||
---@field NewButton_ResetColor UNewButton
|
||||
---@field TextBlock_TypeName UTextBlock
|
||||
---@field WidgetSwitcher_BindColor UWidgetSwitcher
|
||||
---@field Setting_PickUp_BP USetting_Pickup_UIBP_C
|
||||
--Edit Below--
|
||||
local WB_Item_FXType = {
|
||||
bInitDoOnce = false;
|
||||
IsBind = false
|
||||
}
|
||||
|
||||
--[==[ Construct
|
||||
function WB_Item_FXType:Construct()
|
||||
|
||||
end
|
||||
-- Construct ]==]
|
||||
|
||||
-- function WB_Item_FXType:Tick(MyGeometry, InDeltaTime)
|
||||
|
||||
-- end
|
||||
|
||||
-- function WB_Item_FXType:Destruct()
|
||||
|
||||
-- end
|
||||
|
||||
function WB_Item_FXType:LuaInit()
|
||||
if self.bInitDoOnce then return end self.bInitDoOnce = true
|
||||
|
||||
WidgetLibrary.BindButtonClicked(self.NewButton_ResetColor, self.ResetColor, self)
|
||||
WidgetLibrary.BindButtonClicked(self.NewButton_Change, self.NextFx, self)
|
||||
WidgetLibrary.BindButtonClicked(self.NewButton_BindColor, self.ChangeBindColor, self)
|
||||
|
||||
end
|
||||
|
||||
FXTypeName = {
|
||||
[EFXType.Muzzle] = "枪口火焰",
|
||||
[EFXType.MuzzleTailed] = "枪口拖尾",
|
||||
[EFXType.Kill] = "击杀效果",
|
||||
[EFXType.Bullet] = "弹道",
|
||||
[EFXType.Hit] = "命中效果",
|
||||
}
|
||||
function WB_Item_FXType:SetType(InType)
|
||||
self:LuaInit()
|
||||
self.FXType = InType
|
||||
if FXTypeName[self.FXType] then
|
||||
self.TextBlock_TypeName:SetText(FXTypeName[self.FXType])
|
||||
end
|
||||
end
|
||||
|
||||
function WB_Item_FXType:GetFXType()
|
||||
return self.FXType
|
||||
end
|
||||
|
||||
function WB_Item_FXType:ResetColor()
|
||||
local TempPreViewActor = UGCGameSystem.GameState:GetPreViewFXActor()
|
||||
if UE.IsValid(TempPreViewActor) then
|
||||
TempPreViewActor:SetOverrideColor(self.FXType, nil)
|
||||
self:SetBindColor(false)
|
||||
end
|
||||
end
|
||||
|
||||
function WB_Item_FXType:NextFx()
|
||||
local TempPreViewActor = UGCGameSystem.GameState:GetPreViewFXActor()
|
||||
if UE.IsValid(TempPreViewActor) then
|
||||
TempPreViewActor:SetNextFX(self.FXType)
|
||||
end
|
||||
end
|
||||
|
||||
function WB_Item_FXType:ChangeBindColor()
|
||||
self:SetBindColor(not self.IsBind)
|
||||
end
|
||||
|
||||
function WB_Item_FXType:SetBindColor(InIsBind)
|
||||
if self.IsBind ~= InIsBind then
|
||||
self.IsBind = InIsBind
|
||||
self.WidgetSwitcher_BindColor:SetActiveWidgetIndex(self.IsBind and 1 or 0)
|
||||
self:BindChangeCallBackNotify()
|
||||
end
|
||||
end
|
||||
|
||||
function WB_Item_FXType:GetIsBindColor()
|
||||
return self.IsBind
|
||||
end
|
||||
|
||||
function WB_Item_FXType:BindChangeCallBackNotify()
|
||||
if self.CallBackFunc then
|
||||
if self.CallBackObj then
|
||||
self.CallBackFunc(self.CallBackObj, self.FXType, self.IsBind)
|
||||
else
|
||||
self.CallBackFunc(self.FXType, self.IsBind)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function WB_Item_FXType:BindLockCallBack(InFunc, InObj)
|
||||
self.CallBackFunc = InFunc
|
||||
self.CallBackObj = InObj
|
||||
end
|
||||
|
||||
return WB_Item_FXType
|
98
FX_Preview/Script/UI/PreviewFX/WB_Item_Slide.lua
Normal file
98
FX_Preview/Script/UI/PreviewFX/WB_Item_Slide.lua
Normal file
@ -0,0 +1,98 @@
|
||||
---@class WB_Item_Slide_C:UUserWidget
|
||||
---@field Button_SlideMode_add UButton
|
||||
---@field Button_SlideMode_minus UButton
|
||||
---@field CanvasPanel_11 UCanvasPanel
|
||||
---@field ProgressBar_SlideMode UProgressBar
|
||||
---@field SlideMode_Value UTextBlock
|
||||
---@field Slider_SlideMode USlider
|
||||
---@field TextBlock_Name UTextBlock
|
||||
---@field Setting_PickUp_BP USetting_Pickup_UIBP_C
|
||||
--Edit Below--
|
||||
local WB_Item_Slide = {
|
||||
bInitDoOnce = false;
|
||||
Interval = 256.;
|
||||
MinVal = 0;
|
||||
MaxVal = 255
|
||||
}
|
||||
|
||||
function WB_Item_Slide:Construct()
|
||||
self:LuaInit()
|
||||
end
|
||||
|
||||
|
||||
function WB_Item_Slide:LuaInit()
|
||||
if self.bInitDoOnce then return ; end self.bInitDoOnce = true
|
||||
WidgetLibrary.SliderOnValueChanged(self.Slider_SlideMode, self.UpdateVal, self)
|
||||
WidgetLibrary.BindButtonClicked(self.Button_SlideMode_add, self.AddVal, self)
|
||||
WidgetLibrary.BindButtonClicked(self.Button_SlideMode_minus, self.SubVal, self)
|
||||
self.Slider_SlideMode:SetStepSize(1./self.Interval)
|
||||
self:UpdateVal()
|
||||
end
|
||||
|
||||
function WB_Item_Slide:SetID(InID)
|
||||
self.ID = InID
|
||||
local NameList = {"R", "G", "B"}
|
||||
local RGBColor = {
|
||||
{R = 1, G = 0, B = 0, A = 1 },
|
||||
{R = 0, G = 1, B = 0, A = 1 },
|
||||
{R = 0, G = 0, B = 1, A = 1 },
|
||||
}
|
||||
if NameList[InID] then
|
||||
self.TextBlock_Name:SetText(NameList[InID])
|
||||
self.ProgressBar_SlideMode:SetFillColorAndOpacity(RGBColor[InID])
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function WB_Item_Slide:GetVal()
|
||||
return math.floor(math.clamp(KismetMathLibrary.Round(self.Slider_SlideMode:GetValue() * self.Interval + self.MinVal), self.MinVal, self.MaxVal) + 0.5)
|
||||
end
|
||||
|
||||
function WB_Item_Slide:GetSlideVal()
|
||||
return self.Slider_SlideMode:GetValue()
|
||||
end
|
||||
|
||||
function WB_Item_Slide:AddVal()
|
||||
local TargetVal = math.clamp(self.Slider_SlideMode:GetValue() + 1./self.Interval, 0, 1)
|
||||
self.Slider_SlideMode:SetValue(TargetVal)
|
||||
self:UpdateVal()
|
||||
end
|
||||
|
||||
function WB_Item_Slide:SubVal()
|
||||
local TargetVal = math.clamp(self.Slider_SlideMode:GetValue() - 1./self.Interval, 0, 1)
|
||||
self.Slider_SlideMode:SetValue(TargetVal)
|
||||
self:UpdateVal()
|
||||
end
|
||||
|
||||
function WB_Item_Slide:UpdateVal()
|
||||
local Val = self:GetVal()
|
||||
local SlideVal = self:GetSlideVal()
|
||||
self.SlideMode_Value:SetText(Val)
|
||||
self.ProgressBar_SlideMode:SetPercent(SlideVal)
|
||||
self:CallBackNotify()
|
||||
end
|
||||
|
||||
function WB_Item_Slide:CallBackNotify()
|
||||
if self.CallBackFunc then
|
||||
if self.CallBackObj then
|
||||
self.CallBackFunc(self.CallBackObj, self.ID, self:GetSlideVal())
|
||||
else
|
||||
self.CallBackFunc(self.ID, self:GetSlideVal())
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function WB_Item_Slide:BindValueCallBack(InFunc, InObj)
|
||||
self.CallBackFunc = InFunc
|
||||
self.CallBackObj = InObj
|
||||
end
|
||||
|
||||
-- function WB_Item_Slide:Tick(MyGeometry, InDeltaTime)
|
||||
|
||||
-- end
|
||||
|
||||
-- function WB_Item_Slide:Destruct()
|
||||
|
||||
-- end
|
||||
|
||||
return WB_Item_Slide
|
88
FX_Preview/Script/UI/PreviewFX/WB_PreviewFX.lua
Normal file
88
FX_Preview/Script/UI/PreviewFX/WB_PreviewFX.lua
Normal file
@ -0,0 +1,88 @@
|
||||
---@class WB_PreviewFX_C:UUserWidget
|
||||
---@field Image_Color UImage
|
||||
---@field NewButton_Close UNewButton
|
||||
---@field VerticalBox_FXItemPanel UVerticalBox
|
||||
---@field WB_Item_Slide_B UWB_Item_Slide_C
|
||||
---@field WB_Item_Slide_G UWB_Item_Slide_C
|
||||
---@field WB_Item_Slide_R UWB_Item_Slide_C
|
||||
--Edit Below--
|
||||
local WB_PreviewFX = {
|
||||
bInitDoOnce = false;
|
||||
NowColor = {R = 1., G = 1., B = 1., A = 1.}
|
||||
}
|
||||
|
||||
|
||||
function WB_PreviewFX:Construct()
|
||||
self:LuaInit()
|
||||
end
|
||||
|
||||
function WB_PreviewFX:LuaInit()
|
||||
if self.bInitDoOnce then return ; end
|
||||
|
||||
WidgetLibrary.BindButtonClicked(self.NewButton_Close, self.CloseSelf, self)
|
||||
|
||||
local RGBSlide = {
|
||||
self.WB_Item_Slide_R,
|
||||
self.WB_Item_Slide_G,
|
||||
self.WB_Item_Slide_B,
|
||||
}
|
||||
for i, v in pairs(RGBSlide) do
|
||||
v:LuaInit()
|
||||
v:SetID(i)
|
||||
v:BindValueCallBack(self.UpdateColor, self)
|
||||
end
|
||||
|
||||
|
||||
|
||||
for i = 1, self.VerticalBox_FXItemPanel:GetChildrenCount() do
|
||||
local Item = self.VerticalBox_FXItemPanel:GetChildAt(i - 1)
|
||||
if i <= table.getCount(EFXType) then
|
||||
Item:SetType(i)
|
||||
Item:BindLockCallBack(self.LockChange, self)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function WB_PreviewFX:CloseSelf()
|
||||
self:SetVisibility(ESlateVisibility.Collapsed)
|
||||
end
|
||||
|
||||
function WB_PreviewFX:UpdateColor(ColorID, Val)
|
||||
UGCLogSystem.Log("[WB_PreviewFX_UpdateColor] ColorID:%s, Val:%s", tostring(ColorID), tostring(Val))
|
||||
if ColorID == 1 then
|
||||
self.NowColor.R = Val
|
||||
elseif ColorID == 2 then
|
||||
self.NowColor.G = Val
|
||||
elseif ColorID == 3 then
|
||||
self.NowColor.B = Val
|
||||
end
|
||||
|
||||
self.Image_Color:SetColorAndOpacity(self.NowColor)
|
||||
|
||||
local TempPreViewActor = UGCGameSystem.GameState:GetPreViewFXActor()
|
||||
if UE.IsValid(TempPreViewActor) then
|
||||
for i = 1, self.VerticalBox_FXItemPanel:GetChildrenCount() do
|
||||
local Item = self.VerticalBox_FXItemPanel:GetChildAt(i - 1)
|
||||
if i <= table.getCount(EFXType) then
|
||||
if Item:GetIsBindColor() then
|
||||
UGCLogSystem.Log("[WB_PreviewFX_UpdateColor] i:%s", tostring(i))
|
||||
TempPreViewActor:SetOverrideColor(i, self.NowColor)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function WB_PreviewFX:LockChange(FXType, IsBind)
|
||||
if IsBind then
|
||||
local TempPreViewActor = UGCGameSystem.GameState:GetPreViewFXActor()
|
||||
if UE.IsValid(TempPreViewActor) then
|
||||
TempPreViewActor:SetOverrideColor(FXType, self.NowColor)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
return WB_PreviewFX
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
IWantToHitfour/Asset/UI/Settlement/WB_Settlement_2.uasset
Normal file
BIN
IWantToHitfour/Asset/UI/Settlement/WB_Settlement_2.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -53,13 +53,13 @@ SwitchesInMaps=((Key="r.Mobile.EnableIBL",Value=0),(Key="s.StreamableDelegateLim
|
||||
PlayBindingArray=[]
|
||||
|
||||
[JobOption]
|
||||
LastJobId=600040486
|
||||
LastWindowsJobId=600040035
|
||||
LastAndroidJobId=600040035
|
||||
LastIOSJobId=600040035
|
||||
PakOnly=1
|
||||
LastSkipBake=True
|
||||
LastTargetPlatform=LinuxServer+WindowsNoEditor+Android_ETC2+IOS+OpenHarmony_ETC2
|
||||
LastJobId=-1
|
||||
LastWindowsJobId=-1
|
||||
LastAndroidJobId=-1
|
||||
LastIOSJobId=-1
|
||||
PakOnly=0
|
||||
LastSkipBake=False
|
||||
LastTargetPlatform=LinuxServer
|
||||
|
||||
[UGCUploadOption]
|
||||
PlatformIndex=0
|
||||
@ -68,6 +68,6 @@ TargetPlatform=LinuxServer+WindowsNoEditor+Android_ETC2+IOS+OpenHarmony_ETC2
|
||||
|
||||
[DebugSettings]
|
||||
bRoomOB=0
|
||||
TeamPlayers=5,0;
|
||||
TeamPlayers=2,0;
|
||||
|
||||
|
||||
|
@ -567,7 +567,7 @@ end
|
||||
|
||||
function UGCGameState:SetPlayerWeaponCombination(PlayerKey, WeaponCombinationType)
|
||||
self.PlayerWeaponCombination[PlayerKey] = WeaponCombinationType
|
||||
self:ResetPlayerSelectWeaponIndex(PlayerKey)
|
||||
-- self:ResetPlayerSelectWeaponIndex(PlayerKey)
|
||||
end
|
||||
|
||||
function UGCGameState:GetPlayerWeaponCombination(PlayerKey)
|
||||
@ -580,7 +580,8 @@ end
|
||||
|
||||
--- 重置玩家选择的武器配置索引
|
||||
function UGCGameState:ResetPlayerSelectWeaponIndex(PlayerKey)
|
||||
self.PlayerSelectedWeaponIndex[PlayerKey] = 1
|
||||
if self.PlayerSelectedWeaponIndex[PlayerKey] == nil then self.PlayerSelectedWeaponIndex[PlayerKey] = {} end
|
||||
self.PlayerSelectedWeaponIndex[PlayerKey][self:GetPlayerWeaponCombination(PlayerKey)] = 1
|
||||
end
|
||||
|
||||
--- 重置所有玩家的武器配置索引
|
||||
@ -590,7 +591,8 @@ end
|
||||
|
||||
--- 设置玩家选择的武器配置索引
|
||||
function UGCGameState:PlayerSelectWeaponIndex(PlayerKey, WeaponCombinationIndex)
|
||||
self.PlayerSelectedWeaponIndex[PlayerKey] = WeaponCombinationIndex
|
||||
if self.PlayerSelectedWeaponIndex[PlayerKey] == nil then self.PlayerSelectedWeaponIndex[PlayerKey] = {} end
|
||||
self.PlayerSelectedWeaponIndex[PlayerKey][self:GetPlayerWeaponCombination(PlayerKey)] = WeaponCombinationIndex
|
||||
self:UpdatePlayerWeapon(PlayerKey)
|
||||
if self.PlayerAutoSelectWeaponHandle[PlayerKey] then
|
||||
UGCEventSystem.StopTimer(self.PlayerAutoSelectWeaponHandle[PlayerKey])
|
||||
@ -614,15 +616,16 @@ end
|
||||
|
||||
--- 获取玩家选择的武器配置索引
|
||||
function UGCGameState:GetPlayerSelectedWeaponIndex(PlayerKey)
|
||||
return self.PlayerSelectedWeaponIndex[PlayerKey]
|
||||
if self.PlayerSelectedWeaponIndex[PlayerKey] == nil then self.PlayerSelectedWeaponIndex[PlayerKey] = {} end
|
||||
if self.PlayerSelectedWeaponIndex[PlayerKey][self:GetPlayerWeaponCombination(PlayerKey)] == nil then
|
||||
self.PlayerSelectedWeaponIndex[PlayerKey][self:GetPlayerWeaponCombination(PlayerKey)] = 1
|
||||
end
|
||||
return self.PlayerSelectedWeaponIndex[PlayerKey][self:GetPlayerWeaponCombination(PlayerKey)]
|
||||
end
|
||||
|
||||
--- 获取玩家选择的武器索引对应的武器及配件
|
||||
function UGCGameState:GetPlayerSelectedWeaponAndParts(PlayerKey)
|
||||
local Res = {}
|
||||
if not self:CheckPlayerSelectWeaponIndex(PlayerKey) then
|
||||
self.PlayerSelectedWeaponIndex[PlayerKey] = 1
|
||||
end
|
||||
local PlayerWeaponCombination = self:GetPlayerWeaponCombination(PlayerKey)
|
||||
local PlayerSelectedWeaponIndex = self:GetPlayerSelectedWeaponIndex(PlayerKey)
|
||||
local WeaponCombination = WeaponSelectionCombinationConfig.WeaponCombinationList[PlayerWeaponCombination]
|
||||
@ -666,9 +669,6 @@ end
|
||||
--- 获取玩家选择的武器Item表
|
||||
function UGCGameState:GetPlayerSelectedWeaponItemInfo(PlayerKey)
|
||||
local Res = {}
|
||||
if not self:CheckPlayerSelectWeaponIndex(PlayerKey) then
|
||||
self.PlayerSelectedWeaponIndex[PlayerKey] = 1
|
||||
end
|
||||
local PlayerWeaponCombination = self:GetPlayerWeaponCombination(PlayerKey)
|
||||
local PlayerSelectedWeaponIndex = self:GetPlayerSelectedWeaponIndex(PlayerKey)
|
||||
local WeaponCombination = WeaponSelectionCombinationConfig.WeaponCombinationList[PlayerWeaponCombination]
|
||||
@ -1169,6 +1169,59 @@ function UGCGameState:PlayerIsChallenge(InPlayerKey)
|
||||
return self:GetChallengePlayer() == InPlayerKey
|
||||
end
|
||||
|
||||
function UGCGameState:GetNextChallenge()
|
||||
local AllPK = UGCSystemLibrary.GetAllPlayerKeys()
|
||||
if self.ChallengedPlayers == nil then self.ChallengedPlayers = {} end
|
||||
local TempChallengePlayer = nil
|
||||
for i, v in pairs(AllPK) do
|
||||
if not table.hasValue(self.ChallengedPlayers, v) then
|
||||
TempChallengePlayer = v
|
||||
break
|
||||
end
|
||||
end
|
||||
return TempChallengePlayer
|
||||
end
|
||||
|
||||
-- 更新玩家的队伍
|
||||
function UGCGameState:ChangePlayerTeamLogic(PlayerKey, PlayerTeamID)
|
||||
-- 设置出生点类型
|
||||
local PC = UGCGameSystem.GetPlayerControllerByPlayerKey(PlayerKey)
|
||||
if PlayerTeamID == 1 then
|
||||
PC:SetStartPointType(EPlayerStartType.Team1)
|
||||
self:SetPlayerWeaponCombination(PlayerKey, WeaponSelectionCombinationConfig.ECombinationType.Combination1)
|
||||
else
|
||||
PC:SetStartPointType(EPlayerStartType.Team2)
|
||||
self:SetPlayerWeaponCombination(PlayerKey, WeaponSelectionCombinationConfig.ECombinationType.Combination2)
|
||||
end
|
||||
-- 官方逻辑设置队伍ID
|
||||
UGCTeamSystem.ChangePlayerTeamID(PlayerKey, PlayerTeamID)
|
||||
-- 玩家信息栏设置队伍信息
|
||||
self.PlayerPersonalInfos[PlayerKey].TeamID = PlayerTeamID
|
||||
-- 玩家比分栏设置比分信息
|
||||
PlayerScoreSystem.UpdatePlayerTeamID(PlayerKey, PlayerTeamID)
|
||||
end
|
||||
|
||||
-- 选出下一个挑战者
|
||||
function UGCGameState:SelectNextChallenge()
|
||||
local TempChallengePlayer = self:GetNextChallenge()
|
||||
if TempChallengePlayer then
|
||||
self.ChallengePlayer = TempChallengePlayer
|
||||
self.ChallengedPlayers[#self.ChallengedPlayers + 1] = TempChallengePlayer
|
||||
local AllPK = UGCSystemLibrary.GetAllPlayerKeys()
|
||||
|
||||
-- 配置队伍ID
|
||||
for i, PlayerKey in pairs(AllPK) do
|
||||
if PlayerKey == self.ChallengePlayer then
|
||||
self:ChangePlayerTeamLogic(self.ChallengePlayer, 2)
|
||||
else
|
||||
self:ChangePlayerTeamLogic(PlayerKey, 1)
|
||||
end
|
||||
end
|
||||
UGCSendRPCSystem.RPCEvent(nil, EventEnum.AddTip, TipConfig.TipType.ChallengerPlayer, self.ChallengePlayer)
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
-- 工程设置-------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
@ -19,7 +19,7 @@ function EventAction_PlayerExit:Execute(...)
|
||||
local HasNotControlled = false
|
||||
for k, Pawn in pairs(AllPawn) do
|
||||
if not Pawn:IsControlled() then
|
||||
Pawn:K2_DestroyActor()
|
||||
-- Pawn:K2_DestroyActor()
|
||||
HasNotControlled = true
|
||||
end
|
||||
end
|
||||
|
@ -105,6 +105,8 @@ end
|
||||
|
||||
-- 根据工程的修改而改变的开始执行逻辑
|
||||
function EventAction_RoundBegin:ExecuteOtherLogic()
|
||||
-- 选出下一个挑战者
|
||||
UGCGameSystem.GameState:SelectNextChallenge()
|
||||
|
||||
-- 判断玩家是否死亡,死亡则重生
|
||||
local AllPC = UGCGameSystem.GetAllPlayerController()
|
||||
|
@ -44,9 +44,11 @@ end
|
||||
|
||||
--- 判断玩法是否结束 根据玩法进行修改
|
||||
function EventAction_RoundEnd:CheckGameEnd()
|
||||
return UGCGameSystem.GameState:IsFinishRound()
|
||||
or UGCGameSystem.GameState:GetMaxTeamScore() > GlobalConfigs.GameSetting.MaxRound // 2
|
||||
or #UGCTeamSystem.GetPlayerKeysByTeamID(1) < 1 or #UGCTeamSystem.GetPlayerKeysByTeamID(2) < 1
|
||||
--return UGCGameSystem.GameState:IsFinishRound()
|
||||
-- or UGCGameSystem.GameState:GetMaxTeamScore() > GlobalConfigs.GameSetting.MaxRound // 2
|
||||
-- or #UGCTeamSystem.GetPlayerKeysByTeamID(1) < 1 or #UGCTeamSystem.GetPlayerKeysByTeamID(2) < 1
|
||||
-- or UGCGameSystem.GameState:GettNextChallenge() == nil
|
||||
return UGCGameSystem.GameState:IsFinishRound() or UGCGameSystem.GameState:GetNextChallenge() == nil
|
||||
end
|
||||
|
||||
--其他逻辑可修改替换 ------------------------
|
||||
@ -63,18 +65,18 @@ end
|
||||
|
||||
function EventAction_RoundEnd:OtherGameFinishLogic()
|
||||
-- 调换出生点
|
||||
if GlobalConfigs.GameSetting.ActiveChangeTeam then
|
||||
if UGCGameSystem.GameState:GetRoundCount() == GlobalConfigs.GameSetting.MaxRound // 2 then
|
||||
local AllPC = UGCGameSystem.GetAllPlayerController()
|
||||
for i, PC in pairs(AllPC) do
|
||||
if PC:GetStartPointType() == EPlayerStartType.Team1 then
|
||||
PC:SetStartPointType(EPlayerStartType.Team2)
|
||||
else
|
||||
PC:SetStartPointType(EPlayerStartType.Team1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
--if GlobalConfigs.GameSetting.ActiveChangeTeam then
|
||||
-- if UGCGameSystem.GameState:GetRoundCount() == GlobalConfigs.GameSetting.MaxRound // 2 then
|
||||
-- local AllPC = UGCGameSystem.GetAllPlayerController()
|
||||
-- for i, PC in pairs(AllPC) do
|
||||
-- if PC:GetStartPointType() == EPlayerStartType.Team1 then
|
||||
-- PC:SetStartPointType(EPlayerStartType.Team2)
|
||||
-- else
|
||||
-- PC:SetStartPointType(EPlayerStartType.Team1)
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
--end
|
||||
end
|
||||
|
||||
|
||||
|
@ -124,7 +124,7 @@ function EventAction_WaitingPlayer:OtherFinishLogic()
|
||||
UGCEventSystem.SendEvent(EventEnum.UpdatePlayerStartList)
|
||||
|
||||
-- 选出挑战者
|
||||
UGCGameSystem.GameState:ElectChallengePlayer()
|
||||
-- UGCGameSystem.GameState:ElectChallengePlayer()
|
||||
-- 广播提示XXX成为挑战者
|
||||
|
||||
-- 显示武器选择界面
|
||||
|
@ -153,6 +153,23 @@ function UGCSystemLibrary.AsyncLoadAsset(AssetPath, CallBackFunc, Obj, SaveAsset
|
||||
end
|
||||
end
|
||||
|
||||
--- 通过路径获取DataTable
|
||||
---@param DataTablePath string
|
||||
---@param ToNumberKey bool 是否将Key值转化为Number类型再返回
|
||||
function UGCSystemLibrary.GetDataTableFromPath(DataTablePath, ToNumberKey)
|
||||
local ResDataTable = Gameplay.GetTable(DataTablePath)
|
||||
|
||||
if ToNumberKey then
|
||||
local Res = {}
|
||||
for i, v in pairs(ResDataTable) do
|
||||
Res[tonumber(i)] = v
|
||||
end
|
||||
return Res
|
||||
else
|
||||
return ResDataTable
|
||||
end
|
||||
end
|
||||
|
||||
---@param AssetPath:string
|
||||
---@param SaveAsset:bool 是否保存
|
||||
function UGCSystemLibrary.LoadAsset(AssetPath, SaveAsset)
|
||||
|
@ -134,7 +134,7 @@ WidgetConfig.Configs = {
|
||||
ShowOnce = false,
|
||||
},
|
||||
[WidgetConfig.EUIType.Settlement] = {
|
||||
Widget = UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Settlement/WB_TeamSettlement.WB_TeamSettlement_C'),
|
||||
Widget = UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Settlement/WB_Settlement_2.WB_Settlement_2_C'),
|
||||
Layer = WidgetConfig.EUILayerGroup.High,
|
||||
ShowOnce = false,
|
||||
},
|
||||
|
@ -1,6 +1,7 @@
|
||||
---@class WB_PlayerHead_48_C:UUserWidget
|
||||
---@field Border_HeadMain UBorder
|
||||
---@field Common_Avatar_BP_C_0 UCommon_Avatar_BP_C
|
||||
---@field Overlay_Dead UOverlay
|
||||
---@field Overlay_KnockedDown UOverlay
|
||||
---@field ProgressBar_Health UProgressBar
|
||||
---@field WidgetSwitcher_Frame UWidgetSwitcher
|
||||
@ -107,11 +108,13 @@ function WB_PlayerHead_48:UpdateWidgetState(InPlayerHeadState)
|
||||
end
|
||||
self.Overlay_KnockedDown:SetVisibility(ESlateVisibility.Collapsed)
|
||||
self.Border_HeadMain:SetContentColorAndOpacity({R=1,G=1,B=1,A=1})
|
||||
self.Overlay_Dead:SetVisibility(ESlateVisibility.Collapsed)
|
||||
elseif self.PlayerHeadState == EPlayerHeadInfoState.Death then
|
||||
-- 死亡
|
||||
self.ProgressBar_Health:SetVisibility(ESlateVisibility.Collapsed)
|
||||
self.Overlay_KnockedDown:SetVisibility(ESlateVisibility.Collapsed)
|
||||
self.Border_HeadMain:SetContentColorAndOpacity({R=0.281250,G=0.281250,B=0.281250,A=1.000000})
|
||||
self.Overlay_Dead:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
|
||||
elseif self.PlayerHeadState == EPlayerHeadInfoState.KnockedDown then
|
||||
-- 倒地
|
||||
if self.IsShowHealth then
|
||||
@ -120,6 +123,7 @@ function WB_PlayerHead_48:UpdateWidgetState(InPlayerHeadState)
|
||||
end
|
||||
self.Overlay_KnockedDown:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
|
||||
self.Border_HeadMain:SetContentColorAndOpacity({R=1,G=1,B=1,A=1})
|
||||
self.Overlay_Dead:SetVisibility(ESlateVisibility.Collapsed)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user