The player-character is the most important character in the game, so it is a good idea to spend some effort into making them look unique. Every creative choice about the look of the PC should be deliberate and well-justified.
However, hair color is not the only way to do that. There are lots and lots of details you can add to a character to give them some ...
You want to start your fade back to light coroutine after your fade to black loop has finished all of its work, not once in every iteration of the loop (ie. every frame the black fade is supposed to be updating).
Move it outside the loop like so:
private IEnumerator FadeToBlack()
Color originalColor = night.color;
for (float t = 0.01f; t < ...
You are changing a material property called "_SpecColor" that the default sprite material does not use.
Did you mean to change the colour of the sprite renderer itself? This is more efficient than cloning the material to set unique material properties on the instance.
rend = GetComponent<SpriteRenderer>();
rend.color = ...
I read this article to jog my memory about HEX colour indexing, which is basically a base-16 that can be converted easily to decimal values, used in GMS to create colour values with the make_colour_rgb(r, g, b) function.
The paragraph "Converting Hex to RGB Color Codes" was my main guide through the implementation, as it explains crystal clear how ...