收藏
回答

Unity 转换微信小程序后打开报错?

框架类型 问题类型 操作系统 工具版本
小游戏 Bug Windows Stable 1.06.2401020

报错信息:

plugin.js:93 RenderingCommandBuffer: shader Hidden/Universal/CoreBlit: invalid pass index 23 in DrawProcedural

(env: Windows,mg,1.06.2401020; lib: 3.2.5)

Unity 版本:

2022.3.20f1

测试场景:

转换设置:

微信开发者工具截图:

回答关注问题邀请回答
收藏

9 个回答

  • 亮
    2024-10-28

    通用设置关闭GPU加速模式

    2024-10-28
    有用 6
    回复 1
    • link
      link
      01-06
      666
      01-06
      回复
  • mojf
    mojf
    2024-09-27

    似乎是 PC shader 编译的问题 ,参考下找个:

    2024-09-27
    有用 1
    回复
  • 89
    89
    2024-05-28

    真机上可以正常显示,难道是开发者工具有问题? 已知unity 2022.3.0版本是好的

    2024-05-28
    有用 1
    回复 1
    • 吴万强
      吴万强
      2024-12-28
      试了半天,只能是22.3.0对应的urp14.0.7能用
      2024-12-28
      回复
  • 邹超
    邹超
    02-26

    要将 com.unity.render-pipelines.universal@14.0.9 改为本地文件引用并修改 CoreBlit.shader,请按以下步骤操作:


    步骤 1:复制 URP 包到项目本地

    1. 找到 PackageCache 中的 URP 包
    • 路径通常为:
    • {项目路径}/Library/PackageCache/com.unity.render-pipelines.universal@14.0.9
    1. 复制到本地 Packages 目录
    • 在项目根目录创建 Packages 文件夹(如果不存在)。
    • 将 com.unity.render-pipelines.universal@14.0.9 复制到 Packages 目录下,重命名为更友好的名称(如 com.unity.render-pipelines.universal)。

    步骤 2:修改 manifest.json

    1. 打开 manifest.json
    • 路径:{项目路径}/Packages/manifest.json
    1. 修改依赖项
    将原本的 URP 注册表引用(如 "com.unity.render-pipelines.universal": "14.0.9")替换为本地路径:json
    {
      "dependencies": {
        "com.unity.render-pipelines.universal": "file:./Packages/com.unity.render-pipelines.universal",
        // 其他依赖...
      }
    }
    
    • 确保路径与实际复制的文件夹名称匹配。

    步骤 3:处理依赖项

    1. 检查 URP 的依赖
    • URP 可能依赖 com.unity.render-pipelines.core。如果该包也在 PackageCache 中,需同样复制到本地并修改 manifest.json
    1. 示例修改后的依赖
    json
    {
      "dependencies": {
        "com.unity.render-pipelines.core": "file:./Packages/com.unity.render-pipelines.core",
        "com.unity.render-pipelines.universal": "file:./Packages/com.unity.render-pipelines.universal",
        // 其他依赖...
      }
    }
    

    步骤 4:修改 CoreBlit.shader

    1. 找到并编辑文件
    • 路径:
    • {项目路径}/Packages/com.unity.render-pipelines.universal/Shaders/Utils/CoreBlit.shader
    1. 保存修改
    • 直接编辑该文件并保存,Unity 会自动检测更改并重新编译。

    步骤 5:验证和测试

    1. 重新打开 Unity 项目
    • Unity 会重新解析依赖,确保无报错。
    1. 检查 URP 状态
    • 在 Window > Package Manager 中,URP 应显示为 Local 来源。
    1. 测试功能
    • 运行项目,确保使用修改后的 CoreBlit.shader 的功能正常。


    代码改为

    Shader "Hidden/Universal/CoreBlit"

    {

        HLSLINCLUDE


            #pragma target 2.0

            #pragma editor_sync_compilation

            #pragma multi_compile _ DISABLE_TEXTURE2D_X_ARRAY

            #pragma multi_compile _ BLIT_SINGLE_SLICE

            // Core.hlsl for XR dependencies

            #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"

            #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl"

        ENDHLSL


        SubShader

        {

            Tags{ "RenderPipeline" = "UniversalPipeline" }


            // 0: Nearest

            Pass

            {

                ZWrite Off ZTest Always Blend Off Cull Off


                HLSLPROGRAM

                    #pragma vertex Vert

                    #pragma fragment FragNearest

                ENDHLSL

            }



        }


        Fallback Off

    }

    按照楼主mojf的第二种方法解决了

    02-26
    有用
    回复
  • 不醒人士
    不醒人士
    2024-12-08

    这个是因为CoreBlit 里面的 23 24 pass 是调试版本 把url 改为本地依赖后 把他改成 正式版本就可以


            // 23: Bilinear blit with color space conversion support (正式版本)

            Pass

            {

                Name "BilinearBlit"  // 修改为正式名称

                ZWrite Off ZTest Always Blend Off Cull Off


                HLSLPROGRAM

                #pragma vertex Vert

                #pragma fragment FragmentURPBlitBilinearSampler

                #pragma multi_compile_fragment _ _LINEAR_TO_SRGB_CONVERSION


                half4 FragmentURPBlitBilinearSampler(Varyings input) : SV_Target

                {

                    half4 color = FragmentURPBlit(input, sampler_LinearClamp);


                    #ifdef _LINEAR_TO_SRGB_CONVERSION

                    color = LinearToSRGB(color);

                    #endif


                    return color;

                }

                ENDHLSL

            }


            // 24: Nearest blit with color space conversion support (正式版本)

            Pass

            {

                Name "NearestBlit"  // 修改为正式名称

                ZWrite Off ZTest Always Blend Off Cull Off


                HLSLPROGRAM

                #pragma vertex Vert

                #pragma fragment FragmentURPBlitPointSampler

                #pragma multi_compile_fragment _ _LINEAR_TO_SRGB_CONVERSION


                half4 FragmentURPBlitPointSampler(Varyings input) : SV_Target

                {

                    half4 color = FragmentURPBlit(input, sampler_PointClamp);


                    #ifdef _LINEAR_TO_SRGB_CONVERSION

                    color = LinearToSRGB(color);

                    #endif


                    return color;

                }

                ENDHLSL

            }

    2024-12-08
    有用
    回复
  • 风之影
    风之影
    2024-08-23

    也遇到了同样问题,解决没

    我是团结官方例子,按步骤转换的

    2024-08-23
    有用
    回复
  • °黎明丶
    °黎明丶
    2024-08-06

    解决方案 团结引擎1.2.2 在微信小游戏转换工具中勾选WebGL 2.0 ProjectSetting->Player中的自动图形API关闭,移除WebGL 1 并添加WebGL2。

    2024-08-06
    有用
    回复 1
    • 灰鹰
      灰鹰
      2024-08-10
      试了没用啊大佬#丧
      2024-08-10
      回复
  • 无脑码农
    无脑码农
    2024-04-23

    我也遇到这个问题,请问有解决么?

    2024-04-23
    有用
    回复 1
    • 灰鹰
      灰鹰
      2024-08-10
      请问这个问题您解决了吗?
      2024-08-10
      回复
  • 夏日微风
    夏日微风
    2024-04-01

    同问,这个问题是怎么解决的呢

    2024-04-01
    有用
    回复
登录 后发表内容