Why are these two textures always the same?

So I’m trying to make it so that at any one time I have two textures, one that is generated on the previous trigger, and one that is generated on the current trigger. The code for this (stripping out useless parts)

planetTextureTemp = planetTextureTemp2;
                planet.GetComponentInChildren<Renderer>().material.mainTexture = planetTextureTemp;

                Debug.Log(planetTextureTemp == planetTextureTemp2);
                PlanetPicker(false);
                Debug.Log(planetTextureTemp == planetTextureTemp2);

And the planet picker code, I’ve stripped out everything not pertaining to this problem.:

 switch (planetColour)
            {
                case 0: //Earth Like Planet
                    planetTextureTemp2.SetPixel(2, 0, StringToColour(greens[Random.Range(0, greens.Length - 1)])); //Normal Land
                    planetTextureTemp2.SetPixel(0, 0, StringToColour(blues[Random.Range(0, blues.Length - 1)])); //Water
                    planetTextureTemp2.SetPixel(0, 1, StringToColour(browns[Random.Range(0, browns.Length - 1)])); //Light Land (Mountain Edge)
                    planetTextureTemp2.SetPixel(2, 1, StringToColour(browns[Random.Range(0, browns.Length - 1)])); //Inner Crater
                    planetTextureTemp2.SetPixel(1, 0, StringToColour(greens[Random.Range(0, greens.Length - 1)])); //Beach
                    planetTextureTemp2.SetPixel(1, 1, StringToColour(greens[Random.Range(0, greens.Length - 1)])); //Outer Crater
                    planetTextureTemp2.Apply();
                    //planet.GetComponentInChildren<Renderer>().material.mainTexture = planetTextureTemp;
                    break;

So my issue is that texture 2 always equals texture 1. Both of those debug logs will evaluate true despite the fact that it sets 1 = 2, then generates a new second one.

As I know, your textures is Texture2D , and when you write script like below,

Tx_A = Tx_B (both Texture2D)

this code do not copy Tx_B to Tx_A (which mean not allocating for Tx_A ).

Tx_A and Tx_B just has same reference.

So, in “Debug.Log(planetTextureTemp == planetTextureTemp2);”, as the two Texture2D has same reference, it prints only “true”.