您可以创建一个能够应用至场景对象上现有动画控制器的 MCG 控制器,且将其输出用作输入。这为以下工作流提供了一种替代方式:先应用输入中最顶端的控制器,然后应用其他控制器。
要执行此操作,图形必须具有接收子控制器输出的参数节点。然后,编辑“自定义 UI”属性,为 copy 事件添加处理程序。
也可以为 setValue val commit 事件添加处理程序。此处理程序通过子控制器中的值传递,并且使您可以如同子控制器仍是活动控制器一样与其进行交互。例如,这允许您创建一个应用于标准位置控制器顶部以钳制位置的 MCG 控制器,并且仍支持您使用“选择并移动”工具在视口中移动对象。
on copy source do
(
--Grab the current controller and use its value to drive this controller.
try
(
this.SubController.controller = source
)
catch
(
this.SubController = source
)
return true
)
on setValue val relVal commit do
(
--Set the value of the subController.
--This controller acts like a pass-through.
try
(
SubController.value = val
)
catch
(
SubController = val
)
)
请注意,某些控制器类型具有控制器和值属性,而对于其他控制器类型,您可以直接设置控制器本身。可以使用上文中的 try/catch,或者仅使用适合特定参数类型的块。