Ich habe eine Frage darüber, wie man Spirte Bilder während der Laufzeit für eine Reihe von Objekten ändern.Unity3d Sprite Änderung mit Prefabs
Also habe ich ein kleines Racer 2d Spiel gemacht, und deshalb können Sie verschiedene Themen wählen. Sie haben diese Option in einem integrierten Menü (keine separate Szene).
Meine Frage: Kann ich die Sprites während der Laufzeit einfach wechseln? Ich habe Prefabs für jedes Track-Element gemacht - und ich habe die Sprites dieser Prefabs geändert, aber die Änderung wird erst sichtbar, nachdem die Szene neu geladen wurde. Also würde ich das vermeiden müssen.
Hat jemand eine Lösung oder einen Hinweis, wie ich das tun könnte?
Vielen Dank im Voraus!
Code:
public class Background_Controller : MonoBehaviour {
public Camera mainCamera;
public Color colorNormal;
public GameObject[] Prefabs;
public Sprite[] normalSprites;
public Sprite[] tronSprites;
// Use this for initialization
void Awake() {
SwitchBackgroundFunction();
}
public void SwitchBackground(string Theme)
{
switch(Theme)
{
case "GreenHell":
PlayerPrefs.SetString("Theme", "Normal");
break;
case "NeonCity":
PlayerPrefs.SetString("Theme", "Tron");
break;
}
SwitchBackgroundFunction();
}
private void SwitchBackgroundFunction()
{
int prefabCount = Prefabs.Length;
if (PlayerPrefs.GetString("Theme") == "Normal")
{
mainCamera.backgroundColor = colorNormal;
for (int i = 0; i <= prefabCount - 1; i++)
{
Prefabs[i].GetComponent<SpriteRenderer>().sprite = normalSprites[i];
}
}
if (PlayerPrefs.GetString("Theme") == "Tron")
{
mainCamera.backgroundColor = Color.black;
for (int i = 0; i <= prefabCount - 1; i++)
{
Prefabs[i].GetComponent<SpriteRenderer>().sprite = tronSprites[i];
}
}
}
// Update is called once per frame
void Update() {
}
}
Hallo, du musst deinen Code posten, damit die Leute nicht etwas posten, das du ausprobiert hast. Bearbeiten Sie Ihre Frage, fügen Sie das Sprachtag und dann den Code hinzu, den Sie verwenden, um den Sprite zu ändern. – Programmer
Ich füllte einfach die vorgefertigten Objekte in das GameObject Prefabs Array, auch die verschiedenen Sprites meines Themes Sprite Sheets in normalSprites/tronSprites Array. Und weil ich so viele Objekte in meiner Szene platziert habe (Kacheln mit einer Menge an Assets, die geändert werden müssten), würde ich die Sprites der Prefabs ändern, die Objekte sind darauf ausgerichtet, alle auf einmal zu ändern. – IDK