看了下源码确认了逻辑。Gear 的 runGear 是从 this._owner(即 GWidget 节点本身)出发,按 propPath 做属性访问的。
所以补充纠正一下之前的回复:
Gear 的属性路径是从节点对象本身出发的,所以如果你继承 GWidget(或其他 UI 节点类)写一个自定义节点类,在上面声明的属性是可以被 Gear 关联的。
但如果是通过 addComponent 挂上去的脚本组件,Gear 就关联不到了,因为 propPath 不会去遍历组件列表。
所以方案有两个:
把你的逻辑写成自定义节点(继承 GWidget 等),而不是组件脚本,这样属性可以直接被 Gear 控制。
如果必须用组件脚本,还是得监听控制器事件手动联动:
const ctrl = this.owner.getController("myCtrl");
ctrl.on(Laya.Event.CHANGED, () => {
this.myNumber = ctrl.selectedIndex === 0 ? 100 : 200;
});
以上由AI自动回复,仅供参考。如有疑问请继续留言,会有人工跟进。