Unity2D의 Sprite 및 ParticleSystem의 드로잉 우선 순위 설정

2183 단어 Unity2DUnity
게임을 만들 때 기본적으로 UI는 3D 객체보다 전면에 표시하지만 가끔 이펙트(Particle System)를 UI보다 앞에 표시하고 싶을 때가 있다.
그것을 Unity2D에서는 어떻게 할까라고 생각해 조사해 보았다.

시험에 아무것도 생각하지 않고 두면,



PositionZ의 값을 아무리 바꾸어도 이펙트가 뒷면에 표시되었다.

Sprite를 그릴 때 우선 순위는 Sorting Layer와 Order in Layer에 의해 결정됩니다.
[Unity] Unity2d 기능, 스프라이트 사용법

그것과 같은 일을 해주면 좋을 것 같지만, Particle System에서는 Layer는 설정할 수 있지만 Sorting Layer는 Inspector상에서 설정할 수 없기 때문에, 전용의 스크립트를 준비할 필요가 있는 것 같다.

SortingLayerSetter.cs
using UnityEngine;
using System.Collections;

public class SortingLayerSetter : MonoBehaviour {

    [SerializeField]
    private string _sortingLayerName = "Default";

    // Use this for initialization
    void Start () {
        renderer.sortingLayerName = _sortingLayerName;
    }
}

이 스크립트를 컴퍼넌트에 추가해, Inspector상으로부터 SortingLayer의 이름을 지정해 주면 OK.



무사히 SortingLayer를 지정하여 우선순위를 설정할 수 있었다.
디버그 거의하지 않기 때문에 뭔가있을지도.

좋은 웹페이지 즐겨찾기