首页/ 第 14 章 · 3D 游戏进阶/ 第 241 课
LESSON 241 · 3D 游戏进阶

3D 角色换装系统

换装系统完成。下一课做角色布娃娃实战。

⏱ 约 15 分钟📊 难度:入门🗂 第 14 章 · 3D 游戏进阶📍 第 241 / 300 课
课程进度
241 / 300

🎯本节学习目标

  • 实现武器挂点
  • 实现装备切换
  • 实现颜色换装

🚀课程导读

“给角色换武器换衣服”是 RPG 标配。本课实现三类换装:挂点、切换、变色。

武器挂点与装备

武器“拿”在手里。

  1. 【挂点】在角色手上/背上建空对象:Hand_R / Back,作为装备挂点。
  2. 【装备模型】武器模型预制体。
  3. 【代码装备】
  4. public Transform handPoint;
  5. private GameObject currentWeapon;
  6. public void EquipWeapon(GameObject weaponPrefab) {
  7. if (currentWeapon != null) Destroy(currentWeapon);
  8. currentWeapon = Instantiate(weaponPrefab, handPoint.position, handPoint.rotation, handPoint);
  9. }
  10. 【说明】Instantiate 时传父物体=挂点,武器跟随手。
  11. 【多装备】武器/盾牌/背包各一个挂点。
  12. 【切换】按 1/2/3 切换不同武器(EquipWeapon 换预制体)。
  13. 【动画配合】不同武器切不同攻击动画(状态机参数)。
  14. 【测试】角色拿上剑、切换盾牌。
  15. 【注意】挂点位置在骨骼下(动动手跟着动)。
  16. 【完成】装备系统“上手”了!
💡
换武器 = 手部挂点 + Instantiate 挂父 + 切换销毁重建。三行。

颜色与部件换装

换色、换部件。

  1. 【颜色换装】改材质颜色:
  2. Renderer r = GetComponentInChildren<Renderer>();
  3. r.material.color = Color.red;
  4. 【多材质】r.materials[i].color 换指定部位(衣服/裤子分材质槽)。
  5. 【部件换装】换身体部件:
  6. GameObject[] parts; // 各部位预制体
  7. public void SetPart(int partIndex, GameObject newPart) {
  8. // 隐藏旧的,实例化新的并挂到对应骨骼挂点
  9. }
  10. 【实现】每个部位(头/身/腿)有多个可选模型,切换。
  11. 【数据】用 ScriptableObject 定义装备(名字/模型/属性)(第 85 课)。
  12. 【背包联动】背包选装备 → 角色换上(第 165 课 + 166 课)。
  13. 【注意】换色要 Copy 材质(material vs materials 区别:直接改 material 会创建实例)。
  14. 【测试】选红色上衣、换头饰。
  15. 【完成】换装系统完整!
  16. 【说明】r.material 会创建材质实例(安全改色不污染共享材质)。
换装三式:挂点(拿武器)、换色(改材质)、换部件(换预制体)。全掌握。

常见错误与排查

错误:改颜色影响所有角色?
原因:改了共享材质
解决:用 renderer.material(创建实例)改色,避免污染共享材质。

动手练习

课后小任务(做出来才算真的学会)

  • 实现武器挂点与切换
  • 实现颜色换装
  • 实现部件换装

本节小结

换装系统完成。下一课做角色布娃娃实战。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课3D 动画进阶(混合树与层)