2016-11-16 12 views
2

코드를 통해 지형 텍스처의 오프셋 (2)을 변경하고 싶습니다. 지형에 도로 이미지를 텍스처로 추가했습니다. 관련 코드를 온라인에서 찾았지만이 경우 렌더러의 역할을 파악할 수 없습니다.코드에서 지형 텍스처를 변경하는 방법

코드 이외에도 코드를 통해 텍스처를 변경하기 위해 취해야 할 첫 번째 단계를 알고 싶습니다. (기본적으로 설정). 그리고 렌더러의 역할에 대해 언급하십시오. 유니티 지형 텍스처에서

enter image description here

답변

2

SplatPrototype 클래스에 의해 처리됩니다. See documentation

Splat 프로토 타입은 TerrainData에서 사용되는 텍스처입니다.

그래서 당신이 지형텍스처를 변경하려는 경우 새 SplatPrototype를 만들고이 TerrainDatasplatPrototype 변수로 설정해야.

거기 당신은 metallic, normalMap, smoothness, texture, tileSize하여 원하는 tileOffset의 값을 설정할 수 있습니다.

private void SetTerrainSplatMap(Terrain terrain, Texture2D[] textures) 
{ 
    var terrainData = terrain.terrainData; 

    // The Splat map (Textures) 
    SplatPrototype[] splatPrototype = new SplatPrototype[terrainData.splatPrototypes.Length]; 
    for (int i = 0; i < terrainData.splatPrototypes.Length; i++) 
    { 
     splatPrototype[i] = new SplatPrototype(); 
     splatPrototype[i].texture = textures[i]; //Sets the texture 
     splatPrototype[i].tileSize = new Vector2(terrainData.splatPrototypes[i].tileSize.x, terrainData.splatPrototypes[i].tileSize.y); //Sets the size of the texture 
     splatPrototype[i].tileOffset = new Vector2(terrainData.splatPrototypes[i].tileOffset.x, terrainData.splatPrototypes[i].tileOffset.y); //Sets the size of the texture 
    } 
    terrainData.splatPrototypes = splatPrototype; 
} 
+0

감사합니다위한 WOKED :

는 다음과 같은 방법을 사용할 수 있습니다. 아프다 그것을 시도하고 알려주십시오. –

+0

@ConnorIglesias 완료되면 해결 된 것으로 표시하는 것을 잊지 마세요. –

+0

@ConnorIglesias 런타임시 Terrain 텍스처를 변경하는 것은 많은 작업이므로 실시간으로 피해야합니다. 개인적으로 나는 레벨 로딩 중에이 방법을 사용합니다. –

0

이 ME

splat[i].tileOffset = new Vector2(tar.splatPrototypes[i].tileOffset.x, tar.splatPrototypes[i].tileOffset.y+5f);