본문 바로가기
개발/Unity

유니티 - 머티리얼 로드하고 바꾸기 (Load and Change Materials)

by 피로물든딸기 2022. 6. 26.
반응형

Unity 전체 링크

 

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:

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Unity Pro:

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

Unity 프리미엄 학습:

 

Unity Learn

Advance your Unity skills with live sessions and over 750 hours of on-demand learning content designed for creators at every skill level.

unity.com

반응형

댓글