1. 공부 목적 갑자기 웬 오클루전 컬링이냐... 오타쿠는 게임을 하다 보면 이게 어떻게 되지...? 라는 생각을 하게 됩니다... 요즘 가장 관심을 가지고 보고 있는 것이 맵이다. 특히 오픈월드를 하다 보면 저 많은 prop들을 어찌... 물론 매 프레임마다 다 품고 가는 것은 아니겠지만 구체적으로 어떤 방법들을 사용하는지 알아봐야겠다는 생각만 일주일이나 했다. (졸업시켜줘) 가장 먼저 알아보게 된 것이 바로 오클루전 컬링! 이전 프로젝트들에서는 배칭만 사용해보았는데 (이것도 주도적으로 적용해본 것이 아니기 때문에 추가적인 공부를 할 예정!) 공부를 하다 보니 오클루전 컬링을 사용하기에 적합했겠다 싶은 프로젝트들 몇 개가 떠오른다. * 나중에 다 까먹더라도 꼭 생각할 것 두 가지: GPU를 절약할 필요..
전체 글
Unity / C#이미 여러 연습 프로젝트에서 코루틴을 활용해왔다. 그런데 코루틴이란 것은 쓰면 쓸수록 이상한 녀석인 것 같다. 동기적인 방식으로 비동기적인 동작을 가능하게 한다는 점, yield return 뒤에 어떤 값을 넣느냐에 따라 다양하게 작동하고 활용 또한 달라진다는 점 ..등등 신기한 부분이 정말 많다. 이때까지 그런가보다 하면서 쓰다가 좀 더 구체적으로 설명해보려고 하니 내가 알고 있는 게 뭐지 싶다. 몰라도 어떻게든 쓸 수는 있겠지만 그래도.. 코더는 되지 말아야지 하는 생각에 코루틴을 뜯어보기로 했다. 그래서 오늘 코루틴을 공부하려고 했는데...! 무엇부터 공부해야 할지 감이 잡히지 않아서 제일 이상해 보이는 "yield return"이라는 녀석을 건드려 보기로 했다. yield 문 - 반복기의 다음 요..
이전에 유니티에서 씬을 전환할 때 LoadScene이 아닌 LoadSceneAsync가 권장된다는(? 자주 쓰인다는?) 이야기를 들은 적이 있다. 그 때는 제대로 이해하지 못하고 그런가보다... 했는데 ✨이번 프로젝트에서 로딩씬을 담당하면서 씬 전환을 더 뜯어보게 되었다. 🎥 씬 로드 - BaseScene을 상속받는 각 씬의 스크립트 씬 내부에 필요한 오브젝트를 미리 넣어두는 것이 아니라, 씬이 시작될 때 프리팹을 로드해서 쓰는 방식을 활용하고 있다. 하나의 씬에 여러 UI나 오브젝트가 존재해야 할 때 인스펙터창에 일일이 넣다 보면 오류가 생기게 되고, 씬이 바뀔 경우(테스트씬 -> 본씬)에 모두 다시 지정해야 하기 때문에 협업 상황에서도 효율이 떨어진다. 따라서 각 씬의 스크립트들이 각 씬이 시작될 때..
[메모리 구조] - stack : compilor - heap : programable - data : 전역, 정적 변수 저장 (특징 - 초기화 필요 : 관리가 더 잘 되고 있는 편) - code : 델리게이트와 연관 (함수를 만들었을 때 함수 주소 테이블은 코드 메모리에서 저장) (함수 명 = 함수 주소) 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com 델리게이트란? 델리게이트는 메서드에 대한 참조를 나타내는 형식이다. 델리게이트 선언 단계에서 메서드의 시그니쳐를 지정하고, 이 시그니처와 일치하는 메서드들을 해당 델리게이트의 객체에 할당해서 사용할 수 있다. 이렇게 사용하면 메서드를 변수처럼 활용할 수 있게 되어 메..
* 진짜 오랜만에 쓰는 틸,, 일주일동안 한 것! ✨ 플레이어의 움직임 & 상태머신 ✨ 주방기구 만들기 ✨ 주방기구 - 플레이어 상호작용 ✨ 요리 과정 어느 정도 구현이 되고 나니 뿌듯하기도 하고.. 정말...정말 많은 일이 있었다.. 우선 어제까지 구현한 모습! (지금은 수정 중) 우리 귀여운 아기토끼 진짜 열심히 일해요 팀 내에서 가장 부족한 사람인데 어쩌다보니 물리적인 반응이 요구되거나 움직이는 것들만 내가 맡게 되었다. 움직임이 들어가니 정말... 예상치 못한 일들이 너무 많이 일어나고 원하는 대로 잘 되지 않는다. 하지만 해냈죠?????? 🔥 🔥 🔥 🔥 아무튼 우리팀 사람들 다들 너무 잘하고... 저걸 어떻게 다 하나 싶고.. 그래서 멘탈이 더 나가는 것도 있지만 동시에 멘탈 잡아주는 것도 우리..
프로젝트에서 플레이어의 움직임을 가상 조이스틱으로 제어하기로 했다. [시행착오] 가상 조이스틱을 구현하는 방법에 대해 생각하던 중, 처음에는 UI요소에 스크립트를 달고 인터페이스(IDragHandler)와 이벤트를 통해서 드래그 가능하게 하여 UI이미지에도 움직임을 주면서 방향값을 받아와서 플레이어가 이동하도록 구현하려고 했다. 하지만 프로젝트를 모바일에서 PC로 확장할 가능성도 있고, 상태머신을 사용한다는 점을 고려하여 Input System을 기반으로 하는 가상 조이스틱을 만들어보게 되었다. (Input System은 특정 액션(ex. 공격, 상호작용 등)에 대해 여러 입력 방식을 쉽게 연결할 수 있으므로 상태머신과 연결하기 쉽다는 장점이 있다.) 단순하게 Input System을 써야겠다는 생각을 ..
클래스 저장 위치: 힙에 저장 타입: 참조 타입 (Reference Type) 상속: 가능 기본 생성자: 기본 생성자를 가질 수 있음 null: 가능 사용 : 큰 데이터 또는 참조를 필요로 하는 객체, 상속이 필요한 경우, 라이프타임 동안 변경될 수 있는 객체 등에 사용 구조체 저장 위치: 스택에 저장 타입: 값 타입 (Value type) 상속: 불가능 기본 생성자: 기본 생성자를 가질 수 없음 null: 불가능 (Nullable를 사용하여 null 가능한 구조체를 만들 수는 있음) 사용 : 작은 데이터 묶음, 간단한 값 객체, 불변성(immutability)이 필요한 경우 등에 사용 사용 1. 클래스 사용 시나리오: 객체의 라이프타임 동안 상태가 변경될 가능성이 있는 경우 상속이나 다형성이 필요한 경..
접근제한자 접근 제한자는 클래스, 메서드, 변수, 속성 등의 멤버에 대한 접근 수준을 제한하는 역할을 한다. 이를 통해 캡슐화를 할 수 있으며, 클래스 내부의 상세 구현을 숨기고 외부에 제공할 것들만 노출함으로써 코드의 안정성을 높이게 된다. 종류 자주 사용되는 접근 제한자에는 public, private, protected, internal, protected가 있다. public : 가장 개방적인 접근제한자로, 어디에서나 해당 멤버에 접근할 수 있도록 한다. private : 가장 제한적인 접근제한자로, 해당 멤버가 선언된 클래스 내에서만 접근이 가능하다. protected : 해당 멤버가 선언된 클래스와 그 클래스를 상속받은 자식 클래스 내에서만 접근이 가능하고, internal: 같은 어셈블리 내..