개발단에 가입하여 베르의 게임 개발 유튜브를 후원해주세요!

 

베르의 게임 개발 유튜브

안녕하세요! 여러분들과 함께 게임 개발을 공부하는 베르입니다! 게임 개발에 도움이 되는 강좌들을 올리는 채널입니다! [투네이션 후원] https://toon.at/donate/637735212761460238 [유니티 어필리에이트

www.youtube.com

안녕하세요! 여러분들과 함께 게임 개발을 공부하는 베르입니다!

이번에는 유니티에서 머티리얼을 다룰 때 알아두면 좋을 머티리얼 인스턴싱에 대해서 알아봅시다.

 

사용 엔진 버전 : 2020.3

 

타임라인

0:00 인트로

0:11 기본 머티리얼

1:25 머티리얼 인스턴싱

3:06 아웃트로

스크립트

인트로

안녕하세요. 여러분들과 함께 게임 개발을 공부하는 베르입니다.

이번에는 유니티에서 머티리얼을 다룰 때 알아두면 좋을 머티리얼 인스턴싱에 대해서 알아보겠습니다.

기본 머티리얼와 오브젝트

그럼 먼저 기본 머티리얼과 씬에 배치된 오브젝트의 특성에 대해서 알아보도록 하겠습니다.

씬에 캡슐 오브젝트를 3개 추가합니다.

각각의 캡슐 오브젝트가 똑같은 몬스터의 다른 타입이라고 가정해보겠습니다.

그 다음엔 프로젝트 뷰에서 이 몬스터들이 사용할 머티리얼을 생성하고 적용해줍니다.

이 몬스터 타입들은 같은 머티리얼을 공유하며 타입 1번 몬스터는 기본 형으로 빨간색을 머티리얼을 사용하고 타입 2는 검붉은 색 머티리얼을 사용하며, 타입 3번 몬스터는 주황색을 사용하도록 하는 방식으로 머티리얼의 색상만 다르게 적용하도록 기획되었다고 가정하겠습니다.

이제 이 기획을 적용하기 위해서 타입 2 몬스터를 선택하고 타입 2 몬스터의 머티리얼 색상을 변경하면 의도와는 다르게 모든 몬스터의 색상이 변경됩니다.

이것을 해결하는 가장 간단한 방법은 각 몬스터마다 머티리얼을 만들어서 적용해주는 것입니다.

이렇게 문제를 해결할 수도 있겠지만, 몬스터가 아니라 플레이어라면 또 문제는 달라집니다.

RTS 게임처럼 플레이어의 수에 따라 색상이 달라진다면, 이 색상에 대응하는 모든 머티리얼을 만드는 방식은 매우 비효율적입니다.

머티리얼 인스턴싱

그렇기 때문에 머티리얼 인스턴싱이라는 방법을 이용해야 합니다.

머티리얼 인스턴싱은 간단하게 이야기해서 원본 머티리얼을 복사해서 자기만의 머티리얼을 만드는 것입니다.

MaterialIntancer라는 이름으로 C# 스크립트를 생성하고 스크립트 에디터를 엽니다.

스크립트 에디터가 열리고 나면 멤버 변수로 인스턴싱할 머티리얼을 가지고 있는 MeshRenderer 타입의 변수와 캐릭터의 색상을 지정하는 Color 변수를 선언해줍니다.

그리고 Start 함수나 Awake 함수에서 GetComponent로 MeshRenderer를 가져오고 가져온 MeshRenderer의 material을 Instantiate 함수로 복제해줍니다.

그 다음에 머티리얼의 색상을 변경하도록 코드를 작성합니다.

코드 작업이 끝나면 코드를 저장하고 에디터로 이동합니다.

에디터로 돌아온 다음에는 각 몬스터 오브젝트에 컴포넌트를 부착하고 변경할 색상을 지정해줍니다.

이제 게임을 플레이시켜보면 각자의 머티리얼이 서로에게 간섭하지 않고 서로 다른 색깔을 표시하게 되는 것을 볼 수 있습니다.

그리고 오브젝트를 선택해서 살펴보면 원래는 M_Monster (Material)이라고 표시되던 머티리얼이 M_Monster (Instance) (Clone)으로 표시되면서 현재 머티리얼이 원본이 아닌 복제된 머티리얼임을 알 수 있습니다.

물론 이렇게 무작정 머티리얼을 복제하게 만들면 같은 머티리얼에 대해서도 복제본이 생겨나기 때문에 머티리얼 관리자 같은 방식을 이용해서 완전히 같은 머티리얼이 이미 복제 생성되어 있는 상황이라면 그것을 가져와서 사용하도록 하는 것이 좋습니다.

아웃트로

이번 영상에서는 원본 머티리얼을 공유하는 오브젝트들이 각자 다른 방식으로 표현되도록 할 수 있는 머티리얼 인스턴싱에 대해서 알아보았습니다.

이 강좌는 시청자 여러분들의 시청과 후원으로 제작되었습니다.

이상 베르의 게임 개발 유튜브였습니다. 감사합니다.

 

[유니티 어필리에이트 프로그램]

아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.

 

에셋스토어

여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다.

assetstore.unity.com

 

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

 

Create 2D & 3D Experiences With Unity's Game Engine | Unity Pro - Unity Store

Unity Pro software is a real-time 3D platform for teams who want to design cross-platform, 2D, 3D, VR, AR & mobile experiences with a full suite of advanced tools.

store.unity.com

[투네이션]

 

-

 

toon.at

[Patreon]

 

WER's GAME DEVELOP CHANNEL님이 Game making class videos 창작 중 | Patreon

WER's GAME DEVELOP CHANNEL의 후원자가 되어보세요. 아티스트와 크리에이터를 위한 세계 최대의 멤버십 플랫폼에서 멤버십 전용 콘텐츠와 체험을 즐길 수 있습니다.

www.patreon.com

[디스코드 채널]

 

Join the 베르의 게임 개발 채널 Discord Server!

Check out the 베르의 게임 개발 채널 community on Discord - hang out with 399 other members and enjoy free voice and text chat.

discord.com

 

반응형

+ Recent posts