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

Unity中CompilationPipeline.GetAssemblyNameFromScriptPath无法获取包脚本程序集名称

解决方法
  • 直接通过MonoScript对象获取程序集名称
    包内脚本默认属于Unity预定义程序集(比如Assembly-CSharp),CompilationPipeline.GetAssemblyNameFromScriptPath()仅会返回自定义程序集或资源目录脚本的名称,直接传包内路径自然返回null。你可以先加载脚本对应的MonoScript对象,再从对象关联的类中提取程序集名称:

    // scriptPath 格式示例:"Packages/YourPackageName/Scripts/TestScript.cs"
    var monoScript = AssetDatabase.LoadAssetAtPath<MonoScript>(scriptPath);
    if (monoScript != null && monoScript.GetClass() != null)
    {
        string assemblyName = monoScript.GetClass().Assembly.GetName().Name;
        // 此处即为正确的程序集名称
    }
    
  • 给包内脚本配置自定义程序集
    如果坚持要用CompilationPipeline.GetAssemblyNameFromScriptPath(),可以在包内脚本目录下创建.asmdef文件,将包内脚本归类到自定义程序集中。这样函数就能识别到包内脚本属于自定义程序集,返回对应的名称。

为什么Monoscript Inspector能正常显示?

Inspector里的MonoScript是已加载的资源对象,它直接持有脚本类的引用,不需要通过路径判断程序集归属,因此能正常显示包内脚本的程序集名称,和你直接调用路径函数的逻辑完全不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:08:31