1. Spine2D의 MecaAnim(Animator)에서 <MeshRenderer> 컴퍼넌트를 빼옴
  2. <MeshRenderer> 컴퍼넌트의 마테리얼들을 sharedMaterials로 가져옴
    • materials가 아니라 sharedMaterials를 사용하는 이유
      : 왜인지 모르겠지만 적용이 안되는 경우가 있음
      : 이쪽이 확실함
  3. 해당 Shader를 상황에 맞게 변경
    • 기본 Shader : Spine/Skeleton
    • 기본 Outline Shader : Spine/Outline/Skeleton
    // :: 중복 방지
    private bool iOutline = false;
    public void ShowOutline(bool check)
    {
        // :: 중복 실행 방지
        if (iOutline == check)
            return;

        this.iOutline = check;

        // :: 메쉬 렌더러 확인
        var meshRenderer = this.Animator.GetComponent<MeshRenderer>();

        // :: 상황에 따라 쉐이더 변경
        foreach (var mat in meshRenderer.sharedMaterials)
        {
            if(check)
            {
                mat.shader = Shader.Find("Spine/Outline/Skeleton");
            } else
            {
                mat.shader = Shader.Find("Spine/Skeleton");
            }
        }
    }

 

블로그 이미지

RIsN

,