返回列表
mayaAPI

商业脚本插件制作

脚本插件,源代码

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/