2016-04-14 10 views
1

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.

+0

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

+0

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) –

+0

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

Antwort

0

Es scheint, dass das Player-Objekt auch in der Sortierreihenfolge 0 war. Wenn also das Objekt deadGuy in Sortierreihenfolge 0 geschrieben wurde, wurde es immer noch angezeigt, da es Vorrang hat.