- 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".