浅谈如何在Unity里优雅地给原有代码增加功能

概要

由一个简单的问题说起,谈谈如何在Unity里增加功能

包括:

  • 遇到的需求是什么
  • 通过变量实现
  • 通过继承实现
  • 通过组合实现
  • 通过UnityEvent实现
  • 一些关于设计的想法

遇到的需求是什么

知乎上看到这么个问题“unity新手,如何通过选中小球,从而达到只控制这一个小球,而不控制其他小球的效果?”

问题本身很简单,一眼看到我就划走了。

但突然想到可以结合这个问题来聊一聊如何给一个既有的类拓展功能,那就还是浅淡谈吧!

实现方案

实现这个需求有多种方案。

假设我们已经有一个Ball.cs挂在所有的球上,如何实现这个需求?

方案1 使用变量控制

修改Ball.cs。

在Ball.cs里声明一个public的 controllable变量,默认为false。

在触控控制代码前外嵌套一个if/else。即

if(controllable){

//触控控制

}

然后只给要控制的小球开启controllable(在Inspector里勾选它),其他的不动。

这是最简单的方法。

若没有其他的需求,用这个就好了。

但若项目复杂度高点,就需要其他方案了。(否则你的ball.cs会越来越庞大,越来越难维护)

方案2 使用继承

维持Ball.cs不变。

再建一个ControllabeBall.cs是你的可控制小球,Controllab

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NickPansh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值