반응형
Resources 폴더 아래에 있는 모든 머티리얼(Material)을 가져오고,
각 블럭의 index에 맞게 material을 교체해보자.
먼저 큐브를 넉넉히(10개) 만들고 보기 좋게 정렬해두자.
각 큐브는 ChangeMaterial.cs를 가지고 있다. index를 0 ~ 10으로 적절히 변경해둔다.
Resources 폴더 아래에 Material/BlockColor에 변경하고 싶은 Material을 준비해둔다.
Ctrl + Shift + N으로 빈 오브젝트를 만든 후 아래의 BlockCreator.cs를 추가한다.
Resources.LoadAll로 Resources 폴더 아래의 "Material/BlockColor"에 있는 Material을 모두 가져왔다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BlockCreator : MonoBehaviour
{
public Material[] blockColor;
static BlockCreator instance = null;
public static BlockCreator Instance
{
get
{
if (null == instance) return null;
return instance;
}
}
void Awake()
{
if (null == instance) instance = this;
blockColor = Resources.LoadAll<Material>("Material/BlockColor");
}
}
게임을 실행하면 선택한 폴더 아래의 모든 Material을 BlockCreator가 가지고 있는 것을 알 수 있다.
ChangeMaterial.cs는 아래와 같다.
Renderer의 materials를 통째로 가져온 후, 첫번째 material을 변경하고 다시 반영하면 material을 바꿀 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeMaterial : MonoBehaviour
{
public int index;
void Start()
{
Renderer rd = this.GetComponent<MeshRenderer>();
Material[] mat = rd.sharedMaterials;
mat[0] = BlockCreator.Instance.blockColor[index];
rd.materials = mat;
}
}
게임을 실행하면 큐브에 설정한 index대로 아래처럼 바뀐다.
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
'개발 > Unity' 카테고리의 다른 글
유니티 에셋 - 런타임 파일 브라우저로 파일 업로드하기 (Upload Files using Runtime File Browser) (0) | 2022.06.29 |
---|---|
유니티 - SmoothDamp를 코루틴에서 사용하기 (SmoothDamp with Coroutine) (0) | 2022.06.28 |
유니티 디버깅 - Error Pause를 활성화하여 에러 발생 시 게임 멈추기 (0) | 2022.06.26 |
유니티 - JsonUtility로 Json 내보내기 : (4) Export (0) | 2022.06.25 |
유니티 - JsonUtility로 Json 파싱하기 : (3) 오브젝트 배열 파싱 (0) | 2022.06.25 |
댓글