Unity 9

[Unity] Shader Graph Swizzle Node란 ?

유니티 Shader Graph 내에는 Swizzle이라는 노드가 있습니다. 예제들을 하나씩 따라서 구현해보는데 해당 노드가 어떤 역할을 해주는지 정확하게 알아보고 싶어 찾아보았습니다. 아래는 유니티 Docs 공식 설명입니다. 입력 벡터의 재정렬된 요소에서 새 벡터를 만듭니다. 이것을 스위즐링이라고 합니다. 입력 요소를 혼합하는 방법을 지정하려면 입력 마스크에 형식 지정 문자열을 입력하세요. 예를 들어 입력 요소의 순서를 바꾸려면 "wzyx" 또는 "abgr" 문자열을 사용합니다. 입력 마스크의 길이에 따라 출력 벡터의 크기가 결정됩니다. "잘못된 마스크" 오류는 입력 벡터에 존재하지 않는 하나 이상의 채널을 포함하는 입력 마스크 값을 나타냅니다. 예를 들어 입력 벡터의 x, y 및 z 요소를 사용하여 벡..

[Unity] Reflex

❗ Reflex는 매우 빠르고, 최소한이지만 완전한 Unity용 종속성 주입 프레임워크 입니다. GitHub - gustavopsantos/Reflex: Minimal dependency injection framework for Unity Minimal dependency injection framework for Unity. Contribute to gustavopsantos/Reflex development by creating an account on GitHub. github.com 🎯 Reflex 도입 목적 및 목표 저는 수년 동안 Zenject/Extenject를 사용했지만 CodeBase가 너무 컸고, 공개된 API가 너무 많아서 초보자의 학습 곡선이 가파르게 느껴졌고, 성능도 그다지 좋다..

[Unity] 2D URP 화면 굴절 쉐이더 구현해보기

완성 결과물 미리보기 사전 준비 Background(바다 배경) 이미지와 Mask 역할을 해줄 이미지를 아래와 같이 생성합니다. 2. Mask 이미지가 Background 이미지에 가려지지 않게, Sorting Layer를 지정합니다. (Add Sorting Layer를 통해 Mask 레이어를 추가해줍니다.) 3. Settings/Renderer 2D의 Foremost Sorting Layer 설정을 변경해줍니다. 쉐이더 구성하기 우선 쉐이더를 구성하려면, 쉐이더를 먼저 생성해야 합니다. 아래와 같이 Shaders 폴더 안에 Sprite Unlit Shader Graph를 생성해줍니다. Distortion Shader 구성하기 3D 환경에서는 아래와 같은 구성으로 Scene Color를 바로 사용할 수 ..

Unity) C#. Foreach문

나는 C#은 따로 공부한적이 없고 C++ , Windows API, C언어만 공부했기에 골드메탈님의 유니티 강의에서 foreach라는 구문을 처음봤다. 간단하게 설명해 주셨는데, foreach문은 프로그래머가 직접 처음과 끝을 입력해줘야하는 for문과 달리 알아서 배열의 처음부터 끝까지 반복해주는 구문이다. foreach문을 짤때는 foreach(자료형 변수명 in 배열) 이런식으로 짜줘야한다. 또 중요한건 배열만이 foreach문을 사용할 수 있다.

Unity) Ray 와 RayCast

Ray와 RayCast를 간단하게 정리 해놓으려 글을 쓴다. Ray란 지정한 위치에서부터 무한대로 발사되는 가상의 선이다. 게임속에선 보이지 않지만 Debug를 통하여 Ray를 확인할 수 있다. 보통 Ray를 사용한 후에 Ray에서 반환된 값을 찾기 위해서 RayCastHit 를 사용하는데 빨간 네모칸의 함수를 사용하면 Ray에 닿은 물체의 정보를 반환할 수 있다. 위의 예제에서 Physics.Raycast(ray, out rayHit, 100) 가 있는데 ray는 발사되는 ray를 넣어준거고, out rayHit가 있는데 여기서 out은 return의 기능을 수행하여 RaycastHit rayHit 로 선언된 rayHit에 ray와 닿은 값을 리턴해주는 것이다. 100은 ray의 최대길이이다.

