Вчера я применил Fog of war для своей игры RTS. Вчера вечером все работало нормально, перед тем как ложиться спать, я проверял все сцены за сценой и проверял множество тестов, чтобы убедиться, что все работает и все хорошо.
Но сегодня, когда я пытаюсь запустить игру, она загружает главное меню, но когда он пытается загрузить первый уровень, единство рушится и не дает мне повода.
Я пытался пройтись по коду и игровым объектам, пока не обнаружил, что если я удалю пользовательский шейдер, прикрепленный к местности, которую я использовал для создания тумана над картой, он перестанет нарушать единицу и продолжит запуск игры, однако я подключил его заново и он снова работал нормально, когда снова работал туман войны, но как только я закрыл единицу и открыл ее снова, возникла та же проблема с крахом при загрузке первого уровня.
Я не уверен, что это шейдер или код для него, который вызывает проблему.
У меня мало опыта работы с шейдерами, но если кто-нибудь сможет взглянуть на код для него и сказать мне, если с ним что-то не так, я был бы очень признателен.
Shader "Fog Of War/Terrain" {
Properties {
_FOWTex ("Detail", 2D) = "gray" {}
// Splat Map Control Texture
[HideInInspector] _Control ("Control (RGBA)", 2D) = "red" {}
[HideInInspector] _Splat3 ("Layer 3 (A)", 2D) = "white" {}
[HideInInspector] _Splat2 ("Layer 2 (B)", 2D) = "white" {}
[HideInInspector] _Splat1 ("Layer 1 (G)", 2D) = "white" {}
[HideInInspector] _Splat0 ("Layer 0 (R)", 2D) = "white" {}
// used in fallback on old cards & base map
// [HideInInspector] _MainTex ("BaseMap (RGB)", 2D) = "white" {}
// [HideInInspector] _Color ("Main Color", Color) = (1,1,1,1)
}
SubShader {
Tags { "RenderType"="Opaque"
"SplatCount" = "4"
}
CGPROGRAM
#pragma surface surf Lambert nolightmap
struct Input {
float2 uv_FOWTex;
float2 uv_Control : TEXCOORD0;
float2 uv_Splat0 : TEXCOORD1;
float2 uv_Splat1 : TEXCOORD2;
float2 uv_Splat2 : TEXCOORD3;
float2 uv_Splat3 : TEXCOORD4;
};
sampler2D _Control, _FOWTex;
sampler2D _Splat0,_Splat1,_Splat2,_Splat3;
void surf (Input IN, inout SurfaceOutput o) {
fixed4 splat_control = tex2D (_Control, IN.uv_Control);
fixed3 col;
col = splat_control.r * tex2D (_Splat0, IN.uv_Splat0).rgb;
col += splat_control.g * tex2D (_Splat1, IN.uv_Splat1).rgb;
col += splat_control.b * tex2D (_Splat2, IN.uv_Splat2).rgb;
col += splat_control.a * tex2D (_Splat3, IN.uv_Splat3).rgb;
o.Albedo = col;
fixed3 c = tex2D (_FOWTex, IN.uv_FOWTex).aaa;
c = 1-c;
o.Albedo *= c;
}
ENDCG
}
FallBack off
}