So I’ve got an object (a ceiling in a room) that I swap the texture on at the press of a button.
var mats = Resources.FindObjectsOfTypeAll(typeof(Material));
if (Input.GetKeyDown(KeyCode.KeypadEnter) == true)
{ foreach (Material mat in mats)
{ if ((mat.name == "ceiling_tiled"))
{ ceilingMeshRenderer.material.SetTexture("_MainTex", mat.mainTexture);
}
}
}
(There’s almost certainly a much better way to select and assign the texture, but hey, I’m learning, and it worked…)
I’ve got a set of cubes in the scene outside of the visible/playable area with these textures on them, so that they load fine when the game loads. (again, probably a better way to do this, but I couldn’t get the manual resource loading to work so I did this instead.) In the editor the above code works fine and it swaps the texture on the ceiling just fine.
However after I build, sometimes it doesn’t swap the texture. About 4 out of 5 builds, the texture swapping refuses to work and the “ceiling_tiled” texture does not display. I have absolutely no idea what I’m doing differently on the 5th build, in fact I’m 99% sure I’m not doing anything different at all. I’ve tried copying the material and texture files into the Assets/Resources folder, no dice.
I’m going bonkers trying to figure this out. Please help.
edit: now using a more intelligent way to address the GameObject and texture rather than just cycling through them all to find the one I want… still does the same thing, Built version doesn’t change texture but when played in Editor it works fine.