I assign skybox material through code. I do not check if the material has already been assigned , i just do something like this
void Update ()
RenderSettings.skybox = DarkSkyboxMaterial;
is this a ms consuming process ?, seeing as it appears to constantly assign the same material for every frame.
Sounds like you answered your own question; the best performance for Update() is to not have it so you could go one better and instead of putting that in Update() have a method like ChangeSkybox() that accepts a material or something and call that only once on your OnLevelLoad/Change
As I understand it, the order of expense is:
Update > Coroutine > InvokeRepeating > Only calling when really needed
In short, no Update is better than Update having to evaluate an if() every frame, although in the big picture that might be trivial.
Why aren’t you setting it in the Start function?