Unity: оператор Texture2D == не работает на Lightmaps? - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь испечь освещение для своих сборных конструкций и использую это решение в попытке сделать это. Однако, как следует из названия, это не сработало. Я обнаружил, что проблема заключается в if здесь

bool existsAlready = false;
int[] lightmapArrayOffsetIndex;
lightmapArrayOffsetIndex = new int[lightmaps.Length];
var settingslightmaps = LightmapSettings.lightmaps;

for (int i = 0; i < lightmaps.Length; i++)
{
    for (int j = 0; j < settingslightmaps.Length; j++)
    {
        if (lightmaps[i] == settingslightmaps[j].lightmapColor)
        {
            lightmapArrayOffsetIndex[i] = j;
            existsAlready = true;
        }
    }
}

, где lightmaps[] - это Texture2D[]

Моя карта освещения для упомянутого сборного дома является третьей картой освещения для сцены. Когда цикл for достигает третьего элемента в settingslightmaps[], оператор if возвращает false. Я попытался добавить точки останова для отладки моего кода, и - это точка в цикле, когда lightmaps[i] и settingslightmaps[j] имеют одинаковые имена, но оператор if все еще возвращает false.

Почему он возвращает false, даже когда отладчик говорит мне, что они указывают на одну и ту же карту освещения и как мне это исправить?

...