ModelTranslator: 菜单转换取消时用 taskkill 杀进程树,python -u 实时输出
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
3a17c96220
commit
18b40d1f67
@@ -60,6 +60,8 @@ namespace XGame.Editor
|
|||||||
{
|
{
|
||||||
EditorApplication.update -= OnUpdate;
|
EditorApplication.update -= OnUpdate;
|
||||||
SavePrefs();
|
SavePrefs();
|
||||||
|
if (_proc != null)
|
||||||
|
UnityEngine.Debug.LogWarning("[模型转换] 窗口关闭或脚本重编译中止了正在进行的转换");
|
||||||
KillProc();
|
KillProc();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,7 +179,7 @@ namespace XGame.Editor
|
|||||||
{
|
{
|
||||||
FileName = _pythonPath,
|
FileName = _pythonPath,
|
||||||
Arguments = string.Format(
|
Arguments = string.Format(
|
||||||
"\"{0}\" \"{1}\" -o \"{2}\" --max-size {3} --blender \"{4}\"",
|
"-u \"{0}\" \"{1}\" -o \"{2}\" --max-size {3} --blender \"{4}\"",
|
||||||
script, _fbxPath, Path.Combine(RepoRoot, outRel), _maxSize, _blenderPath),
|
script, _fbxPath, Path.Combine(RepoRoot, outRel), _maxSize, _blenderPath),
|
||||||
WorkingDirectory = RepoRoot,
|
WorkingDirectory = RepoRoot,
|
||||||
UseShellExecute = false,
|
UseShellExecute = false,
|
||||||
@@ -267,10 +269,17 @@ namespace XGame.Editor
|
|||||||
private void KillProc()
|
private void KillProc()
|
||||||
{
|
{
|
||||||
if (_proc == null) return;
|
if (_proc == null) return;
|
||||||
try { if (!_proc.HasExited) _proc.Kill(); }
|
try
|
||||||
|
{
|
||||||
|
// 用 taskkill /T 连 blender 子进程一起杀(Mono BCL 无 Kill(tree) 重载)
|
||||||
|
if (!_proc.HasExited)
|
||||||
|
Process.Start(new ProcessStartInfo("taskkill", "/PID " + _proc.Id + " /T /F")
|
||||||
|
{ UseShellExecute = false, CreateNoWindow = true });
|
||||||
|
}
|
||||||
catch { /* 进程可能刚好退出 */ }
|
catch { /* 进程可能刚好退出 */ }
|
||||||
_proc.Dispose();
|
_proc.Dispose();
|
||||||
_proc = null;
|
_proc = null;
|
||||||
|
lock (_lock) _pending.Clear(); // 丢弃残留输出,避免插在 [已取消] 之后
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user