You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity 2022.1打包后检测Discord运行状态失效如何解决

原检测逻辑失效原因

你之前通过匹配Process对象转字符串得到的"System.Diagnostics.Process (Discord)"结果判断进程是否存在,是打包后失效的核心原因:

  • Process.ToString()的输出格式没有统一规范,在Unity编辑器的Mono运行时、打包后的Mono/IL2CPP后端下返回结果可能不一致,直接导致字符串匹配失败。
  • 逻辑没有覆盖Discord的其他官方分支:PTB测试版、Canary金丝雀版、Development开发版的进程名分别为DiscordPTB、DiscordCanary、DiscordDevelopment,这些版本都支持Rich Presence,原逻辑会直接漏判。
原方案修复方式

放弃字符串匹配ToString()结果的写法,直接读取进程对象的ProcessName属性判断,这个属性在所有Unity脚本后端下返回值稳定,同时覆盖所有Discord分支进程,参考代码:

using System.Diagnostics;
using System.Linq;

private static readonly string[] DiscordProcessNames = new[]
{
    "Discord",
    "DiscordPTB",
    "DiscordCanary",
    "DiscordDevelopment"
};

public static bool CheckDiscordRunning()
{
    return Process.GetProcesses().Any(p => DiscordProcessNames.Contains(p.ProcessName));
}

这个写法在编辑器和Windows打包后都能正常生效,不需要额外系统权限。

更可靠的替代检测方案

进程检测存在误判可能(比如进程残留但实际已退出、进程名被修改),以下两种方案稳定性更高:

  • 检测Discord IPC管道
    Discord启动后会创建编号0-9的本地命名管道用于Rich Presence等功能的通信,直接尝试连接这些管道,连接成功就说明Discord可用,这个判断和SDK实际通信逻辑完全一致,准确率最高。参考代码:
    using System.IO.Pipes;
    
    public static bool CheckDiscordAvailable()
    {
        // 最多检测10个IPC管道,覆盖多开、测试分支场景
        for (int i = 0; i < 10; i++)
        {
            try
            {
                using var pipe = new NamedPipeClientStream(".", $"discord-ipc-{i}", PipeDirection.InOut);
                pipe.Connect(100); // 100ms超时避免卡主线程
                return true;
            }
            catch
            {
                continue;
            }
        }
        return false;
    }
    
    注意不要在主线程同步跑这个检测,避免超时导致帧卡顿。
  • 直接依赖SDK返回值,取消前置检测
    如果你用的是官方Discord Game SDK,初始化时传入CreateFlags.NoRequireDiscord标志,就会禁用自动拉起Discord、Discord未运行时崩溃的问题。初始化后通过返回的Result码判断是否成功,如果返回NotRunning/NotInstalled就跳过Rich Presence相关逻辑即可,不需要自己提前做检测。如果是用第三方开源DiscordRPC库,把初始化参数里的autoStart设为false就能达到同样效果。
额外建议

不要只在游戏启动时做一次检测,建议在后台协程里每隔30-60秒轮询一次状态,适配用户在游戏运行中开关Discord的场景,动态初始化/销毁Rich Presence实例即可。


内容的提问来源于stack exchange,提问作者peq42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 02:18:21