How do you make a script be able to increase/decrease a UI image's color overtime without any errors?

Keep in mind that you must provide the code that is suitable with Unity version 2022.1.5f1. It is also supposed to be C# code.

I’m working on a upcoming game, and I’m working on a fade in/out effect that will be used when scenes are being loaded in or have just been loaded in respectively. I put this line of code into the script, which is supposed to change the “A” (the transparency) of the effect’s image in the span of a second, although I removed it from the script to remove the error, and when the line of code existed inside the script, Unity said that there was a error. Here’s how this error read:

“Cannot modify the return value of ‘Graphic.color’ because it is not a variable”

Here’s how the line of code read:

this.image.color.a += 255f * Time.deltaTime;

How can a script increase/decrease a UI image’s color without any errors? Please help me; it would really mean a lot to me.

Hi! The problem you’re facing is a rather unintuitive one. You’ll have to do something like this:

Color myColor = image.color; //get the color
myColor.a += 255f * Time.deltaTime; //modify it
image.color = myColor; //set your new color

You’ll probably also encounter this when dealing with positions:

transform.position.z += 1; //not valid
transform.position += new Vector3(0,0,1); //valid

This has to do with the fact that you are getting a copy of the object, and not a reference to it - The color.a is just a number with no recollection as to where it came from. - You must store the copy into a variable that you declare before you can modify it.