I haven't had any luck with understanding why this has suddenly started happening, but as I've dived into it a bit more, it doesn't seem to even be a consistent error, and
not necessarily related to a UILabel being destroyed.
For example I have it happening on a simple FPS UILabel I made for debugging- it might occur on 3 of 7 launches. Not sure why, it's almost as if the UILabel isn't ready for when I'm setting UILabel.text = stuff
Just to be perfectly clear, this is the FPS script (a modified version from the Unity wiki)
var updateInterval = 0.5;
private var accum = 0.0; // FPS accumulated over the interval
private var frames = 0; // Frames drawn over the interval
private var timeleft : float; // Left time for current interval
private var textField:UILabel;
function Start()
{
timeleft = updateInterval;
textField = gameObject.GetComponent("UILabel") as UILabel;
}
function Update()
{
timeleft -= Time.deltaTime;
accum += Time.timeScale/Time.deltaTime;
++frames;
if( timeleft <= 0.0 )
{
// display two fractional digits (f2 format)
textField.text = "" + (accum/frames).ToString("f2") + "fps\n" + Profiler.GetMonoUsedSize().ToString("N0") + " GetMonoUsedSize of "
+ SystemInfo.systemMemorySize.ToString("N0") + " systemMemorySize" ;
timeleft = updateInterval;
accum = 0.0;
frames = 0;
}
}