```</p><p>loos-hcb/code-block </p><p>paragraph </p><p>Plug-in的代码是有一个比较严格的格式的。首先是一定要有initializePlugin和uninitializePlugin这两个函数,分别是启用插件之后的动作和停用插件之后的动作。官网上的示例里是启用插件时注册了一个命令,注册不成功的话弹出错误警告,同样停用插件时注销命令,注销不成功的话弹出错误警告。</p><p>paragraph </p><p>paragraph </p><p>因为切换渲染层只涉及回调函数,不涉及命令也不涉及节点,所以可以省略定义命令或者节点的类的部分。把一开头的脚本里创建回调的部分放在initializePlugin函数里,因为还要考虑到停用插件时删掉回调函数,所以这里需要用一个全局的OM.MCallbackIdArray类的实例,把回调函数装进去。在uninitializePlugin函数里需要做的事情就是把回调函数都删掉就可以了。删掉回调函数需要用到OM.MMessage.removeCallbacks这个方法,把之前宣言的全局回调函数队列作为参数传递进去。</p><p>paragraph </p><p>paragraph </p><p>另外maya_useNewAPI这个函数的作用只是告诉maya这个插件是用api 2.0写的。函数不需要有内容,只要定义了就行。如果用api 2.0写了插件却没有定义这个函数的话插件载入的时候会报错(因为疏忽了这个花了3个多小时一直在debug…)</p><p>paragraph </p><p>paragraph </p><p>最后再把回调函数调用的切换渲染层的两个处理加进来这个插件就算完成了。把它保存到plug-ins文件夹里(通常是C:\Users\用户名\Documents\maya\版本号\plug-ins,没有的话就创建一个),再启动maya的话他就会出现在plug-in manager的窗口里了。把加载和自动加载都勾上的话maya保存的时候就会自动切换到默认渲染层,保存完后再切回之前的渲染层了。</p><p>paragraph </p><p>heading </p><p>## 总结
</p><p>heading </p><p>paragraph </p><p>到现在总共使用了4种方法来实现保存文件时自动切换渲染层。下面总结了各种方法的优缺点(以代码知识相对少的用户视角)</p><p>paragraph </p><p>table {"align":"center","className":"is-style-regular"} </p><p> class="wp-block-table aligncenter is-style-regular](
>| 基于命令的脚本 | 导入回调函数的脚本 | userSetup方式自动启动 | plug-in方式
| ・操作简单<br>・方便终止 | ・操作简单<br>・关闭maya位置都处于启用状态 | 无需手动执行脚本 | plug-in管理器里通过图形界面来选择启用还是不启用
| ・每次保存都需要执行脚本<br>・不适用于其他情形的保存文件 | ・不会随maya自动启动<br>・只有关闭maya才能终止 | ・需要写userSetup文件、保存管理python文件<br>・只有关闭maya才能终止 | 可能没有吧
</p><p>table </p><p>paragraph </p><p>本文转载自 [https://modelerrigs.wordpress.com/2019/04/05/mayawswitchrenderlayerduringsave-cn/" data-type="URL" data-id="https://modelerrigs.wordpress.com/2019/04/05/mayawswitchrenderlayerduringsave-cn/" target="_blank" rel="noreferrer noopener](Tong Si)</p><p>paragraph</p>