multiplying transform.localScale causing lighting issues

As an initial learning project, making a simple asteroids-type game. Originally I was using unity spheres for the asteroids, and everything worked fine, but when I replaced them with meshes exported from Blender (also spheres - I’m not an artist, just wanted to try importing), I started having issues with lighting. The problem occurs only on my iPhone 3gs and in the iPhone simulator, does not occur in web, windows, or osx builds.

Asteroids are instantiated by a GameManager script attached to the camera; when only one asteroid is created, lighting is fine. If more than one are created, or that one is shot and splits into two, the problem appears, and the objects stop being lit (single directional light in scene) when more than one is on-screen at a time.

This screenshot, I just split one asteroid into two, which are now dark (doesn’t appear to be ambient lighting, either…)
alt text

A second later, one has gone off the left edge of the screen, and the first lights properly again…
alt text

Bizarrely, it seems to be related to the scaling applied to the asteroids - when starting with 2, this behavior occurs. When one is shot and split, it’s two smaller children demonstrate the glitch, and the remaining “big boy” lights fine. Split the other big boy, giving 4 1/2-size versions, and all four draw dark unless only one is on screen.

I assume I’m Doing It Wrong™, as I’m new to unity, but searching google and unityAnswers has turned up nothing helpful. I’ve determined that it is scaling that is the problem - if I comment out the line that applies a change to the scale, so all asteroids are the same size, lighting behaves as expected, regardless of splitting or how many asteroids are visible. The only place I am scaling is in this function from my asteroid script. This is called every time an asteroid is created, and commenting out the last line eliminates the lighting problem - and causes all asteroids to be the same size, obviously not an acceptable solution!

here is the function containing the scaling line…

function SetupProps(scale:float, points:int, mag:int)
{
	magnitude = mag;
	pointValue = points;
	transform.localScale = transform.localScale*scale;
}

I’m aware I could work around this issue by using separate pre-scaled prefabs for each size of asteroid, but I’d really like to know how to make dynamic scaling work properly.

Thanks in advance, any help will be appreciated!

:edit: forgot to mention, the scene consists of just a single directional light.

I don’t know if this is related to you, but I had a similar issue when my z component of my scale was zero. Make sure the components of all your localScale elements are non-zero mayhaps?