重构: 面对类结构相似的,重复创造类脚本的解决方法之一

面对类结构相似的,重复创造类脚本的解决方法。

实战:

笔者在开发一款农场类游戏,在做种植相关的挑战系统时,随着植物种类的增多,与植物相关的挑战成本增多,若对每个挑战都创建一个脚本未尝觉得有些麻烦,我想能否像给一个数组赋值那样子,来统一配置挑战内容和编写挑战相关的逻辑的方法呢?

答案自然是肯定的!

我们可以把挑战脚本看作数组的元素,一种数据结构,我们只要在数组声明时候进行逐个赋值即可

对于Challenge.cs脚本内容,我们可以知道,成员变量可以直接赋值,可是函数体中的函数逻辑该如何在外部赋值呢?当然可以使用委托来进行!

好,下面看两个挑战脚本内容,然后尝试来实现最初的想法:像数组赋值那样,在外部直接新建挑战类型对象,以方便快速开发!

来看一下他们的父类:

挑战脚本的内容比较简单,为此我们可以使用几个委托来分别完成对不同函数的"等效赋值"操作;

从下面代码内容可以看到,在外部逻辑调用判断挑战是否开始、结束、达标的函数时候,便会执行

委托,此时在外部赋值的委托中的函数便会执行. 使用委托来解决函数逻辑的脚本外部赋值问题。

先看成员变量:

这里主要使用委托来对函数进行"赋值",实现在外界直接给新创建的类对象赋值。

再看下给外部链式赋值的赋值方法:

这样在外部可以直链式的配置Challenge内容:

对比之前的逐个挑战脚本的开发,降低了重复代码脚本内容,适合快速开发!

之前每新增一个挑战都需要新建一个对应的脚本,比较繁琐。

ok,至此通过解决一个函数逻辑外部赋值的问题(使用委托),来完成对多重复的逻辑挑战内容快速开发!当然,在这里也使用链式赋值的方法,保持代码的简洁性,帮助我们快速初始化挑战内容。