Unity-Technologies/UnityCsReference · error · ArgumentException

index must be between 0 and

Error message

index must be between 0 and {emissiveTexturePropertiesCount - 1}, but was {index}

What it means

Thrown by BakeInput.GetEmissiveTextureProperties when the uint index is >= emissiveTexturePropertiesCount. Emissive TextureProperties are a separate collection from emissive TextureData (emissiveTextureCount), so the two counts can differ and must not be used interchangeably.

Solutions

  1. Bound iteration by emissiveTexturePropertiesCount.
  2. Confirm InputExtraction populated emissive properties before reading them.
  3. Guard: if (index < bakeInput.emissiveTexturePropertiesCount) { ... }

Example fix

// before
for (uint i = 0; i < bakeInput.emissiveTextureCount; i++)
    p.Add(bakeInput.GetEmissiveTextureProperties(i));
// after
for (uint i = 0; i < bakeInput.emissiveTexturePropertiesCount; i++)
    p.Add(bakeInput.GetEmissiveTextureProperties(i));
Defensive patterns

Strategy: validation

Validate before calling

if (index < bakeInput.emissiveTexturePropertiesCount)
{
    var p = bakeInput.GetEmissiveTextureProperties(index);
}

Prevention

When it happens

Trigger: Reading emissive properties in a loop bounded by emissiveTextureCount or another channel's count; reading properties that InputExtraction never populated.

Common situations: Readback assuming data and properties are 1:1 per channel; scenes where emissive data exists but properties extraction was skipped.

Related errors


AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13). Data as JSON: /api/errors/23ce4edf834ccc4a. Report an issue: GitHub.

Appendix: source

Thrown at Editor/Mono/GI/LightBaker.bindings.cs:624

        extern TextureData Internal_GetEmissiveTextureData(uint index);
        extern void Internal_SetEmissiveTextureData(uint index, TextureData textureData);
        public TextureData GetEmissiveTextureData(uint index)
        {
            if (index >= emissiveTextureCount)
                throw new ArgumentException($"index must be between 0 and {emissiveTextureCount - 1}, but was {index}");
            return Internal_GetEmissiveTextureData(index);
        }
        public void SetEmissiveTextureData(uint index, TextureData textureData)
        {
            if (index >= emissiveTextureCount)
                throw new ArgumentException($"index must be between 0 and {emissiveTextureCount - 1}, but was {index}");
            Internal_SetEmissiveTextureData(index, textureData);
        }
        extern TextureProperties Internal_GetEmissiveTextureProperties(uint index);
        public TextureProperties GetEmissiveTextureProperties(uint index)
        {
            if (index >= emissiveTexturePropertiesCount)
                throw new ArgumentException($"index must be between 0 and {emissiveTexturePropertiesCount - 1}, but was {index}");
            return Internal_GetEmissiveTextureProperties(index);
        }
        extern void Internal_SetEmissiveTextureProperties(uint index, TextureProperties textureProperties);
        public void SetEmissiveTextureProperties(uint index, TextureProperties textureProperties)
        {
            if (index >= emissiveTexturePropertiesCount)
                throw new ArgumentException($"index must be between 0 and {emissiveTexturePropertiesCount - 1}, but was {index}");
            Internal_SetEmissiveTextureProperties(index, textureProperties);
        }

        extern TextureData Internal_GetTransmissiveTextureData(uint index);
        extern void Internal_SetTransmissiveTextureData(uint index, TextureData textureData);
        public TextureData GetTransmissiveTextureData(uint index)
        {
            if (index >= transmissiveTextureCount)
                throw new ArgumentException($"index must be between 0 and {transmissiveTextureCount - 1}, but was {index}");
            return Internal_GetTransmissiveTextureData(index);
        }

View on GitHub (pinned to 225b0fbdb5)