feat: 移除自适应性能相关配置并调整动画控制器

移除了Unity自适应性能(Adaptive Performance)的相关配置文件,
包括Adaptive Performance文件夹及其子目录中的所有配置文件,
同时移除了移动通知(NotificationSettings)相关配置,
以及第一章第一关(level_chapter1_level1)的关卡配置文件,
还删除了多个材质文件如AdjustableGlowOrb、AdjustableGlowOrbHalo
和Arena相关材质。另外微调了base-人类士兵.controller中状态机
的位置坐标,将x坐标从320调整为330。
```
This commit is contained in:
huadexuan committed 2026-09-27 20:39:00 +08:00
1 parent 13d0c80335
commit f77fa20f82
413 files changed
+13494 -63858

No files matched your search

@@ -0,0 +1,60 @@
# CharacterData 数值规范
## 数据职责
`CharacterData` 只保存角色静态配置:
- `characterId`、`characterName`、`description`
- `cardIcon`
- `unitPrefab`
- 1 级基础生命、攻击、移速
- 每级生命、攻击、移速成长
已移除或不再作为角色数据的字段:
- 召唤能量费用
- 卡牌冷却时间
- 兵营生产间隔
- 建筑花费
这些字段属于旧的召唤/建筑玩法,不用于当前塔防主线。
## 玩家英雄
玩家英雄通过 `PlayerData.json` 获取等级和星级,再结合 CharacterData 计算最终属性:
```text
最终生命 = baseMaxHealth + (level - 1) × healthPerLevel
最终攻击 = baseAttackPower + (level - 1) × attackPerLevel
最终移速 = baseMoveSpeed + (level - 1) × moveSpeedPerLevel
```
同等级英雄不按费用或稀有度决定基础数值强弱。英雄的特色来自:
- 近战、远程、范围、前排等战斗职责;
- 技能机制和技能复杂度;
- 阵型位置与战斗内增益组合。
## 波次小兵
小兵读取对应 CharacterData 的 1 级基础属性,不读取玩家等级、星级和当前卡组。
小兵应该明显弱于同等级玩家英雄:
- 普通小兵:低生命、低攻击,依靠数量和波次组合制造压力;
- 远程小兵:生命更低,用射程和站位制造压力;
- 重装小兵:生命较高,但攻击和移动较慢;
- 精英小兵:通过体型、武器和行为提升威胁,不等同于玩家英雄成长。
## 当前基准
| 单位 | 生命 | 攻击 | 移速 | 定位 |
|---|---:|---:|---:|---|
| 人类士兵英雄 | 300 | 42 | 2.2 | 基础近战英雄 |
| 弓箭手英雄 | 220 | 55 | 2.0 | 远程输出英雄 |
| 盾卫英雄 | 700 | 30 | 1.6 | 高生命前排英雄 |
| 法师英雄 | 240 | 100 | 1.7 | 远程范围输出英雄 |
| 精锐士兵英雄 | 520 | 78 | 2.0 | 精英近战英雄 |
| 城堡蓝卫Q | 170 | 22 | 3.5 | 普通近战小兵 |
| 城堡弓童 | 150 | 28 | 3.5 | 普通远程小兵 |
| 城堡金盾卫 | 360 | 36 | 2.6 | 普通重装小兵 |
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: DHocvCP8U32zMTXGMIAB+UqrBQElB/SDAdwC9U2Ga3/z+i904T7UWL8=
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+40
View File
@@ -0,0 +1,40 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: faf0a0507d15947d093eb25117aac735, type: 3}
m_Name: HeroRoster
m_EditorClassIdentifier:
heroes:
- displayName: "\u76FE\u536B"
prefab: {fileID: 1242979668690031507, guid: 5a43e36885a204515891085639dd22c4,
type: 3}
icon: {fileID: 21300000, guid: edea9239670494fc69b62e2fdc8525f5, type: 3}
isMelee: 1
- displayName: "\u4EBA\u7C7B\u58EB\u5175"
prefab: {fileID: 7945271050725079514, guid: 04ae1b1fe51474dda8ae5daf0b1df7c1,
type: 3}
icon: {fileID: 21300000, guid: 3f35fdb898d8648e0a01f5f7c6e5943c, type: 3}
isMelee: 1
- displayName: "\u7CBE\u9510\u58EB\u5175"
prefab: {fileID: 3933539425749946856, guid: 6be579752d2424feea054ce267928002,
type: 3}
icon: {fileID: 21300000, guid: b86682305b7af4a5983b9f24110d7055, type: 3}
isMelee: 1
- displayName: "\u5F13\u7BAD\u624B"
prefab: {fileID: 5200308054099318121, guid: 7d2074c48a1b3544eb534bb509ffc845,
type: 3}
icon: {fileID: 21300000, guid: 4e0429f3f8a3046c590d7fc5ce85c915, type: 3}
isMelee: 0
- displayName: "\u6CD5\u5E08"
prefab: {fileID: 7062617501994129594, guid: 6fb249c0311f442ecb190db77248eafc,
type: 3}
icon: {fileID: 21300000, guid: d6b94f721183e428f9a7d708ab1c6386, type: 3}
isMelee: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: BnlKvX+uBXjwYDBBaqG+JqrVS5fVY1Vrx4xle+Uo8vo0DoKhR7/xFTw=
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
+5 -9
View File
@@ -18,13 +18,9 @@ MonoBehaviour:
cardIcon: {fileID: 21300000, guid: 3f35fdb898d8648e0a01f5f7c6e5943c, type: 3}
unitPrefab: {fileID: 7945271050725079514, guid: 04ae1b1fe51474dda8ae5daf0b1df7c1,
type: 3}
manaCost: 2
cooldownTime: 1
productionInterval: 6
buildingCost: 100
baseMaxHealth: 280
baseAttackPower: 28
baseMoveSpeed: 1.8
healthPerLevel: 30
attackPerLevel: 3
baseMaxHealth: 300
baseAttackPower: 42
baseMoveSpeed: 2.2
healthPerLevel: 35
attackPerLevel: 4
moveSpeedPerLevel: 0
@@ -0,0 +1,26 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6769361b152df4efb933934b84a6e673, type: 3}
m_Name: "\u57CE\u5821\u5F13\u7AE5Data"
m_EditorClassIdentifier:
characterId: castle_archer
characterName: "\u57CE\u5821\u5F13\u7AE5"
description:
cardIcon: {fileID: 0}
unitPrefab: {fileID: 5353056374797990493, guid: c441f52bd7de14f7980881b0aff3ed62,
type: 3}
baseMaxHealth: 150
baseAttackPower: 28
baseMoveSpeed: 3.5
healthPerLevel: 0
attackPerLevel: 0
moveSpeedPerLevel: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: WX0evSyuAS5XsmzNUd56e0gNxJVIiqgpHBp2/+MMdPW6FyxniRySBIE=
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,26 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6769361b152df4efb933934b84a6e673, type: 3}
m_Name: "\u57CE\u5821\u84DD\u536BQData"
m_EditorClassIdentifier:
characterId: castle_blue_guard_q
characterName: "\u57CE\u5821\u84DD\u536BQ"
description:
cardIcon: {fileID: 0}
unitPrefab: {fileID: 6831747914582959299, guid: 1fed8c7a79ffa4ce386e4b260c81330d,
type: 3}
baseMaxHealth: 170
baseAttackPower: 22
baseMoveSpeed: 3.5
healthPerLevel: 0
attackPerLevel: 0
moveSpeedPerLevel: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: XX0b4SL8Bi536AJHzsqJJD+0er8a3sqSEfjCjkUNnBgKxAAfuHnrd4k=
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,26 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6769361b152df4efb933934b84a6e673, type: 3}
m_Name: "\u57CE\u5821\u91D1\u76FE\u536BData"
m_EditorClassIdentifier:
characterId: castle_gold_guard
characterName: "\u57CE\u5821\u91D1\u76FE\u536B"
description:
cardIcon: {fileID: 0}
unitPrefab: {fileID: 6097483073022240836, guid: ec2510b8f554e42d89d7aad24ddded11,
type: 3}
baseMaxHealth: 360
baseAttackPower: 36
baseMoveSpeed: 2.6
healthPerLevel: 0
attackPerLevel: 0
moveSpeedPerLevel: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: BylO4CKvACnZW4AxiG//VtI46wdQ4Uqyx4m5jJM85h2Sj9sjiZEPJgg=
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
+5 -9
View File
@@ -18,13 +18,9 @@ MonoBehaviour:
cardIcon: {fileID: 21300000, guid: 4e0429f3f8a3046c590d7fc5ce85c915, type: 3}
unitPrefab: {fileID: 5200308054099318121, guid: 7d2074c48a1b3544eb534bb509ffc845,
type: 3}
manaCost: 3
cooldownTime: 1
productionInterval: 8
buildingCost: 120
baseMaxHealth: 180
baseAttackPower: 38
baseMoveSpeed: 1.8
healthPerLevel: 20
attackPerLevel: 3
baseMaxHealth: 220
baseAttackPower: 55
baseMoveSpeed: 2
healthPerLevel: 25
attackPerLevel: 5
moveSpeedPerLevel: 0
+5 -9
View File
@@ -18,13 +18,9 @@ MonoBehaviour:
cardIcon: {fileID: 21300000, guid: d6b94f721183e428f9a7d708ab1c6386, type: 3}
unitPrefab: {fileID: 7062617501994129594, guid: 6fb249c0311f442ecb190db77248eafc,
type: 3}
manaCost: 6
cooldownTime: 1
productionInterval: 12
buildingCost: 150
baseMaxHealth: 180
baseAttackPower: 85
baseMoveSpeed: 1.5
healthPerLevel: 16
attackPerLevel: 7
baseMaxHealth: 240
baseAttackPower: 100
baseMoveSpeed: 1.7
healthPerLevel: 22
attackPerLevel: 8
moveSpeedPerLevel: 0
+5 -9
View File
@@ -18,13 +18,9 @@ MonoBehaviour:
cardIcon: {fileID: 21300000, guid: edea9239670494fc69b62e2fdc8525f5, type: 3}
unitPrefab: {fileID: 1242979668690031507, guid: 5a43e36885a204515891085639dd22c4,
type: 3}
manaCost: 4
cooldownTime: 1
productionInterval: 10
buildingCost: 150
baseMaxHealth: 800
baseAttackPower: 18
baseMoveSpeed: 1.4
healthPerLevel: 90
attackPerLevel: 2
baseMaxHealth: 700
baseAttackPower: 30
baseMoveSpeed: 1.6
healthPerLevel: 80
attackPerLevel: 3
moveSpeedPerLevel: 0
+4 -8
View File
@@ -18,13 +18,9 @@ MonoBehaviour:
cardIcon: {fileID: 21300000, guid: b86682305b7af4a5983b9f24110d7055, type: 3}
unitPrefab: {fileID: 3933539425749946856, guid: 6be579752d2424feea054ce267928002,
type: 3}
manaCost: 5
cooldownTime: 1
productionInterval: 12
buildingCost: 180
baseMaxHealth: 450
baseAttackPower: 52
baseMaxHealth: 520
baseAttackPower: 78
baseMoveSpeed: 2
healthPerLevel: 42
attackPerLevel: 4
healthPerLevel: 50
attackPerLevel: 6
moveSpeedPerLevel: 0
+17
View File
@@ -0,0 +1,17 @@
{
"playerId": "local_player",
"unlockedCharacters": [
{ "characterId": "human_soldier", "level": 1, "starLevel": 0 },
{ "characterId": "archer", "level": 1, "starLevel": 0 },
{ "characterId": "shield_guard", "level": 1, "starLevel": 0 },
{ "characterId": "mage", "level": 1, "starLevel": 0 },
{ "characterId": "elite_soldier", "level": 1, "starLevel": 0 }
],
"currentDeck": [
"human_soldier",
"archer",
"shield_guard",
"mage",
"elite_soldier"
]
}
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: Dysb53+uBnuViZx8OITJEoQ7aqi4os5NaDjdLztQMe221+thGhMImx0=
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+42
View File
@@ -0,0 +1,42 @@
# PlayerData.json 字段说明
`PlayerData.json` 是玩家动态数据的本地原型,正式版由 Java 后台接口返回相同结构。标准 JSON 不支持 `//` 注释,因此字段说明单独维护在本文件。
## 根字段
| 字段 | 类型 | 说明 |
|---|---|---|
| `playerId` | string | 玩家唯一标识;本地原型使用 `local_player`,正式版由服务器返回。 |
| `unlockedCharacters` | array | 玩家已解锁的卡牌角色列表。 |
| `currentDeck` | string[] | 当前出战卡组,内容是 `characterId`,塔防第一版默认 5 个位置。 |
## unlockedCharacters 子项
| 字段 | 类型 | 说明 |
|---|---|---|
| `characterId` | string | 对应 `Assets/Resources/Data/` 中 CharacterData 的 `characterId`。 |
| `level` | int | 玩家拥有的角色等级,从 1 开始。用于计算英雄最终生命、攻击和移速。 |
| `starLevel` | int | 玩家拥有的角色星级;当前阶段保留字段,暂不参与基础数值计算。 |
## 数据职责
```text
CharacterData
= 项目静态配置:Prefab、头像、角色名称、基础属性、升级成长
PlayerData.json
= 玩家动态数据:解锁、等级、星级、当前卡组
Level1-Waves.json
= 关卡动态数据:波次、敌人 ID、数量、生成间隔、生成位置
```
玩家英雄最终属性公式:
```text
最终生命 = baseMaxHealth + (level - 1) × healthPerLevel
最终攻击 = baseAttackPower + (level - 1) × attackPerLevel
最终移速 = baseMoveSpeed + (level - 1) × moveSpeedPerLevel
```
普通波次小兵读取 CharacterData 的 1 级基础属性,不读取玩家等级、星级、解锁状态或卡组数据。
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: WX8ftn+lUnO/OA90hvJwVJF0q/CUv0rPl4eYGXGJxfmzd7oxi+bozqw=
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: