Unity2.5D视角肉鸽项目架构
基于Spine和2.5D视角,设计了一个清晰的项目架构。这个结构兼顾了肉鸽游戏的特性、Spine的工作流和2.5D的技术要求。
tree
title Spine 2.5D肉鸽游戏项目架构
:--- 1. 项目根目录:--- 1.1 Art(美术资源):--- Spine角色:--- Spine敌人:--- Spine特效:--- 场景图素:--- UI资源:--- 图标资源:--- 1.2 Scripts(代码模块):--- 核心系统:--- 角色系统:--- 游戏逻辑:--- 数据系统:--- 工具类:--- 1.3 Prefabs(预制体):--- 角色预制体:--- 敌人预制体:--- 道具预制体:--- 场景元素:--- UI预制体:--- 1.4 Scenes(场景):--- 核心场景:--- 游戏场景:--- 1.5 Settings(配置和设置):--- ScriptableObjects:--- 游戏设置:--- 音效管理:--- 1.6 Audio(音效资源):--- 背景音乐:--- 音效资源:--- 1.7 ThirdParty(第三方插件):--- Spine运行时:--- 其他插件
详细模块说明
1.1 Art(美术资源)
Art/
├── SpineCharacters/ # Spine角色资源
│ ├── Hero/ # 主角
│ │ ├── Base/ # 基础骨骼和动画
│ │ ├── Skins/ # 皮肤部件
│ │ │ ├── Weapons/ # 武器皮肤
│ │ │ ├── Armors/ # 护甲皮肤
│ │ │ └── Helmets/ # 头盔皮肤
│ │ └── Animations/ # 动画文件
│ ├── Enemies/ # 敌人角色
│ │ ├── Goblin/
│ │ ├── Skeleton/
│ │ └── Boss/
│ └── NPCs/ # NPC角色
├── SpineEffects/ # Spine特效
│ ├── WeaponTrails/ # 武器轨迹
│ ├── MagicCircles/ # 魔法阵
│ └── HitEffects/ # 受击特效
├── SceneTiles/ # 场景图素
│ ├── IsometricTiles/ # 等角视角瓦片
│ ├── Backgrounds/ # 背景元素
│ └── Props/ # 场景道具
├── UI/ # UI资源
│ ├── MainMenu/
│ ├── HUD/
│ └── Dialogs/
└── Icons/ # 图标资源├── Items/├── Skills/└── StatusEffects/
1.2 Scripts(代码模块)
Scripts/
├── CoreSystems/ # 核心系统
│ ├── GameManager.cs # 游戏总管理器
│ ├── SceneLoader.cs # 场景加载器
│ ├── EventSystem.cs # 事件系统
│ ├── ObjectPool.cs # 对象池
│ └── SaveSystem.cs # 存档系统
├── CharacterSystems/ # 角色系统
│ ├── SpineCharacterController.cs # Spine角色控制器
│ ├── SpineEquipmentSystem.cs # Spine装备系统
│ ├── PlayerInput.cs # 玩家输入
│ ├── CharacterStats.cs # 角色属性
│ ├── HealthSystem.cs # 生命系统
│ └── ManaSystem.cs # 魔法系统
├── GameplaySystems/ # 游戏逻辑
│ ├── Roguelike/ # 肉鸽核心系统
│ │ ├── RoomGenerator.cs # 房间生成
│ │ ├── ItemGenerator.cs # 道具生成
│ │ ├── EnemySpawner.cs # 敌人生成
│ │ └── RunManager.cs # 单局管理器
│ ├── Combat/ # 战斗系统
│ │ ├── DamageSystem.cs # 伤害计算
│ │ ├── ProjectileSystem.cs # 投射物系统
│ │ └── AISystem.cs # AI系统
│ ├── Inventory/ # 背包系统
│ │ ├── InventoryManager.cs # 库存管理
│ │ ├── ItemPickup.cs # 道具拾取
│ │ └── EquipmentManager.cs # 装备管理
│ └── Interaction/ # 交互系统
│ ├── ChestInteraction.cs # 宝箱交互
│ └── NPCInteraction.cs # NPC交互
├── DataSystems/ # 数据系统
│ ├── ScriptableObjects/ # 数据配置
│ │ ├── CharacterData/
│ │ ├── ItemData/
│ │ ├── EnemyData/
│ │ └── RoomData/
│ └── Config/ # 配置文件
│ ├── GameBalance.cs # 游戏平衡配置
│ └── DifficultySettings.cs # 难度设置
└── Utilities/ # 工具类├── Extensions/ # 扩展方法├── Helpers/ # 辅助类├── EditorTools/ # 编辑器工具└── DebugTools/ # 调试工具
1.3 Prefabs(预制体)
Prefabs/
├── Characters/ # 角色预制体
│ ├── Player/ # 玩家
│ │ ├── PlayerBase.prefab # 基础玩家
│ │ └── PlayerVariants/ # 职业变体
│ └── Enemies/ # 敌人
│ ├── Common/ # 普通敌人
│ └── Elite/ # 精英敌人
├── Items/ # 道具预制体
│ ├── Weapons/ # 武器
│ ├── Consumables/ # 消耗品
│ └── Equipment/ # 装备
├── SceneElements/ # 场景元素
│ ├── Rooms/ # 房间
│ ├── Props/ # 可交互道具
│ └── Portals/ # 传送门
└── UI/ # UI预制体├── HUD/ # 游戏内UI├── Menus/ # 菜单└── Popups/ # 弹窗
1.4 Settings(配置和设置)
Settings/
├── ScriptableObjects/ # 数据资产
│ ├── Characters/ # 角色数据
│ │ ├── HeroData/ # 英雄数据
│ │ └── EnemyData/ # 敌人数据
│ ├── Items/ # 道具数据
│ │ ├── WeaponSO.cs # 武器数据
│ │ ├── ArmorSO.cs # 护甲数据
│ │ ├── ConsumableSO.cs # 消耗品数据
│ │ └── ItemDatabase.cs # 道具数据库
│ ├── GameSettings/ # 游戏设置
│ │ ├── RoomConfigSO.cs # 房间配置
│ │ ├── SpawnConfigSO.cs # 生成配置
│ │ └── BalanceConfigSO.cs # 平衡配置
│ └── SpineConfig/ # Spine配置
│ ├── AnimationConfigSO.cs # 动画配置
│ └── SkinConfigSO.cs # 皮肤配置
├── Graphics/ # 图形设置
│ ├── QualitySettings/ # 画质设置
│ └── PostProcessing/ # 后处理配置
└── Input/ # 输入设置├── InputActions.inputactions # 输入配置└── ControllerMapping.cs # 手柄映射
核心技术实现要点
Spine角色控制器架构
// SpineCharacterController.cs 核心结构
public class SpineCharacterController : MonoBehaviour
{[Header("Spine References")]public SkeletonAnimation skeletonAnimation;public Skeleton skeleton;[Header("2.5D Settings")]public float isoSortOffset = 0.1f; // 等距排序偏移// 组件引用private CharacterStats stats;private SpineEquipmentSystem equipment;private HealthSystem health;void Update(){UpdateIsometricSorting(); // 每帧更新2.5D排序}void UpdateIsometricSorting(){// 基于Y轴位置计算渲染排序float sortValue = -(transform.position.y * 100) + isoSortOffset;skeletonAnimation.MeshRenderer.sortingOrder = Mathf.RoundToInt(sortValue);}
}
装备系统与Spine皮肤集成
// SpineEquipmentSystem.cs
public class SpineEquipmentSystem : MonoBehaviour
{private Skin combinedSkin;public void EquipItem(ItemSO item){// 1. 获取对应的Spine皮肤Skin itemSkin = skeleton.Data.FindSkin(item.spineSkinName);// 2. 添加到组合皮肤combinedSkin.AddSkin(itemSkin);// 3. 应用并刷新skeleton.SetSkin(combinedSkin);skeleton.SetSlotsToSetupPose();// 4. 触发装备事件GameEvents.OnItemEquipped?.Invoke(item);}
}
这个架构设计确保了:
- 模块清晰:各系统职责明确,便于团队协作
- 扩展性强:易于添加新功能和新内容
- 维护性好:基于组件和ScriptableObject的设计
- 性能优化:对象池、事件系统等优化措施
- 工作流顺畅:Spine资源与代码的完美集成
建议按照这个结构创建文件夹,然后从核心系统开始逐步实现各个模块。
