- Home /
 
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.
Answer by coinnip_unity · Aug 22, 2018 at 04:32 AM
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".
Your answer