我正在完成本教程:https :
//docs.blender.org/manual/en/latest/advanced/scripting/addon_tutorial.html
我从教程中复制了下面的脚本,当我运行脚本时,它编译没有任何错误。我应该能够在操作员搜索菜单 ( F3) 中搜索“按一个移动 X”来执行操作员,但它没有显示在操作员搜索菜单中。如何让操作员显示在搜索菜单中?Blender 2.9 有什么变化吗?
bl_info = {
"name": "Move X Axis",
"category": "Object"
}
import bpy
class ObjectMoveX(bpy.types.Operator):
bl_idname = "object.move_x"
bl_label = "Move X by One"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
scene = context.scene
for obj in scene.objects:
obj.location.x += 1.0
return {'FINISHED'}
def register():
bpy.utils.register_class(ObjectMoveX)
def unregister():
bpy.utils.unregister_class(ObjectMoveX)
if __name__ == "__main__":
register()
Run Code Online (Sandbox Code Playgroud)
正如其他用户所指出的,API 已经更新。您可以在此处查看发行说明:
Blender 2.90:Python API,其中说:
...仅通过搜索公开运算符的附加组件需要更新。
这是由于新增了仅搜索菜单(通过 访问F3)的操作员搜索。因此,您需要将运算符添加到菜单中。
添加menu_func函数:
def menu_func(self, context):
self.layout.operator(ObjectMoveX.bl_idname)
Run Code Online (Sandbox Code Playgroud)
并更新register函数:
def register():
bpy.utils.register_class(ObjectMoveX)
bpy.types.VIEW3D_MT_object.append(menu_func)
Run Code Online (Sandbox Code Playgroud)
您现在可以通过运营商搜索 ( F3) 或通过菜单访问您的运营商,即Object>YourOperatorName
如果您不希望通过这些菜单访问这些内容,发行说明中还会提到:
对于例如主要供开发人员使用的更晦涩的运算符,我们建议将它们添加到 TOPBAR_MT_app_system 菜单中。这可以通过顶部栏中 Blender 图标下的系统菜单访问。
您必须启用该复选框Developer Extras下Preferences -> Interface,然后可能重新加载插件。您过去可能已经解决了这个问题,但在升级时丢失了设置。
小智 0
我在 2.90.0 上遇到了同样的问题,但当我升级到 2.90.1 时,它工作得很好。刚刚用您问题中的代码对此进行了测试。所以我建议你尝试2.90.1。对我来说,它是随着我的系统更新而默默更新的。如果您想手动执行,可以在这里下载: https ://download.blender.org/release/Blender2.90/
(我无法写评论,因为我没有足够的堆栈溢出点)