跳到主要内容

主组件、实例与覆盖

组件把重复结构集中在一个主定义中,实例在具体界面引用它。星际翻牌的十二张牌应该共享卡牌结构,而不是十二份互相独立的矩形和文字。

从重复开始,而不是从抽象开始​

先做一张完整卡牌,确认图案、状态标签和边框的关系;再创建主组件 StarMatch/Card。当同类对象开始重复,组件才有清楚的边界。

主组件负责共享结构和默认外观;实例负责位置以及允许的局部配置。实例的主组件更新后,未被覆盖的属性跟随定义;局部覆盖不会被理解为“所有改动都强制抹掉”。

识别三种修改​

修改应放在哪里理由
所有卡牌圆角调整主组件或绑定变量统一更新共享规则
某张牌使用月亮图案实例的 Artwork 属性内容差异不改变组件职责
新增匹配成功状态组件集的 State 变体需要可重复的状态外观

普通实例支持文本、填充等覆盖,但不能任意重排内部图层。Slot 提供指定区域内的内容扩展,是明确的例外。不要为了每次小改动都 Detach;解除实例会切断维护关系。

跟做:十二张牌共享一个来源​

在组件 Section 创建卡牌主定义,再在游戏棋盘建立实例。修改主定义的边框,观察实例更新。随后对一个实例修改图案,确认其他实例不受影响。

最后用 Reset 恢复该项覆盖。恢复的是你选定的属性或对象,操作前确认范围,避免误清除本来需要保留的配置。

请查找棋盘中现有 Card 实例及其主组件。
报告每个实例的 State、Artwork 和覆盖情况。
将统一圆角修改放在主组件或变量上;单张牌内容通过实例属性设置。
保留实例关系,完成后读回 mainComponent 与属性值。

如何判断组件边界​

一个适合组件化的对象有稳定职责、可复用结构和少量可命名的变化。不要把整款游戏都做成一个巨型组件,也不要把每个纯装饰矩形都变成组件。让边界匹配你希望统一修改的范围。

练习与检查​

创建第三个关卡入口时,先判断是现有入口实例还是新组件。说清它与已有入口共享什么、独有差异是什么。若只能通过大量隐藏图层切换完全不同的业务页面,说明组件边界可能过大。

依据:实例覆盖、Slot。核查:2026-10-31。