2017-09-20 16 views
0

고래의 색상을 다르게하고 싶습니다.Unity FBX 문제

하나는이 스킨으로 렌더링되고 다른 하나는 다른 하나가됩니다.

하지만 색상을 편집하려고하면 두 가지 색상이 동시에 변경됩니다.

피부가 마지막으로 이어집니다.

어떻게해야합니까? 두 개의 동일한 물체가 동일한 재료를 사용하는 경우, 렌더링 또는 최적화하기 위해 메쉬

enter image description here

답변

4

는, 실제로 사용되는 것과 같은 경우이다. 간단하게, 두 마리의 고래는 같은 물질을 사용하고 있습니다. 그리기 호출을 저장하는 것입니다.

그래서 변경하면 둘 다 변경됩니다.

해결책은 재료를 복제하여 그 중 하나에 할당하는 것입니다. 이제는 다른 것에 영향을주지 않고 하나를 변경할 수 있습니다. 또한 추가 드로 콜을 하나 추가했습니다.

3

자료 복제 (두 고래가 일괄 처리되는 것을 방지하기 위해)의 대안으로 MaterialPropertyBlocks을 사용할 수 있습니다.

일반적으로 사용하기가 쉽습니다. 새 스크립트에서는 MaterialPropertyBlock을 만들고, 객체에 넣을 색상으로 색상을 설정하고 MaterialPropertyBlock을 객체의 렌더러에 지정합니다.

MaterialPropertyBlock.SetColor()에는 작업 예제가 있지만 그리기 호출은 필요하지 않습니다 (이는 지나치게 엔지니어링 된 예입니다). 이 충분하다 :

Start() { 
    MaterialPropertyBlock mpb = new MaterialPropertyBlock(); 
    mpb.SetColor("_MainColor", new Color(1,0,0)); 
    gameObject.GetComponent<MeshRenderer>().SetPropertyBlock(mpb); 
} 

결과 :

Only one material

이것은 당신이 쉐이더 매우 복잡한 일을 할 수있는, 장기적으로 더 효율적으로 될 수있을 테니까요, 모든 객체가 사용하는 것과 동일한 단일 재질이지만 모두 고유 한 모양을 가지고있어 렌더링 속도가 떨어지지 않습니다. 하드 파트은 조정하려는 셰이더의 속성 이름을 알아냅니다.

물론 결과는 재생 모드에서 실행될 때만 나타납니다 (클래스에 [ExecuteInEditMode]으로 태그 지정하지 않은 경우).

+0

이전에 보지 못한 꽤 산뜻한 방법입니다. – Everts

+0

@Evertts 오, 그래, 아주 멋지다. – Draco18s