Blender插件加载研究

匿名 (未验证) 提交于 2019-12-03 00:41:02
  • [x] 解析Blender插件代码加载原理, 为测试做准备

采用方法3的方式, 可以在测试中保证重新加载子模块, 是想要的方式, 代码如下:

_qk_locals = locals()  def register():     if "bpy" in _qk_locals:         print(">>> plugin‘s submodules reload")         from importlib import reload         _modules_loaded[:] = [reload(val) for val in _modules_loaded]         del reload     from bpy.utils import register_class     for mod in _modules_loaded:         for cls in mod.classes:             print(‘>>> register: ‘, cls.__name__)             register_class(cls)

本分析基于Blender2.79b.

  1. 在用户Blender插件目录下创建插件包
    我的测试插件为 C:\Users\yaoyu\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\qk_modeler
  2. __init__.py文件中插入输出代码, 查看效果
  3. 在Blender用户配置的"Add-ons"界面中, 勾选插件.
if "bpy" in locals():     print(‘reload...‘)     from importlib import reload     _modules_loaded[:] = [reload(val) for val in _modules_loaded]     del reload

在__init__.py代码修改之后, 模块第一次重加载时会触发.

_qk_locals = locals()  def register():     if "bpy" in _qk_locals:         print(">>> plugin‘s submodules reload")         from importlib import reload         _modules_loaded[:] = [reload(val) for val in _modules_loaded]         del reload     from bpy.utils import register_class     for mod in _modules_loaded:         for cls in mod.classes:             print(‘>>> register: ‘, cls.__name__)             register_class(cls)

原文:https://www.cnblogs.com/yaoyu126/p/9343251.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!