선 결과물개인적으로 Screen Position 노드를 사용할 때,실제 화면 비율과 상관없이 가로 세로 UV 값이0 ~ 1로 제공 되는 것이 마음에 들지 않았다.이렇게 텍스처가 늘어나게 되는데,화면비율을 고려하면 1:1.xx... 정도 되어야 하는거 아닌가? 그래서 화면비율을 계산하고그 비율을 그대로 화면 UV에 곱해버렸다. 그런데 이게 가로를 1로 볼 수도 있고세로를 1로 볼 수도 있기 때문에옵션이 필요했다. GPT가 이런 소리를 하는데,Branch 대신 Lerp를 사용하였다. 그리고 역수 노드라는 것을 알게 되었다. 근사값 만으로 충분하면 Fast를 쓰고 말겠다... 서브 그래프로 만들었고, 테스트를 위해 엄청 간단한 쉐이더를 만들었는데, 문제발생 문제발생화면 좌측하단 UV 값이 0,0이기 때문에 이..
텍스처를 반복시키는 방법에 대해 고민하게 되었다.뭔 개소리인가? 싶을 수 있다.왜냐하면 Wrap Mode를 Reapeat로 바꾸고Tiling 값을 높여주면 되는 일... 그런데 타일 간격을 줄 수 없었다.이런거 하고 싶었는데,정답은 결국 수학이었다. 여기서 끝? ...낼 수 있었는데왜곡 효과를 주려다 보니 문제가 발생했다. UV 왜곡이 격자 경계에서 단절되는 모양이다. 해결 방법은 간단한데,Fraction 연산을 하기 전에UV 왜곡을 하면 되는 거였다. 서브그래프로 만들었고두 텍스처를 교차시켜 벽지로 만들었다. 그리드 전체나 격자 한 칸을 회전시킬 수 있도록두 개의 Rotate 노드를 사용했다. 문제 발생 문제 발생 UV를 회전시키니 텍스처가 잘려버린다. 정사각형인 UV의 대각..
유니티 쉐이더 공부를 하던 중 Stencil(이하 스텐실)이라는 것을 알게 되었다. 스텐실은 GPU의 렌더링 파이프라인에서 픽셀 단위로 그릴지/안 그릴지를 결정하는 버퍼이다.더보기버퍼(Buffer)란, 컴퓨터 그래픽스에서 데이터를 임시로 저장해두는 메모리 영역을 뜻한다.렌더링에서는 컬러(Color), 깊이(Depth 또는 Z), 스텐실(Stencil) 등의 Buffer가 있다. 특정한 구조나 형태가 정해져 있는 것이 아니라, 단순히 해상도 크기만큼의 픽셀 단위 정보를 임시로 저장하는 공간이다. 예를 들어 1920×1080 해상도라면 컬러, 깊이, 스텐실 각각 1920×1080 크기의 데이터가 저장되며,색상은 RGBA(약 8MB)깊이는 24~32비트 값(약 6MB)스텐실은 8비트 값(약 2MB) 정도의 메..
학원에서 다른 학생을 볼때Raycast가 안 된다며 몇 시간을 붙잡고 보면LayerMask 설정을 잘못한 경우가 꽤나 많습니다. 직접 LayerMask 변수를 만들어 사용하면 괜찮긴한데,변수 하나 만드는 것과 Inspector에서 직접 설정 해야한다는 점이 개운하지 못합니다. LayerMask mask = 1 그렇다면 방법은 NameToLayer( )라는 메서드를 사용하고비트 연산을 하는 것인데,학원에서 배울정도면 비트 연산에 대해 낯설수 있습니다. 그것을 쉽게 해줄 방법은 아니지만,Raycast가 어떤 int형 매개변수를LayerMask 설정으로 사용하는 원리? 방법을 알게되면인상깊어서 앞으로의 실수는 없지 않을까 생각해봤습니다.using UnityEngine;public class RaycastTes..
Photon을 사용하여 매치메이킹을 구현하면서Room List를 보여줄 방법으로 Scroll View를 사용하기로 하였습니다.Scroll View, 별거 없을거라 생각하고 기회되면 한 번 쓰지... 하는 생각으로 미뤄두다가처음 사용하게 되었는데 꽤 쓸만한거 같습니다.깊게 고민하고 사용하지 않아서 그럴지도 모르지만간단하게나마 사용법에 대해 정리하려고 합니다. Canvas 생성은 생략하고,Scroll View를 만들게 되면 이런 식으로 생성됩니다. 최상위 객체인 Scroll View에는 Scroll Rect 컴포넌트가 있습니다. 이름만 보아도 기능에 대해 충분히 유추 가능한 것 같습니다. 먼저 두 bool 값에 대해 보면 체크한 축으로 스크롤이 가능합니다.체크를 해제하면 해당 축으로는 스크롤을 할 수 없습니..
우선 Sequence는 단일 객체가 아닌,다수의 객체에 대한 여러 트윈을 하나로 묶고등록한 순서대로 트윈을 재생하기 위해 사용합니다. Sequence sequence;Sequence는 변수 선언 시 null 상태입니다. sequence = DOTween.Sequence(); static으로 선언된 생성자가 있습니다.이 생성자를 통해 Sequence를 만듭니다. 시퀀스는 생성 즉시 자동으로 재생됩니다. sequence = DOTween.Sequence().Play();Play()를 사용해 시퀀스를 재생할 수 있지만 자동 재생입니다. sequence = DOTween.Sequence().Pause();이를 원치 않으면 트윈을 추가하면서 동시에 재생을 중단해야 합..
0. 코드전문using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using DG.Tweening;[RequireComponent(typeof(Canvas))]public class InfoUIController : MonoBehaviour{ readonly Queue infoUIs = new Queue(); public Image prefab; Image currentInfo = null; [SerializeField, Header("시작 위치")] RectTransform startPosition; [SerializeField, Header("목표 위치")] RectTransform tar..
0. 코드 전문123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166..
