2016-04-14 42 views
1

我试图改变一个排序层的顺序团结2D游戏,但下面的脚本不工作对我来说:重要性排序无法正常工作

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; 
     } 

    } 
} 

的对象已经在被链接在运行游戏之前,检查员窗口统一。

编辑

现在这是我的代码:

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; 
     } 

    } 
} 

如果用户低于deadGuy的Y位置bekowTheY被激活,所以我知道if语句被正确执行。然而排序层没有被改变

+0

什么不行?该属性是否在编辑器中更改,但图像没有按照您想要的顺序显示?你如何评论Update函数中的代码,在Update函数中放置'deadGuy.sortingOrder = 2;'。在编辑器中选择SpriteRenderer,并检查sortingOrder是否更改了属性.... – Programmer

+0

看着deadGuy对象,我可以看到它根本没有改变它的排序层。它只停留在2(检查器窗口中设置的属性) –

+0

当我说把它放在Update函数中时,我的意思是'开始'功能。还有一件事。删除更新中的所有代码并将'deadGuy.sortingOrder = 4;'放入启动函数中。我想看看你的代码是否工作。告诉我编辑器中的价值。 – Programmer

回答

0

看起来播放器对象也在排序顺序0上,所以当deadGuy对象被编写为排序顺序0时,它仍然显示在前面,因为优先。