Указываю их значения в редакторе через кастомный скрипт для редактора, используя Shader.SetGlobal.
Так вот, эти значения не сохраняются в сцене/ассетах/билде.
При перезапуске редактора они сбрасываются на дефолтные значения - все флоаты по нулям, цвета - черные и так далее.
Если я правильно понимаю Юнити не сериализует эти переменные т.к. их нет в инспекторе.
Есть-ли какой-то способ заставить его сохранять значения переменных?
Сейчас использую несколько костыльный вариант - сохраняю эти переменные в текстовый файл, а при старте сцены считываю их и назначаю.
Вроде бы работет конечно, но хотелось бы без этих лишних телодвижений
Синтаксис:
Используется csharp
Shader "Custom/Global Sand/"
{
Properties
{
// Свойства назначаются только через код
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 400
CGPROGRAM
#pragma surface surf Standard fullforwardshadows
#pragma target 3.0
// Глобальные переменные
float4 SandsColor;
sampler2D SandTex;
// ===
// Далее обычный код шейдера
// ===
ENDCG
}
}
}
{
Properties
{
// Свойства назначаются только через код
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 400
CGPROGRAM
#pragma surface surf Standard fullforwardshadows
#pragma target 3.0
// Глобальные переменные
float4 SandsColor;
sampler2D SandTex;
// ===
// Далее обычный код шейдера
// ===
ENDCG
}
}
}