Sprite appears in game mode but not in built version.

I want to change the SpriteRenderer sprite to another one by pressing a GUI Button. In the editor, it works perfectly fine, with no problems. But when I build it for android or W.P, it doesn’t work at all. The sprite remains the default one.

What happens in the editor: Screen capture - 88b8cf867d94932802bf9296d6fce0e6 - Gyazo

What happens in built version(android):Screen capture - 9988c6a664c92c4b5703b7b8864990aa - Gyazo

Can you show the code where you do the switch?

using UnityEngine;
using System.Collections;

public class Shop : MonoBehaviour {

int catPrice = 10;
public Sprite defaultSprite;
public Sprite catSprite;
public GameObject Player;
int moneyz;
public bool hasBeenPressed;
public SpriteRenderer spriteRenderer;

void Start ()
{
moneyz = PlayerPrefs.GetInt(“Score”);
spriteRenderer = Player.GetComponent();

int state = PlayerPrefs.GetInt(“hasBeenPressed”, 0);

if (state == 1)
hasBeenPressed = true;
else
hasBeenPressed = false;
}

public bool IsCatBought()
{
return hasBeenPressed;
}

void OnGUI()
{

if(!hasBeenPressed)
{
if(GUI.Button (new Rect(Screen.width / 2 - 30, 50, 90, 30), “Buy Cat Player.”))
{
if(PlayerPrefs.GetInt(“Score”, moneyz) < 10)
{
GUI.Label (new Rect(Screen.width / 2 - 40, 250, 100, 30), “Not enought moneyz”);
}
else
{
PlayerPrefs.SetInt(“Score”, moneyz - catPrice);
Player.GetComponent().sprite = catSprite;
hasBeenPressed = true;
PlayerPrefs.SetInt(“hasBeenPressed”, 1);
}
}
}

if(PlayerPrefs.GetInt(“hasBeenPressed”) == 1)
{
if(GUI.Button (new Rect(Screen.width / 2 - 30, 250, 90, 30), “Cat Player.”))
{
Player.GetComponent().sprite = catSprite;
}
}

if(GUI.Button (new Rect(Screen.width / 2 - 40, 100, 100, 30), “Game”))
{
Application.LoadLevel(1);
}

if(GUI.Button (new Rect(Screen.width / 2 - 40, 150, 100, 30), “Back to Menu”))
{
Application.LoadLevel(0);
}

if(GUI.Button (new Rect(Screen.width / 2 - 40, 200, 100, 30), “Default Player.”))
{
Player.GetComponent().sprite = defaultSprite;
}
}
}

Hi

Load Level will remove everything from the current scene and replace it with the content of the scene you want to load.

You can use LoadLevelAdditive to preserve the content of the current scene or do the check and assignment in the ‘Game’ scene.

1 Like