Unity

머테리얼 및 텍스쳐 변경 (코드에서)

Dean83 2023. 10. 18. 21:43

Material 변경할 오브젝트 기본 설정

// Resources/이후 Material 파일 경로 지정
// ex) "Material/Glass_B"
private string materialPath = "파일경로";

// Material 불러오기
private Material mat;
mat = Resouroes.Load<Material>(materialPath);

// Material 조작할 게임 오브젝트 생성
GameObject ob = new GameObject("object");
ob.AddComponent<MeshFillter>();
ob.AddComponent<MeshRenderer>();

// Material 설정
ob.GetComponent<MeshRenderer>().shareMaterial = mat;

Material 자체 변경

// Material 개수만큼 상수 선언
const int MATERIAL_NUM = 10;
public int i;
// Material Inspector에서 각각의 Material 추가필요
public Material[] mat = new Material[MATERIAL_NUM];
public void ChangeMat()
{
		// i값을 통해서 Material 변경
    gameObject.GetComponent<MeshRenderer>().material = mat[i];
}

Color, Smoothness 변경

// 색상 변경 RGBA 255 기준
// 225를 22500%로 인식하기 때문에 255를 나누어주어야함
// color 대신 color32사용시 255가능
gameObject.GetComponent<Renderer>().material.color = new Color(value/255f, 
										value/255f, value/255f, 1);

// Standard Shader에서 Smoothness값 변경할때 사용
// value는 0~1 사이의 float값
gmaeObjcet.GetComponent<MeshRenderer>().material.SetFloat("_Smoothness", value);

** 해당 머테리얼 축소 및 확대 > 간격의 차이 기능

** brightness > darkness 기본 구조의 value bar

*** (유리창) 투명도 설정 기능

  • 축소 및 확대로는 Offset설정 x, y를 조절함 이는 가로 세로로 얼마나 확대할 것인지 설정 가능 간격의 차이로는 Tilling설정 x, y를 조절함 이는 하나의 오브젝트에 가로 세로로 얼마나 반복할 것인지 설정 가능
  • 밝기는 Metalic 조절시 얼마나 빛 반사가 되는지 설정 가능, 수치가 높을수록 빛 반사가 잘됨
  • 투명도 설정시 RenderingMode Transparent로 설정후 투명도 조정

if, 만일 사용자가 원하는 텍스처 라면? 기본적으로 png/jpg를 가지고 텍스처로 만드는 기능이 있음 - 스크립트화 필요

Shader 내 Texture 변경

  • Texture파일은 Resources폴더 내에 있어야 접근이 가능함
// 불러올 Texture파일
Texture 텍스쳐 = Resources.LoadAssetAtPath("Asset/텍스처경로/texture.png", 
											typeof(Texture)) as Texture;
Renderer _renderer = 텍스쳐를 바꿀 오브젝트.GetComponent<Renderer>();
_rendere.material.mainTexture = 텍스쳐;