Unity) Coroutine 함수란 ?

이번엔 코루틴 함수에 대해서 다뤄(?) 기록 해보려고 한다. 코루틴 함수라는 개념은 Unity 에서 엄청 중요한 개념인데 간단하게 말하자면 Invoke 함수의 기능을 한다고 볼수도 있다. 함수라는 개념은 보통 함수안에서 다른 함수를 호출해 그 함수를 실행후 다시 메인함수로 복귀하여 다시 메인 함수를 진행하는 식인데 코루틴 함수는 내가 지금까지 공부한 것과는 다르게 작동한다. 메인함수에서 호출시 다른 함수처럼 서브 함수라는 개념이 아니라 같이 작동한다. 메인 함수와 같이 알기 쉽게 예를 들자면 MMORPG 게임에서 내가 움직임과 동시에 다른 플레이어가 움직이는게 Coroutine 함수라고 볼수 있다. Routine 앞에 Co를 붙여 Coworker(동료) 와 같이 함께 한다는 의미로 보면된다. 위 함수를 ..

Unity) Particle System이란?

오늘은 유니티의 파티클 시스템을 다시 만져봤다. 예전에 한번 했었던 기억이 있지만 2,3달 동안 유니티를 안 건드렸기에 잠시 잊었지만 다시 공부하면서 차츰 기억이 나기 시작했다. 그래서 다신 잊지 않도록 파티클 시스템에 관련하여 글을 남겨놓으려고 한다. 파티클 시스템이란 개념을 잘 알지는 못하지만 내가 느끼는 개념은 그냥 GameObject들을 예쁘게 꾸며주고 화려하게 만들어주는 이펙트라고 본다. 위 사진은 Particle System을 적용했을 시에 보이는 파티클의 예제이다. 골드메탈님의 영상을 참고하여 파티클을 배웠고 그 예시로 적용했다. 보기엔 화려하지만 해야 할 일들은 매우 적고 간단하다. 최근 Low level 한 Windows API들을 공부하다가 이런 High Level 엔진을 공부하니까 느..

Unity) is Kinematic

Rigidbody 기능에 포함되어있는 Is Kinematic이라는 기능을 체크하기에 앞서 우선 보통적으로 이 기능을 사용하기 전에 Use Gravity기능을 체크해제 해주고 난 후에 사용하게 된다. Use Gravity기능을 체크해제 해주면 이 개체는 중력의 영향을 받지 않게 되고, 이 개체를 이동하거나 하려면 따로 코드를 작성해줘야 한다. Is Kinematic : 외부에서 가해지는 물리적 힘에 반응하지 않는 오브젝트라는 의미. 중력과 충돌에 반응하지 않도록 합니다. 오브젝트를 물리 거동하지 않은 스크립트에서 제어하는 데 주로 사용하면서 특정 상황에서 물리 거동으로 전환합니다. 예를 들어, 플레이어는 “걷기”로 일반적으로 이동하면서 폭발이나 충돌이 있을 때 공중에 내던질 수 있습니다. 물리 거동을 사용..

Unity) Continuous의 개념

유니티 Rigidbody에 속해있는 많은 기능들에 껴있는 Collision Detection 부분에는 많은 기능들이 포함되어있는데 Discrete Continuous 등이 있는데 보통은 Discrete가 사용되지만 플레이어 유닛이 예를 들어 벽들에 부딪히면 플레이어의 Trasform이동 처리는 Update()함수에서 처리되는 반면 벽들의 물리 계산은 FixedUpdate()에서 처리하기 때문에 Update와 FixedUpdate의 함수 계산방식은 프레임률이 다르기 때문에 플레이어가 벽을 뚫고 나가는걸 방지해주기 위해서 Collsion Detection에서 Continuous방식을 선택하면 메모리를 조금더 잡아먹는대신에 빠르고 정확한 계산을 해주기 때문에 그런 벽을 뚫고나가는 현상을 막아준다. 골드메탈님을..