全站通知:
卡牌图鉴
刷
历
编
阅读
2026-03-29更新
最新编辑:NACGNOH
阅读:
更新日期:2026-03-29
最新编辑:NACGNOH
跳到导航
跳到搜索
文件:1318730803450995831.png
WEAPONTYPE_X增益(WEAPONTYPE_X buff)
本关中任意WEAPONTYPE_X武器造成的伤害+0.0。
文件:.png
NPC_X(NPC_X)
在本关中召唤一名供应商NPC_X。
文件:.png
获得AMOUNT_XxITEM_X(Receive AMOUNT_Xx ITEM_X)
本关将生成3xITEM_X。
graph TD
Start(["开始 SetupCards()"]) --> WaitFrame["等待帧结束"]
WaitFrame --> GetCamera["获取玩家相机"]
GetCamera --> CalcCards["计算卡牌数量
choiceDrawAmount 与 availableCount 取最小值 + 2"]
CalcCards --> InitArrays["初始化数组
spawnedCards, cardTargetPositions, cardRewards"]
InitArrays --> LoopCards["循环 i = 0 到 numberOfCards-1"]
LoopCards --> CheckSpecial{"判断卡牌类型
────────────────"}
CheckSpecial -- "i == numberOfCards-2" --> SkipCard["生成跳过卡牌
SkipCardPrefab"]
CheckSpecial -- "i == numberOfCards-1" --> RerollCard["生成重Roll卡牌
RerollCardPrefab"]
CheckSpecial -- "其他" --> NormalCard["生成普通卡牌
CardPrefab"]
SkipCard --> SetSkipReward["cardRewards[i] = skipCardReward"]
RerollCard --> SetRerollValues["SetRerollValues()
显示剩余重Roll次数"]
NormalCard --> SelectReward["权重随机选择卡牌奖励"]
SetSkipReward --> NextCard["继续下一张卡牌"]
SetRerollValues --> NextCard
SelectReward --> HasReward{"奖励是否为空?"}
HasReward -- "是" --> ErrorLog["记录错误日志
Debug.LogError"]
HasReward -- "否" --> SetCardType["设置卡牌类型
SetCardType()"]
ErrorLog --> NextCard
SetCardType --> AddToList["添加到已选列表
list.Add(), list2.Add()"]
AddToList --> CheckPreselection{"随机预选检查
Random ||= runtimePreselectionChance?"}
CheckPreselection -- "否" --> DefaultBranch
CheckPreselection -- "是" --> BranchType{"奖励类型
────────────────"}
BranchType -- "SpawnFromLootTable" --> LootTableBranch
BranchType -- "GiveResource" --> ResourceBranch
BranchType -- "SpawnRandomAllies" --> AllyBranch
BranchType -- "SpawnNPC" --> NPCBranch
BranchType -- "SpawnInteractable" --> InteractableBranch
BranchType -- "ApplyBuff" --> BuffBranch
BranchType -- "TriggerEvent" --> EventBranch
BranchType -- "其他" --> DefaultBranch
NextCard --> LoopEnd{"i < numberOfCards ?"}
LoopEnd -- "是" --> LoopCards
LoopEnd -- "否" --> LogCards["记录显示的卡牌列表
Debug.Log"]
LogCards --> UpdatePositions["UpdateCardTargetPositions()
计算卡牌目标位置"]
UpdatePositions --> SetupAnimation["设置动画初始状态
位置: 下方2米
缩放: 0
旋转: 面向中心"]
SetupAnimation --> PlayerLock["锁定玩家操作
隐藏武器, 禁用射击输入"]
PlayerLock --> SetupComplete["cardsSetup = true
cardsAnimatingIn = true"]
SetupComplete --> AnimateCards["StartCoroutine
AnimateCardsEntrance()"]
AnimateCards --> End(["结束"])
subgraph DefaultBranch [默认分支处理]
direction TB
D1["获取本地化文本
优先级: 卡牌特定 > 通用 > 默认"] --> D2{"奖励类型判断"}
D2 -- "ApplyBuff" --> D3["生成Buff数值文本
计算并格式化"]
D2 -- "GiveResource" --> D4["计算实际数量
amount × ammoGainMultiplier"]
D2 -- "TriggerEvent" --> D5["替换AMOUNT_X
为持续时间"]
D2 -- "其他" --> D6["替换AMOUNT_X
为spawnCount"]
D3 --> D7["设置标题和描述
subtitleText / descriptionText"]
D4 --> D7
D5 --> D7
D6 --> D7
D7 --> D8["设置美术图
customArtwork"]
D8 --> D9["设置数量显示
SetQuantity()"]
D9 --> D10["更新放逐文本
UpdateBanishText()"]
end
subgraph LootTableBranch [物品生成分支 SpawnFromLootTable]
direction TB
L1["预选物品
SelectAvailableItem()"] --> L2["获取ItemDefinition"]
L2 --> L3{"spawnCount > 1 ?"}
L3 -- "是" --> L4["替换占位符
ITEM_X → 物品名称
AMOUNT_X → spawnCount"]
L3 -- "否" --> L5["使用本地化模板
Card_SpecificItem_Title/Description
替换ITEM_X"]
L4 --> L6["设置标题和描述"]
L5 --> L6
L6 --> L7["设置物品美术图
item.artwork"]
L7 --> L8["设置数量 spawnCount"]
L8 --> L9["更新放逐文本"]
end
subgraph ResourceBranch [资源给予分支 GiveResource]
direction TB
R1["预选物品
SelectAvailableItem()"] --> R2["获取ItemDefinition
和WorldResource"]
R2 --> R3["计算实际数量
actualAmount = Round(amount × ammoGainMultiplier)"]
R3 --> R4["替换标题占位符
AMMO_TYPE → 资源标签"]
R4 --> R5["替换描述占位符
AMMO_TYPE → 资源短名称
AMOUNT_X → actualAmount"]
R5 --> R6["设置标题和描述"]
R6 --> R7["设置物品美术图"]
R7 --> R8["设置数量 actualAmount"]
R8 --> R9["更新放逐文本"]
end
subgraph AllyBranch [同伴生成分支 SpawnRandomAllies]
direction TB
A1["预选UnitSO"] --> A2{"spawnCount == 1 ?"}
A2 -- "是" --> A3["替换ALLY_X标题
Card_SummonAlly_Title"]
A2 -- "否" --> A4["替换AMOUNT_X
为spawnCount"]
A3 --> A5["替换ALLY_X描述
Card_SummonAlly_Description"]
A5 --> A6["设置数量为1"]
A4 --> A7["设置标题和描述"]
A7 --> A8["设置默认美术图"]
A6 --> A9["异步加载美术图
LoadAndSetArtwork()"]
A9 --> A10["更新放逐文本"]
A8 --> A10
end
subgraph NPCBranch [NPC生成分支 SpawnNPC]
direction TB
N1["预选UnitSO"] --> N2["替换NPC_X标题
Card_SummonNPC_Title"]
N2 --> N3["替换NPC_X描述
Card_SummonNPC_Description"]
N3 --> N4["设置数量为spawnCount"]
N4 --> N5["异步加载美术图
LoadAndSetArtwork()"]
N5 --> N6["更新放逐文本"]
end
subgraph InteractableBranch [交互物生成分支 SpawnInteractable]
direction TB
I1["预选Interactable"] --> I2{"UnlockableStorage
且itemBroughtToChurch存在?"}
I2 -- "是" --> I3["获取教堂物品
itemBroughtToChurch"]
I2 -- "否" --> I4["获取本地化文本
Endless/卡牌Key_Title/Description"]
I3 --> I5["替换STORAGE_X标题
Card_Storage_Title"]
I5 --> I6["替换STORAGE_X描述
Card_Storage_Description"]
I6 --> I7["设置教堂物品美术图"]
I4 --> I8["设置默认美术图"]
I7 --> I9["设置数量为1"]
I8 --> I9
I9 --> I10["更新放逐文本"]
end
subgraph BuffBranch [Buff应用分支 ApplyBuff]
direction TB
B1["获取Buff数值"] --> B2{"Buff类型"}
B2 -- "ExistingBuff" --> B3["buffsToApply[0].value"]
B2 -- "PermanentModifier" --> B4["permanentModifiers[0].value"]
B2 -- "IncreaseXPAmount/IncreaseAmmoGain" --> B5["buffAmount"]
B3 --> B6{"是否百分比属性?"}
B4 --> B6
B6 -- "是" --> B7["格式化: +value×100%"]
B6 -- "否" --> B8["格式化: +value"]
B5 --> B9["格式化: +value×100%"]
B7 --> B10["替换AMOUNT_X
为格式化文本"]
B8 --> B10
B9 --> B10
B10 --> B11["设置标题和描述"]
B11 --> B12["设置美术图"]
B12 --> B13["数量标签显示数值"]
B13 --> B14["更新放逐文本"]
end
subgraph EventBranch [事件触发分支 TriggerEvent]
direction TB
E1{"事件类型"}
E1 -- "InfiniteAmmo 或 Indestructible" --> E2["替换AMOUNT_X
为infiniteDurabilityWaveDuration"]
E1 -- "其他事件" --> E3["不替换占位符"]
E2 --> E4["设置标题和描述"]
E3 --> E4
E4 --> E5["设置美术图"]
E5 --> E6["设置数量为1"]
E6 --> E7["更新放逐文本"]
end
style Start fill:#e1f5e1
style End fill:#e1f5e1
style DefaultBranch fill:#fff4e6
style LootTableBranch fill:#e3f2fd
style ResourceBranch fill:#e3f2fd
style AllyBranch fill:#e3f2fd
style NPCBranch fill:#e3f2fd
style InteractableBranch fill:#e3f2fd
style BuffBranch fill:#e3f2fd
style EventBranch fill:#e3f2fd

沪公网安备 31011002002714 号