262 lines
5.2 KiB
Markdown
262 lines
5.2 KiB
Markdown
# MG-Picker Studio - 使用说明
|
||
|
||
## ✅ 功能特性
|
||
|
||
### 窗口管理
|
||
- ✅ **自动检测已打开窗口** - 避免重复打开
|
||
- ✅ **智能显示现有窗口** - 如果窗口已打开,自动显示而不是创建新的
|
||
- ✅ **版本兼容性检测** - 自动选择匹配的插件版本
|
||
|
||
### 版本支持
|
||
- ✅ **Maya 2017-2026+** - 所有版本
|
||
- ✅ **Python 2.7 & 3.x** - 完全兼容
|
||
- ✅ **自动插件选择** - 根据 Maya 版本自动加载对应插件
|
||
|
||
## 📝 使用方法
|
||
|
||
### 基本用法
|
||
|
||
```python
|
||
# 在 Maya Script Editor 中运行
|
||
import animation_tools.mgpicker
|
||
animation_tools.mgpicker.start()
|
||
```
|
||
|
||
### 指定模式
|
||
|
||
```python
|
||
import animation_tools.mgpicker as mgpicker
|
||
|
||
# Animator 模式(默认)
|
||
mgpicker.start(mode=1)
|
||
|
||
# Designer 模式
|
||
mgpicker.start(mode=0)
|
||
```
|
||
|
||
### 强制创建新窗口
|
||
|
||
```python
|
||
import animation_tools.mgpicker as mgpicker
|
||
|
||
# 强制创建新窗口(不推荐,可能导致版本冲突警告)
|
||
mgpicker.start(force_new=True)
|
||
```
|
||
|
||
## 🔧 窗口管理
|
||
|
||
### 自动检测
|
||
|
||
当你第二次调用 `start()` 时,脚本会:
|
||
|
||
1. **检测窗口是否已打开**
|
||
- 检查常见的 MGPicker 窗口名称
|
||
|
||
2. **显示现有窗口**
|
||
- 如果窗口已存在,自动显示并置于前台
|
||
- 避免创建重复窗口
|
||
|
||
3. **避免版本冲突**
|
||
- 防止出现 "Different versions" 警告
|
||
- 保持单一窗口实例
|
||
|
||
### 示例
|
||
|
||
```python
|
||
import animation_tools.mgpicker as mgpicker
|
||
|
||
# 第一次调用 - 创建新窗口
|
||
mgpicker.start()
|
||
# 输出: MG-Picker Studio started in animator mode
|
||
|
||
# 第二次调用 - 显示现有窗口
|
||
mgpicker.start()
|
||
# 输出: MGPicker window already open, bringing to front
|
||
```
|
||
|
||
## ⚠️ 解决的问题
|
||
|
||
### 问题:重复打开窗口导致警告
|
||
|
||
**之前的行为:**
|
||
```
|
||
// Warning: Different versions for the MGPicker scripts detected,
|
||
// to pick up the version other than currently being used,
|
||
// please close existing MGPicker window, restart Maya and try again.
|
||
```
|
||
|
||
**现在的行为:**
|
||
```
|
||
MGPicker window already open, bringing to front
|
||
```
|
||
|
||
### 问题:版本兼容性
|
||
|
||
**自动选择插件:**
|
||
- Maya 2023 → MGPicker_2023x64.mll
|
||
- Maya 2024 → MGPicker_2024x64.mll
|
||
- Maya 2025 → MGPicker_2025x64.mll
|
||
|
||
如果没有完全匹配的版本,会自动选择最接近的兼容版本。
|
||
|
||
## 📋 API 参考
|
||
|
||
### `start(mode=1, force_new=False)`
|
||
|
||
启动 MG-Picker Studio
|
||
|
||
**参数:**
|
||
- `mode` (int): 启动模式
|
||
- `0` - Designer 模式(设计器模式)
|
||
- `1` - Animator 模式(动画师模式,默认)
|
||
- `force_new` (bool): 是否强制创建新窗口
|
||
- `False` - 如果窗口已存在则显示现有窗口(默认,推荐)
|
||
- `True` - 强制创建新窗口(不推荐)
|
||
|
||
**返回:**
|
||
- 无返回值
|
||
|
||
**示例:**
|
||
```python
|
||
import animation_tools.mgpicker as mgpicker
|
||
|
||
# 默认:Animator 模式,自动检测窗口
|
||
mgpicker.start()
|
||
|
||
# Designer 模式
|
||
mgpicker.start(mode=0)
|
||
|
||
# 强制新窗口(不推荐)
|
||
mgpicker.start(force_new=True)
|
||
```
|
||
|
||
### `load_plugin()`
|
||
|
||
加载 MGPicker 插件
|
||
|
||
**返回:**
|
||
- `bool` - 成功返回 True,失败返回 False
|
||
|
||
**示例:**
|
||
```python
|
||
import animation_tools.mgpicker as mgpicker
|
||
|
||
if mgpicker.load_plugin():
|
||
print("Plugin loaded successfully")
|
||
else:
|
||
print("Failed to load plugin")
|
||
```
|
||
|
||
### `is_window_open()`
|
||
|
||
检查 MGPicker 窗口是否已打开
|
||
|
||
**返回:**
|
||
- `bool` - 窗口已打开返回 True
|
||
|
||
**示例:**
|
||
```python
|
||
import animation_tools.mgpicker as mgpicker
|
||
|
||
if mgpicker.is_window_open():
|
||
print("MGPicker window is already open")
|
||
else:
|
||
print("MGPicker window is not open")
|
||
```
|
||
|
||
### `show_existing_window()`
|
||
|
||
显示已存在的 MGPicker 窗口
|
||
|
||
**返回:**
|
||
- `bool` - 成功显示返回 True
|
||
|
||
**示例:**
|
||
```python
|
||
import animation_tools.mgpicker as mgpicker
|
||
|
||
if mgpicker.show_existing_window():
|
||
print("Existing window shown")
|
||
else:
|
||
print("No existing window found")
|
||
```
|
||
|
||
## 🎯 最佳实践
|
||
|
||
### 1. 使用默认行为
|
||
|
||
```python
|
||
# 推荐:让脚本自动处理窗口管理
|
||
import animation_tools.mgpicker as mgpicker
|
||
mgpicker.start()
|
||
```
|
||
|
||
### 2. 检查窗口状态
|
||
|
||
```python
|
||
import animation_tools.mgpicker as mgpicker
|
||
|
||
if not mgpicker.is_window_open():
|
||
mgpicker.start()
|
||
else:
|
||
print("MGPicker is already running")
|
||
```
|
||
|
||
### 3. 在工具架中使用
|
||
|
||
```python
|
||
# 工具架按钮代码
|
||
import animation_tools.mgpicker as mgpicker
|
||
mgpicker.start() # 简单且安全
|
||
```
|
||
|
||
## 🐛 故障排除
|
||
|
||
### 问题:插件加载失败
|
||
|
||
**检查:**
|
||
1. 插件文件是否存在
|
||
2. Maya 版本是否支持
|
||
3. 插件路径是否正确
|
||
|
||
**解决:**
|
||
```python
|
||
import animation_tools.mgpicker as mgpicker
|
||
|
||
# 手动加载插件
|
||
if not mgpicker.load_plugin():
|
||
print("Plugin load failed, check console for details")
|
||
```
|
||
|
||
### 问题:窗口无法显示
|
||
|
||
**解决:**
|
||
```python
|
||
import animation_tools.mgpicker as mgpicker
|
||
|
||
# 强制创建新窗口
|
||
mgpicker.start(force_new=True)
|
||
```
|
||
|
||
## 📞 支持
|
||
|
||
- **官方网站**: https://www.mgland.com/
|
||
- **作者**: Miguel (MG)
|
||
|
||
## ✨ 总结
|
||
|
||
MG-Picker Studio 现在具有智能窗口管理功能:
|
||
|
||
- ✅ 自动检测已打开的窗口
|
||
- ✅ 避免重复创建窗口
|
||
- ✅ 防止版本冲突警告
|
||
- ✅ 兼容所有 Maya 版本
|
||
- ✅ 简单易用的 API
|
||
|
||
只需一行代码即可启动:
|
||
|
||
```python
|
||
import animation_tools.mgpicker
|
||
animation_tools.mgpicker.start()
|
||
```
|