본문 바로가기
반응형

전체 글505

Unity - DirtyFlag Pattern DirtyFlag Pattern오픈 월드와 같이 대규모 환경에서 성능과 메모리 효율을 높이는데 사용되는 디자인패턴이다. 이는 복잡한 씬이나 계층 구조를 관리하면서 필요한 부분만 업데이트하기 위해 사용된다. 이는 플래그가 관리한다. 예시1) 선택적 로딩 및 언로딩오픈 월드 게임에서 플레이어가 볼 수 있는 근처 지역만 메모리에 로딩한다. 만약 플레이어가 이동하면 그에 따라 새로운 구역이 실시간으로 로드되거나 언로드 된다.2) 계층적 씬 업데이트부모 객체가 변형되면 자식 객체들도 이를 따라 재계산이 필요하다. 하지만 자식 객체가 독립적으로 이동할 경우 이와 같은 계산이 필요 없게 된다. 만약 DirtyFlag패턴을 활용하게 되면 하위 transform은 상위 transfrom에 업데이트를 무시한다. 상태가 자.. 2024. 11. 11.
Unity - Flyweight Pattern(+) ScriptableObject) Flyweight Pattern다수의 객체가 유사한 속성을 가지고 있고, 그 속성 중 일부가 반복되는 경우 메모리 사용량을 줄이기 위해 객체를 공유하는 디자인 패턴이다. 간단히 말해 대량의 인스턴스가 가진 속성을 최적화하는 패턴이다. 예를 들어 이해해보자게임에서 많은 양의 GameObject가 있다고 가정해보면 각 객체가 비슷한 구성 요소나 속성을 가지고 있더라도 각 인스턴스에 동일한 데이터가 복사되기 때문에 많은 메모리를 차지하게 된다.예를 들어 필드가 Value Type(예 : 구조체,배열등)인 경우 각 GameObject는 자체 데이터 복사본을 가진다. 그러므로 우리는 Flyweight Pattern을 사용해서 메모리 최적화를 해야한다. Unity에서 Flyweight Pattern는 Scripta.. 2024. 11. 9.
Unity - Sprite Library Asset 2D 애니메이션을 만드는데 Sprite Libaray를 이용하면 보다 쉽게 스프라이트 관련한 애니메이션을 다룰 수 있단느 것을 알게되었다! Sprite Library동일한 애니메이션 컨트롤러와 키 프레임을 사용할 경우 하나의 애니메이션을 스프라이트 라이브러리에서  관리하고 교체할 수 있도록 돕는 기능이다. 두 종류의 캐릭터를 관리하는 경우를 예로 한 번 살펴보자!01 Sprite Library Asset 생성위 버튼을 클릭하면 아래와 같이 Sprite Library Editor가 나온다. 그리고 +Categories를 클릭하며 사용할 애니메이션의 이름을 넣어 추가해준다.02 다른 스프라이트 라이브러리에 동일한 애니메이션 라벨 복제하기(Ctrl+D) 그리고 위와 같이 똑같이 채워준다.이 방식으로 여러 캐릭.. 2024. 11. 8.
Unity - Unity6가 출시되었습니다! 드디어 Unity6가 출시되었습니다.어떤 부분이 바뀌었는지 대략적으로 같이 알아보아요! 1) 유니티 로고빌드시 유료 요금제를 사용하지 않아도 더 이상 Unity 로고를 강제로 표시하지 않게 설정 할 수 있게 되었다.Edit - Project Settings - Player에 들어간 다음 Show Unity Logo를 해제해주면 된다.2) 에디터 기능 개선새로운 프로젝트 생성시 기본적인 툴이 자동으로 포함되어 변경된 사항이 있다. 스크립트의 경우 세가지 종류로 새롭게 구분되어 필요에 따라 사용하면 된다. 밑에 그림에서와 같이 MonoBehaviour Script, Scritable Script, Empty C# Script 세 가지 종류가 나오는 것을 확인할 수 있다. 3) 빌드 세팅하나의 프로젝트에서 여.. 2024. 11. 7.
Unity - AnimationCurve(Lerp보다 더 좋음!) AnimationCurve시간에 따른 값을 조정하는데 사용된다. 쉽게 말하자면 보다 직관적으로 곡석을 설정하여 오브젝트의 속서을 시간에 따라 어떻게 변화시킬지를 직관적으로 조절할 수 있다. Unity에서 인스펙터창에서 쉽게 커브를 조절할 수 있다.왜 Animation Curve를 사용해야할까?보통 lerp을 이용해서 오브젝트를 부드럽게 이동할 수 있다. 하지만 lerp만 사용하게되면 움직임이 직선적이고 균일하게만 변경할 수 있다. 그렇게 되면 복잡하거나 자연스러운 움직임을 구현하려면 제약이 있다.구성요소01 Keyframe곡선의 각 지점을 나타내며 특정시간에 해당하는 값을 정의하는 요소이다. 02 AddKeypublic int AddKey(float time, float value);시간(Time) : .. 2024. 10. 7.
Unity - Hold on ( busy for .. ) 무한 로딩 문제 요새 다시 새롭게 게임을 만들게 되어서 포스팅이 더디다 하핳.. 문제갑자기 게임 플레이 버튼을 눌렀는데 무한 로딩 문제가 발생! (원인 찾느라 하루가 다 지나가버렸다😂)해결 방법01 코루틴확인실수로 'yield return'문을 지웠는지 확인 -> 이게 원인이었다. 02 게임 껐다 켜기제일 기본적인 방법이지만 일단 한 번 시도해보자 03 Unity 버전 관리프로젝트에서 사용하는 Unity 버전이 여러 개인 경우 충돌이 발생할 수 있다. Program Files에서 Unity Editor 폴더 내에 하나의 버전만 남겨두는 것이 도움이 될 수 있다. 04 캐시 파일 삭제(Unity의 라이브러리 캐시 파일이 손상되었을 수 있다. 프로젝트의 Library 폴더를 삭제하고 다시 열면 Unity가 캐시 파일을 다.. 2024. 7. 18.
반응형