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

TShit.cs和Star.cs

TShit.cs和Star.cs代码一样
TShit
(便便塔)是一个继承自TowerPersonalProperty的塔脚本。从代码量上看,它非常简洁,只重写了Start()Update()方法,没有添加任何新的字段或逻辑。

这么简单的脚本有什么用?
实际上,它代表了绝大多数普通塔的标准模板——攻击行为完全由
父类TowerPersonalProperty提供,子类只需根据自身特点微调初始化或攻击节奏即可
便便塔的特殊效果(减速 debuff)实际上是在子弹脚本TshitBullect)中实现的,而不是在塔脚本中。

核心作用

作用说明
标识塔的类型通过类名TShit区分不同塔(如便便塔、水晶塔、风车塔等),便于对象池加载、子弹关联等。
调用父类初始化Start()中调用base.Start(),执行父类的通用初始化(设置升级/出售价格、获取动画组件、初始化攻击计时器等)。
提供攻击节奏Update()中实现计时攻击逻辑(CD 管理),与父类的攻击方法Attack()配合。
预留扩展点如果未来便便塔需要特殊行为(如攻击时额外播放屎特效),可以在子类中重写相应方法,而不影响其他塔。

注意:这个脚本并没有重写Attack()方法,因此攻击时实际执行的是
父类TowerPersonalProperty.Attack()—— 生成普通的子弹预制体。而便便子弹的 debuff 效果是由子弹脚本TshitBullect通过读取towerLevel自行计算的,与塔脚本无关

生命周期函数

protected override void Start() 重写方法

  • protected override:重写父类的虚方法。

  • base.Start():调用父类的Start,完成通用初始化:

    • 获取GameController单例。

    • 计算升级价格(price * 1.5f)和出售价格(price / 2)。

    • 查找tower子物体上的Animator组件。

    • 初始化攻击计时器timeVal = attackCD(让塔可以立刻攻击)。

  • 便便塔没有额外的初始化工作,所以只调用基类即可。

protected override void Update() 重写方法

protected override void Update () { if (GameController.Instance.isPause || GameController.Instance.gameOver) { return; } if (targetTrans==null) { return; } if (timeVal>=attackCD/GameController.Instance.gameSpeed) { timeVal = 0; Attack(); } else { timeVal += Time.deltaTime; } }
  1. 游戏状态检查:若游戏暂停或结束,直接返回,不进行任何攻击判定。

  2. 目标有效性检查:若当前锁定目标为空(targetTrans == null),返回。

  3. 攻击CD控制

    • 计算当前攻击阈值:attackCD / GameController.Instance.gameSpeed(游戏速度越快,阈值越小,攻击频率越高)。

    • 若计时器达到阈值,则:

      • 重置计时器timeVal = 0

      • 调用父类的Attack()方法发射子弹。

    • 否则累加timeVal += Time.deltaTime


为什么这个脚本这么简单?

这体现了面向对象设计中的模板方法模式

  • 父类TowerPersonalProperty提供了塔的通用框架:升级、出售、攻击 CD 管理(在父类 Update 中)、旋转、子弹生成等。

  • 子类可以根据需要选择性重写部分行为:

    • 如果塔的行为与父类完全一致,那么子类只需一个空的StartUpdate(甚至可以不重写 Update,直接继承父类的),但这里重写了 Update 去掉了旋转。

    • 如果塔的行为特殊(如水晶塔的持续激光),则重写更多方法。

TShit代表了一类最普通的塔:周期发射子弹,子弹自身携带特殊效果(减速)。塔本身不需要任何特殊逻辑,因此子类代码极少。

与便便子弹(TshitBullect)的协作

  • 便便塔发射的子弹预制体是TshitBullect(在父类Attack()中通过资源路径加载)。

  • 子弹在Start()中根据towerLevel计算 debuff 强度和持续时间。

  • 子弹命中怪物后,发送DecreaseSpeed消息,施加减速效果。

所以便便塔的“特殊性”完全体现在子弹上,而非塔本身。这是一个职责分离的好例子:塔只管发射,子弹管特殊效果。

http://www.cnnetsun.cn/news/2656249.html

相关文章:

  • 保姆级教程:在Linux服务器上配置PCIe AER,让你的系统错误无处遁形
  • 【AI工具订阅费用优化黄金法则】:20年IT架构师亲授7大降本策略,立省40%+年度支出
  • 别再一上来就让 AI 开工:先让它“拷问”你,返工真的会少很多
  • 《星辰变归来》:官方下载解锁新玩法,6.4公测打破修仙刻板印象
  • Ai2Psd:专业矢量设计工作流的关键桥梁工具
  • 2026年5月电磁流量计厂家十大品牌口碑盘点——选型推荐看这里!
  • 别再乱找激活工具了!手把手教你用记事本写一个自己的Win10 KMS激活脚本(.bat文件)
  • code-workspace是什么?
  • 硬核盘点!2026AI论文写作工具大盘点(覆盖 99% 毕业论文需求)
  • AI写教材新玩法,低查重工具助力,快速打造精品教材!
  • 别再只会用unittest了!用Pytest+Requests给你的接口测试升个级(附完整插件清单)
  • 开源项目吐槽大会:深度体验JVS低代码框架,该夸的夸,该骂的骂
  • AI专著生成秘籍大公开!4款AI工具助力,快速完成20万字专著写作!
  • 终极罗技鼠标压枪宏配置指南:3步实现PUBG职业级压枪效果
  • 如何高效下载文档:kill-doc工具终极使用指南
  • 面向AI芯片分布式系统的模型感知运行时内核:DLOS v2.0设计与评估
  • 基于ESP32-C3与太阳能供电的物联网植物监测系统全解析
  • 基于Arduino与MQ-35传感器搭建桌面空气质量监测站
  • DIY纯物理开关RGB混色灯牌:零编程实现七色光效的电子入门项目
  • 3步完成CPU单核稳定性测试:CoreCycler终极指南
  • 通用逆变板修复CCFL背光显示器:原理、适配与实战经验
  • 从零搭建低成本机器人平台:Arduino/ESP32与L298N电机驱动实战
  • 如何构建高效多平台直播弹幕采集系统:开源工具BarrageGrab的完整实战指南
  • WrenAI完整指南:如何为AI智能体构建企业数据上下文层
  • 2026.5.30-中国动力工程学会-注册,需要审核, 不知道是否免费一年会费。
  • Sora 2世界模型技术白皮书深度拆解(2024年唯一获OpenAI内部验证的第三方逆向推演)
  • 番茄小说下载器完整指南:三步实现永久离线阅读
  • 从攻击者视角复盘:DVWA在Kali上的三种部署方式(原生/Docker/PhpStudy)怎么选?
  • 别让一个DDL锁死你的生产库:Oracle大表加字段的完整避坑指南
  • 代码审计教程:常见漏洞代码审计方法 零基础入门到精通