当前位置: 首页 > news >正文

【unity实战】Unity游戏开发:如何用ScriptableObject与序列化多态实现可复用的模块化效果系统?

文章目录

  • 前言
  • 方案一:ScriptableObject实现
    • 1、创建效果基类
    • 2、实现具体效果
    • 3、卡牌数据配置
    • 4、卡牌执行逻辑
    • 5、创建不同的效果数据和卡牌数据
    • 6、创建卡牌1和卡牌2实例
    • 7、效果
  • 方案二:序列化多态实现
    • 1、效果基类
    • 2、具体效果实现
    • 3、卡牌数据配置
    • 4、卡牌执行逻辑
    • 5、创建不同的卡牌数据
    • 6、创建卡牌1和卡牌2实例
    • 7、运行效果
  • 方案选型建议
  • 专栏推荐
  • 完结

前言

在游戏开发中,我们经常需要实现一个对象触发多种不同效果的功能。以卡牌游戏为例:

  • 卡牌1使用后抽1张卡

  • 卡牌2使用后抽1张卡并造成5点伤害

  • 卡牌3使用后造成1点伤害

如果把这些效果都硬编码在卡牌脚本里,会导致以下问题:

  • 代码重复 - 相同效果需要在多个卡牌中重复编写

  • 难以维护 - 修改效果需要查找所有相关卡牌

  • 扩展困难 - 新增效果类型需要修改核心代码

本文将介绍两种模块化设计方案,通过将效果与卡牌解耦,实现更灵活、可维护的系统。

方案一:ScriptableObject实现

核心思路:使用ScriptableObject(SO)为每种效果创建独立的数据资产,卡牌通过组合这些资产实现不同效果。如果你已经有一定的开发经验,对这种方式一定不陌生。

1、创建效果基类

using UnityEngine
http://www.dtcms.com/a/332392.html

相关文章:

  • ABP vNext+ WebRTC DataChannel 低延迟传感推送
  • 物联网(IoT)系统中,通信协议如何选择
  • C++——分布式
  • Al大模型-本地私有化部署大模型-大模型微调
  • 图像识别控制技术(Sikuli)深度解析:原理、应用与商业化前景
  • Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录
  • 後端開發Python篇
  • StarRocks集群部署
  • 从 0 到 1 玩转Claude code(蓝耘UI界面版本):AI 编程助手的服务器部署与实战指南
  • Xget:为您的开发工作流解锁极致速度
  • 清除 pnpm 缓存,解决不同源安装依赖包失败的问题
  • “大模型”技术专栏 | 浅谈基于 Kubernetes 的 LLM 分布式推理框架架构:概览
  • 力扣 hot100 Day74
  • Floyd 判圈算法(龟兔赛跑算法)
  • LeetCode热题100--146.LRU缓存--中等
  • SSL和TLS协议的消息认证码(MAC)
  • Grafana 与 InfluxDB 可视化深度集成(一)
  • Grafana 与 InfluxDB 可视化深度集成(二)
  • LeetCode 刷题【42. 接雨水】
  • RecyclerView 性能优化:从原理到实践的深度优化方案
  • 新手向:Python函数定义与参数传递(位置参数、关键字参数、默认参数)
  • electron之win/mac通知免打扰
  • 什么是接口?PHP如何使用 SessionHandlerInterface 接口实现Session自定义会话数据存储
  • cloudflare缓存配置
  • 【Mysql语句练习】
  • 20250815在荣品RD-RK3588-MID开发板的Android13下点卡迪的7寸LCD屏
  • Redisson分布式锁实战指南:原理、用法与项目案例
  • LINUX软件编程 -- IO
  • Microsoft Visual Studio常用快捷键和Windows系统常用快捷键的整理
  • python合并两个字典