能否支持/如何实现某个组件引用其他组件的属性?

这个问题其实是动态构造Prefab如何传参的延伸。一般来说是写一个组件X放进Prefab根节点,然后

node = instantiate(somePrefab);
node.getComponent(X).provideArgs();

但是这样一来代码和编辑器内的节点树组件挂载情况产生了耦合,也让Prefab加载难以封装成通用逻辑。

考虑如下场景:

有一个组件名为Player。

然后有一个预制体PlayerInfo,内部众多节点上的组件都有一个属性,类型为Player。换句话说,这些组件都依赖Player才能工作。

由于这个预制体是动态创建的,所以不可能把PlayerInfo拖进场景然后把场景里的Player关联到这些属性上。

假设在PlayerInfo预制体根节点上有组件DependencyProvider,然后DependencyProvider对外暴露一个名为player,类型为Player的属性,那么在编辑器上就可以将player关联到PlayerInfo内部的每一个组件上,就好像预制体内某处真的有一个Player组件一样。

这个其实就是依赖注入的思路,在Prefab内部可以根据业务需要自由组合Component,代码不需要知道Prefab的内部结构,只需要针对DependencyProvider的公共接口进行操作。

问题来了,现在Cocos的编辑器不支持属性引用其他组件的属性,只能引用当前节点树存在的其他节点和组件。纯代码肯定是可以实现的,但有什么对编辑器友好的变通方法吗?以及官方打算支持这种引用吗?