Unity Shader 적용된 Material Property Runtime변경

2022. 6. 28. 02:26Unity/VR

이번 포스팅은 본인이 직접 셰이더를 통해 만든 매터리얼의 셰이더 파라미터를 런타임으로 변경하는 과정에서 여러 시행착오를 겪은 것으로 여러 글 들에서 놓치고 있던 정보를 기록하기위해 쓰는 것이다.

 


Reference 변경

위의 셰이더 그래프의 Properties중 Color를 런타임으로 변경하는 방법을 알아보자.

먼저 위의 Color property인 Emission을 눌러 Node Settings의 Reference를 확인해야한다. 

 

기본적으로 아무것도 입력을 안했다면 영문을 알 수 없는 엄청나게 긴 값으로 설정 되있을 것이다. 이를 자신이 식별할 값으로 넣어줘야한다. 이렇게 설정했다면 다음으로 넘어가자.

 

위 빨간색 화살표를 눌러 Debug모드로 들어갑니다.

 

 

그 후 매터리얼을 보면 Saved_Properies -> Colors로 들어가게 되면 값들이 보일 것이다. 

 

만약 여기서 매터리얼을 만들기전에 셰이더 그래프에서 Reference를 제대로 설명했다면 _Emission이 보일 것이다.

 

만약 _Emission이 보이지 않다면 Reference를 조정하지않고 Material을 만든 경우이니 저 First로 적인 부분을 Reference고치듯이 바꿔주어야 한다.


스크립팅

 

public class HP_Ui_trans : MonoBehaviour
{
    private Material material;

    Color full_color = new Color(0/255f, 60/255f, 200/255f);
    // Start is called before the first frame update
    private void Start()
    {
        material = GetComponent<MeshRenderer>().material;
        material.SetColor("_Emission", full_color);        
    }

}

그 후 이런식으로 SetColor함수에 원하는 메터리얼의 Reference를 넣어주고 색상을넣어주면 아주 잘 바뀌는 것을 볼 수가있다.

 

참고로 Color값을 작성할 때는 각각의 모든 값에 255f를 나눠주어야 원하는 값으로 색상을 선정할 수 있다.

 

 

Color와 다른 Float이런 변수도 똑같은 방식으로 설정해 줄 수 있다.

'Unity > VR' 카테고리의 다른 글

Unity 그래픽 최적화를 위한 Batches관리  (0) 2022.07.22
XR Interaction toolKit IndexTouch 인식 이슈  (0) 2022.06.30
XR Interaction ToolKit Teleportation, Grab 분리  (0) 2022.06.26
VR 캐주얼 FPS제작  (0) 2022.06.26
Unity 스킬 확장  (0) 2022.02.22