Ich versuche, die Reihenfolge einer Sortieranlage Schicht in der Einheit für ein 2D-Spiel zu ändern, aber die folgenden Skript arbeitet nicht für mich:Sortierreihenfolge funktioniert nicht richtig
using UnityEngine;
using System.Collections;
public class LevelManager : MonoBehaviour {
public GameObject player;
public SpriteRenderer deadGuy;
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
if (player.transform.position.y < deadGuy.transform.position.y)
{
deadGuy.sortingOrder = 0;
} else
{
deadGuy.sortingOrder = 2;
}
}
}
Die Objekte in der Verbindung gebracht wurden Inspektorfenster Einheit vor dem Spiel.
EDIT
Das ist jetzt mein Code:
using UnityEngine;
using System.Collections;
public class LevelManager : MonoBehaviour {
public GameObject player;
public GameObject deadGuy;
public bool belowTheY;
// Use this for initialization
void Start() {
deadGuy.GetComponent<SpriteRenderer>().sortingOrder = 2;
}
// Update is called once per frame
void Update() {
if (player.transform.localPosition.y < deadGuy.transform.localPosition.y)
{
belowTheY = true;
deadGuy.GetComponent<SpriteRenderer>().sortingOrder = 0;
} else
{
belowTheY = false;
deadGuy.GetComponent<SpriteRenderer>().sortingOrder = 2;
}
}
}
bekowTheY aktiviert wird, wenn der Benutzer unter Position Y Deadguy der geht so weiß ich die if-Anweisung korrekt ausgeführt wird. Die Sortierschicht wird jedoch nicht geändert.
Was funktioniert nicht? Ändert sich diese Eigenschaft im Editor, aber das Bild wird nicht in der gewünschten Reihenfolge angezeigt? Wie wäre es, wenn Sie den Code in der Update-Funktion kommentieren, setzen Sie in der Update-Funktion 'deadGuy.sortingOrder = 2;'. Wählen Sie den SpriteRenderer im Editor und prüfen Sie, ob die Sortierreihenfolge die Eigenschaft geändert hat. – Programmer
Mit Blick auf das Objekt deadGuy kann ich sehen, dass es seine Sortierschicht überhaupt nicht ändert. Es bleibt nur bei 2 (die Eigenschaft, die im Inspektorfenster eingestellt wurde) –
Wenn ich gesagt habe, dass es in der Update-Funktion heißt, meinte ich 'Start'-Funktion. Eine Sache noch. Entferne den gesamten Code in deinem Update und setze 'deadGuy.sortingOrder = 4;' in die Start-Funktion. Ich möchte sehen, ob der Code funktioniert. Sag mir den Wert im Editor. – Programmer