有时,回调可能很有用,例如,在执行“文件 > 新建”(File > New)、“保存”(Save)或“加载”(Load)后,可以使用回调来自动执行重复任务或设置工作环境。例如,这种应用包括在执行“文件 > 新建”(File > New)后设置节点监察员或回调以从文件加载设置,或创建模板环境。但是,这些操作可能会导致场景不必要地变脏,这可能会使用户产生混淆,在不需要保存场景时认为需要保存场景。
若要解决此问题,可以使用 ` file -modified “true”|”false” ` 命令和标志重置场景的脏状况。
例如,请参考 Maya 安装目录中的 $MAYA_LOCATION/scripts/others/supportRenderers.mel 文件。
加载新场景时,Maya 会检查当前渲染器是否可用,如果不可用,Maya 会将当前渲染器设置为首选渲染器。此 setAttr 操作会导致场景变脏。如果只是打开了文件而未进行其他修改,则不必弄脏场景。
以下代码段执行下列操作:
{ int $wasModified = `file -query -modified`; setAttr "defaultRenderGlobals.currentRenderer" -type "string" $preferredRenderer; // If the scene wasn't dirtied prior to setting the current renderer, // we want to set the scene as not modified to avoid dirtying the scene. if (!$wasModified) { file -modified false; } }