sharedMaterial
머테리얼의 속성을 변경할때 SharedMaterial으로 색상을 바꾼다던지 쉐이더코드의 프로퍼티값들을 변경한다. 그런데 이 런타임중에 변경된 머테리얼의 값들은 종료해도 바뀐 값 그대로 유지된다. 이것을 봤을때 Material에셋과 대응한다고 볼 수 있다.
같은 머테리얼을 가지고 있는 오브젝트
sharedMaterial을 사용하면 같은 머테리얼을 사용하는 모든 오브젝트가 변경된다. 예를들어 플레이어가 공격한 몬스터에게 림라이트효과를 주고 싶어 피격받은 몬스터의 Rim의 굵기를 변경했는데, 주위 모든 몬스터들의 Rim의 굵기가 변경되는것이다. => sharedMaterial을 참조하여 렌더링하기 때문 (배치 렌더링)
하지만 피격한 몬스터의 Rim만 변경을 원하기에 Renderer.material로 특정 오브젝만 변경할 수 있다.
복사본을 생성(Instance)하는 Renderer.material
값을 변경을 하지 않아도 Renderer.material을 참조하는 순간!, 사본이 생성된다. 당연히 사본을 생성했기에 배치 랜더링이 되지않는다.
해결법은 Material Property Block
학습참고
http://thomasmountainborn.com/2016/05/25/materialpropertyblocks/
https://docs.unity3d.com/kr/530/ScriptReference/MaterialPropertyBlock.html
'유니티 > 레퍼런스' 카테고리의 다른 글
Unity) 유니티 이벤트함수 실행순서 / 라이프사이클,플로우차트(Script Lifecycle Flowchart) #2 (0) | 2019.08.22 |
---|---|
Unity) 유니티 이벤트함수 실행순서 / 라이프사이클,플로우차트(Script Lifecycle Flowchart) #1 (0) | 2019.08.22 |
유니티) Destroy와 DestroyImmediate (0) | 2019.06.05 |
유니티) Define / 전처리기 플랫폼 의존 컴파일 (0) | 2019.03.05 |
유니티) 라이트효과 PostProcessing (0) | 2019.03.02 |