脚本插件,源代码
1.不会暴露源代码给外界,别人无法修改
2.是一种数字资产
3.方便修改,解决误触的问题
脚本打包流程
1.什么是包,有什么用?
包可以让文件树更清晰,更便于传输的文件结构
如果不打包,结构会很混乱,增加后期维护成本
warning会打印在
中也会在脚本编辑器里
UI层:
class CreateCubeTool(MayaQWidgetBaseMixin, QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle("立方体创建工具")
self.resize(300, 100)
# 界面样式
self.setStyleSheet("""
QDialog { background-color: #2c2c2c; }
QPushButton {
background-color: #4a90e2;
color: white;
border: none;
border-radius: 6px;
padding: 10px;
font-size: 14px;
}
QPushButton:hover { background-color: #357abd; }
""")
# 布局
layout = QVBoxLayout()
btn = QPushButton("创建立方体")
btn.clicked.connect(create_Cube)
layout.addWidget(btn)
self.setLayout(layout)
槽,实现按钮的业务逻辑层
def create_Cube(name="MyCube"):
if cmds.objExists(name):
cmds.warning(f"物体 {name} 已存在!")
return
cmds.polyCube(
name=name,
width=1,
height=1,
depth=1
)
cmds.select(name)
print("创建成功")
一个调用的入口,调用层,调用的是 CreateCubeTool(MayaQWidgetBaseMixin, QDialog):
def show():
global window
try:
window.close()
except:
pass
window = CreateCubeTool()
window.show()
show()
并在其中通过桥调用了槽 btn.clicked.connect(create_Cube)
可以总结为:明确文件的结构树
script/
├── ui_Cube.py ← 前端UI 文件
├── logic_Cube.py ← 逻辑层文件
└── run_tool.py ← 启动文件
明确文件头的调用关系:
调用层调用了UI层,UI层调用了逻辑层。也可以理解为:
主程-----调用-----UI
UI-------调用------逻辑层
创建文件夹,放入文件:
script/creatCube/
├── __init__.py ← 新建空文件改名(双下划线,包固定文件名)
├── ui_Cube.py
├── logic_Cube.py
└── run_tool.py ← __init__.py 是包启动文件,这个文件后缀改为txt备用
在maya控制台输入后,运行即可
import myTool
myTool.show()
1.写好总文件(UI部分,逻辑部分,调用部分)
2.文件关联逻辑:调用文件-UI文件-逻辑文件
3.调用文件的文件名必须是__init__.py
4.调用文件要使用热加载(重载)
5.分离出的文件不要有冗余,变量名和逻辑不要改变
6.pyc转py网址: https://www.decompiler.com/