Work, Study 11

241224 회전하는 화살 구현하기

https://www.youtube.com/watch?v=R4XsJ645l6E 어제 위 예제를 따라 VFX 그래프를 공부해서 화살 오브젝트를 만들었다.이 예제에서는 VFX 그래프에서 자체적으로 Angle 값들을 설정하는데,실제로 그대로 사용하려면 무리가 있었다. 이 글에서 구현한 것은 위 동영상의 12분 41초를 보면 나오는자체적인 회전을 가진 화살 오브젝트인데 (롤의 애쉬 궁이 대표적) 내 프로젝트에서 사용하기 위해 아래 2가지를 구현해야 했다.목표를 향한 3D 오브젝트의 회전화살 오브젝트의 회전 유지 1. VFX 그래프 우선 VFX의 Output Particle Mesh 부분이다.Angle 부분만 주목하면 된다. Add로 넣었는데 Set(Overwrite)으로 해도 상관 없을듯? 처음에는 외부의 방향..

Work, Study/Unity 2024.12.24

241129 투명 이미지를 마스크로 사용하기

1. 선요약이런 UI를 만들어보겠다..고 섣불리 접근했다가 하루 종일 고생했다. 결과물 2. 내용유니티에서 스텐실 마스크 라는 것을 이용한다. 아래의 과정을 거침. 마스크 오브젝트가 먼저 렌더링, 스텐실 버퍼에 특정한 값을 기록한다.이후 렌더링되는 오브젝트들은 스텐실 버퍼의 값을 확인한다.설정 규칙(스텐실 테스트)에 따라 픽셀을 그릴지 말지를 결정한다. 유니티에서는 셰이더의 UI/Default 에서 이용할 수 있다. 2.1. 2개의 머티리얼 만들기스텐실 마스크를 적용하기 위해서는 우선 어떤 이미지를 올리면서 동시에 그 이미지에 스텐실 버퍼 라는 것을 올려야 한다.나중에 렌더링되는 이미지는 같은 픽셀의 스텐실 버퍼 값을 확인해서 조건에 따라 자신이 가진 이미지를 렌더링할지 말지 결정한다. 우선, 스텐실 버..

Work, Study/Unity 2024.11.29

레이캐스트 관련 정리

계속 UI 와 3D 오브젝트 가 같이 있으면 3D 오브젝트 가 먼저 선택되는 이슈가 있었다. 헷갈려서 이참에 정리해둠1. UI 시스템기본적으로 GraphicRaycaster 및 EventSystem 을 사용한다.UI 요소에 대한 레이캐스트는 3D 오브젝트의 레이캐스트보다 먼저 수행된다.여기서 UI 요소란, 일반적으로 Canvas 게임 오브젝트 아래의 오브젝트들을 의미한다. 하지만 모든 게 대상은 아니다. 1.1. 주요 UI 요소들Graphic 컴포넌트를 가진 오브젝트(Image, Text, RawImage)Selectable 컴포넌트를 상속받은 오브젝트(Button, Toggle, Slider, Dropdown)CanvasRenderer 컴포넌트를 가진 오브젝트들 2. 관련 메서드Physics.Rayca..

Work, Study/Unity 2024.08.24

Awake, OnValidate, Initialize 차이점

1. AwakeUnity 라이프 사이클의 일부.스크립트 인스턴스가 로딩될 때 한 번만 호출된다.비활성화 상태여도 호출된다.다른 스크립트의 Awake 메서드와의 실행 순서는 보장되지 않는다.초기 설정, 변수 초기화, 컴포넌트 참조 등에 사용된다.2. OnValidateUnity 에디터에서만 동작한다.인스펙터에서 값이 변경되거나, 스크립트가 로드될 때마다 호출된다.런타임 중에는 호출되지 않는다.에디터에서의 유효성 검사, 값 조정, 에디터 전용 로직 등에서 사용한다.3. Initialize사용자 정의 메서드다.개발자가 직접 호출해서 사용한다.객체의 초기 상태 설정, 외부에서 필요한 데이터를 전달받아 초기화할 때 사용한다.언제, 어떻게 호출할지는 개발자가 결정한다.

Work, Study/Unity 2024.07.29

직렬화, 프로퍼티와 필드

1. 직렬화의 의미객체의 상태를 저장하거나, 전송할 수 있는 상태로 변환하는 프로세스.Unity에서는 이를 사용해서 프리팹, 에셋, 씬 등의 데이터를 저장한다. 1.1. 프로퍼티와 필드필드 : 클래스의 변수. 데이터를 직접 저장한다.프로퍼티 : 메서드처럼 동작하는 멤버. get, set 접근자로 필드에 접근한다. 1.2. Unity의 직렬화 규칙Public 필드 : 자동 직렬화private 필드 : [SerializeField] 속성을 붙여야 직렬화된다.프로퍼티 는 직렬화되지 않는다.프로퍼티는 메서드이다. get, set 은 코드 블럭을 가질 수 있기 때문에, 단순한 데이터 저장 이상의 로직을 가질 수 있다.직렬화는 데이터 저장이 목적이다. 로직을 포함하는 프로퍼티는 저장 대상이 아니다. 1.3. 왜 이..

Work, Study/Unity 2024.07.29