- Home /
object material not changing in build,Material for object wont change after build
Hi people, I've been working on a small game in unity and one of my scenes in a skin selection screen. This scene works perfectly in the editor and I can use the buttons to change an object's material and it will change however, once I have built my game for android the object's material will not change after I press the buttons at will stay on the last selected material from the editor. I've tested the buttons and they seem to work fine so I managed to trace it to one line in one my scripts.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Materials : MonoBehaviour
{
public GameObject Player;
public void playerchangeColor(Material mat)
{
Player.GetComponent<Renderer>().sharedMaterial = mat;
Debug.Log("PlayerMat has been changed");
SceneManager.LoadScene("Menu 1");
}
}
The button works because the "Menu 1" scene is loaded once I press it on my android device.
The line Player.GetComponent().sharedMaterial = mat; doesn't actually change the material of the player object once it is built. I've been stuck on this for a long time, I would appreciate any help.
,
Just guessing here, but I'd bet that you are changing the material but it gets changed back to what was saved in Scene "$$anonymous$$enu 1". So have you tried loading "$$anonymous$$enu 1" asynchronously and setting it active and carrying your material over somehow or better yet, comment out the LoadScene and build it to see if it changes it before scene is loaded.
I've tried this but the problem still persists. I do think you are on to something though, how would I transition to a level for example after selecting a new skin , without the object's material resetting to what it was saved as during the editor?
I'm probably not the best person to answer that, but try assigning it again with OnSceneLoaded.
$$anonymous$$aybe make sure your references are set to the correct instance of the object. Like you could be setting the material to the player in scene 1 but if scene 1 player isn't transfered over properly with like DontDestroyOnLoad then the player with the saved material would have been destroyed when you loaded a new scene.
Your answer
![](https://koobas.hobune.stream/wayback/20220612174141im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Distribute terrain in zones 3 Answers
Android won't build 2 Answers
Error Building Player: Win 32 exception: The system cannot find the file specified 4 Answers
Trouble with Detonator 2 Answers