坡琨 发表于 2025-6-2 23:51:55

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

面对类结构相似的,重复创造类脚本的解决方法。
实战:
笔者在开发一款农场类游戏,在做种植相关的挑战系统时,随着植物种类的增多,与植物相关的挑战成本增多,若对每个挑战都创建一个脚本未尝觉得有些麻烦,我想能否像给一个数组赋值那样子,来统一配置挑战内容和编写挑战相关的逻辑的方法呢?
答案自然是肯定的!
我们可以把挑战脚本看作数组的元素,一种数据结构,我们只要在数组声明时候进行逐个赋值即可
对于Challenge.cs脚本内容,我们可以知道,成员变量可以直接赋值,可是函数体中的函数逻辑该如何在外部赋值呢?当然可以使用委托来进行!
好,下面看两个挑战脚本内容,然后尝试来实现最初的想法:像数组赋值那样,在外部直接新建挑战类型对象,以方便快速开发!

https://img2024.cnblogs.com/blog/3292471/202505/3292471-20250517164540745-1560963526.png
来看一下他们的父类:

挑战脚本的内容比较简单,为此我们可以使用几个委托来分别完成对不同函数的“等效赋值”操作;
从下面代码内容可以看到,在外部逻辑调用判断挑战是否开始、结束、达标的函数时候,便会执行
委托,此时在外部赋值的委托中的函数便会执行. 使用委托来解决函数逻辑的脚本外部赋值问题。
https://img2024.cnblogs.com/blog/3292471/202505/3292471-20250517164605971-880969934.png
先看成员变量:
这里主要使用委托来对函数进行“赋值”,实现在外界直接给新创建的类对象赋值。

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

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

对比之前的逐个挑战脚本的开发,降低了重复代码脚本内容,适合快速开发!
之前每新增一个挑战都需要新建一个对应的脚本,比较繁琐。

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

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

人弧 发表于 2025-11-7 23:02:00

分享、互助 让互联网精神温暖你我

晚能 发表于 2025-12-9 01:40:12

懂技术并乐意极积无私分享的人越来越少。珍惜

盒礁泅 发表于 2026-1-4 01:51:34

东西不错很实用谢谢分享

舒菀菀 发表于 2026-1-17 13:16:01

东西不错很实用谢谢分享

廖彗云 发表于 2026-1-18 14:08:38

新版吗?好像是停更了吧。

威割 发表于 2026-1-18 21:32:29

喜欢鼓捣这些软件,现在用得少,谢谢分享!

羔迪 发表于 2026-1-21 03:11:24

新版吗?好像是停更了吧。

磁呃泵 发表于 2026-1-25 09:08:12

谢谢楼主提供!

裆趾针 发表于 2026-1-26 09:18:54

新版吗?好像是停更了吧。

替攀浮 发表于 2026-1-27 13:39:22

分享、互助 让互联网精神温暖你我

溧久苟 发表于 2026-1-28 08:08:49

鼓励转贴优秀软件安全工具和文档!

汇干环 发表于 2026-2-3 09:23:26

收藏一下   不知道什么时候能用到

富账慕 发表于 2026-2-5 09:57:12

很好很强大我过来先占个楼 待编辑

玲液 发表于 2026-2-8 07:51:56

用心讨论,共获提升!

唐茗 发表于 2026-2-8 11:28:32

谢谢分享,试用一下

计海龄 发表于 2026-2-8 11:34:30

懂技术并乐意极积无私分享的人越来越少。珍惜

揿纰潦 发表于 2026-2-8 17:06:33

前排留名,哈哈哈

劳欣笑 发表于 2026-2-9 02:20:39

用心讨论,共获提升!

仰翡邸 发表于 2026-2-10 04:09:01

感谢分享,下载保存了,貌似很强大
页: [1] 2
查看完整版本: 重构: 面对类结构相似的,重复创造类脚本的解决方法之一