Unity3d自学记录 动态控制SpriteRendered的Order in Layer

  • 问题

2D游戏角色控制精灵,经常与其他诸如敌人呀什么的进行交互,那,谁在前谁在后就成了问题,这个时候需要进行动态控制Order in layer。

  •  思路

通过他们的position.y进行动态控制sortingOrder

  • 代码实现 

void spriteOrder_Controller()
{
    //*100是为了使取值区间增大,减少或避免重合的问题
    sortingOrder = Mathf.RoundToInt(this.transform.position.y * 100);

    //给该角色的所有精灵进行赋值
    for (int i = 0; i < m_SpriteGroup.Length; i++)
    {
        //当然,每个层级之间还是要区分的,只有同一层级的才会按照次序比较
        m_SpriteGroup[i].sortingOrder = sortingOrderOrigine - sortingOrder;

    }

}
  • 出处

该游戏源码来自AssetStore,Free_Pack。

你可能感兴趣的:(Unity3d)