В общем:
От собственного Unity Лучшая практика для Resources
:
Не используйте.
Что не так с простым использованием ваших полей public
и настройкой их с помощью инспектора?
Если вам не нравится, что они public
, тогда просто используйте [SerializeField]
[SerializeField] private Material white;
[SerializeField] private Material red;
и назначьте их через инспектора!
Тогда предположим, что ваш путь не assets/resources/material
, а Assets/Resources/Material
см. Resources.Load
!
Вы пытались
white = Resources.Load<Material>("White");
white = Resources.Load("Material/White.mat", typeof(Material)) as Material;
Оба не правы:
Таким образом, для загрузки файла с путем
Assets/Resources/Material/White.mat
это должно быть просто
white = Resources.Load<Material>("Material/White");
Теперь еще одно общее замечание:
Делать этот миг на в кадре не является идеей бога!
Скорее используйте некоторую задержку, например,
// adjust via the Inspector as well
[Tooltip("Color changes per second")]
[SerializeField] private float blinkFrequency = 2f;
private float timer;
void Update()
{
timer -= Time.deltaTime;
if(timer <= 0)
{
timer = 1 / blinkFrequency;
blinkObject = !blinkObject;
foreach (var child in rend_ThisObject)
{
child.material = blinkObject ? white : red;
}
}
}