是的,我重写了我的文本框系统3次,而且我还会再做!以下是我学到的几个教训。另外,我对滚动效果很满意,所以我想分享一下。
1)从一开始就了解你的范围,文本框需要支持什么功能?这些功能需要多灵活?因为过多的复杂性会让人头疼,但更糟糕的是,意识到你需要一个新的功能,这个功能需要从头开始重写。尝试在自己身上诚实并提前规划功能。我的情况下,我需要支持每个文本框最多3个按钮、滚动、大小调整、图片支持和分辨率缩放。但也许你需要支持其他东西,比如玩家名称、网络、物品列表、动画文本、600个按钮,你做你想做的,我又何必评判呢?
2)建立一些数据库。不要像我最初那样陷入误区,认为“我只需要十二个文本框,所以我只需在每个适当的脚本或对象中加载每个变量。”相信我,你会经常回到重写或重新格式化文本和布局,但如果你被迫重写或重构你的文本框系统,所有数据都在一个地方会更容易。如果需要,你也可以将数据库值复制到本地变量,以便在飞行时调整它们。你可以使用像DS grid这样的东西,但在我的情况下,我保留了我的数据简单,我使用两个枚举器,一个列出文本框的名称,另一个列出文本框的属性(例如宽度、高度、文本、按钮、附加图片等),然后将这些值存储在一个全局2D数组中,以便可以从任何地方加载任何文本框。
3)避免代码重复到极限。当然,写相同的代码来获取按钮尺寸和按钮按压逻辑以及按钮绘制逻辑会节省你当前的时间,但在长期来看,这会导致bug和混淆,因为你在一个地方调整了一些东西,但忘记在其他地方调整。给自己省点头痛,做正确的事情。
4)输入处理是一个大问题。要么冻结你的游戏每次打开文本框,要么准备好在每个脚本中处理文本框是否打开(至少让它容易一些,创建一个“文本框打开”的布尔值)。直到最近,我已经好几年没有编程了,所以也许所有这些都是显而易见的,但我想它可能会帮助一些人。天哪,我怀念GM7时打开一个文本框只需要一行代码的日子,我甚至想以一种调侃的方式复制我的文本框布局。
P.S. 是的,这里有AI绘画,我不是一个艺术家,但这是一个免费的粉丝游戏,所以不要太生气。
评论 (0)