unity微信小游戏,使用自己编写的屏幕后处理shader,真机出现花屏、闪烁、噪点,模拟器中正常
1. 我的电脑系统为 windows11 2. Unity Hub 版本 303.0-c9 3. Unity版本2022.3.49f1c1 4. 创建一个Mobile 2D Template的项目 5. 从这里安装了 https://gitee.com/wechat-minigame/minigame-tuanjie-transform-sdk.git WXSDK(0.1.23) 6. 编写shader,shader中的逻辑极其简单,直接返回纯白色 7. 创建一个材质引用此shader 8. 编写C#脚本,定义OnRenderImage函数,据我所知此函数用于屏幕后处理,在OnRenderImage使用刚刚创建的材质进行屏幕后处理,将此脚本挂到主相机节点上 9. 如果一切正常,屏幕应该显示纯白色 10. 将项目转换为微信小游戏,全部使用默认设置,不做任何修改 11. 使用微信开发者工具打开此项目,微信开发者工具版本为 Stable 1.06.2409140 12. 游戏在微信开发者工具的手机模拟器上运行正常,但是使用真机调试的时候出现了花屏 13. 调试用的手机为Android手机,型号为Redmi K50 Ultra,系统为Xiaomi HyperOS 1.0.3.0.ULFCNXM 14. 微信版本为8.0.55 15. 今天是2025-01-06 谁能帮我看一下啊,我太难了 项目里只有这两段代码: [图片] 转换微信小游戏: [图片] 使用微信开发者工具打开项目,运行正常: [图片] 使用真机调试,花屏,闪烁,噪点 [图片] 将此脚本挂到主相机节点上: using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[ExecuteInEditMode]
public class MyPostProcess : MonoBehaviour
{
public Material postProcessMaterial; // 用于后处理的材质
void Start()
{
}
void OnRenderImage(RenderTexture src, RenderTexture dest)
{
if (postProcessMaterial == null)
{
Graphics.Blit(src, dest);
return;
}
Graphics.Blit(src, dest, postProcessMaterial);
}
}
这是屏幕后处理材质使用的shader: Shader "THT/MyPostProcess"
{
Properties
{
_MainTex ("Camera Content", 2D) = "white" {} // 摄像机内容, unity会将摄像机内容传递到_MainTex
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct vert_in
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct frag_in
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
frag_in vert (vert_in v)
{
frag_in o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
fixed4 frag (frag_in i) : SV_Target
{
return fixed4(1.0, 1.0, 1.0, 1.0);
}
ENDCG
}
}
}