본문 바로가기

Unity3D10

deltaTime은 언제 계산될까? deltaTime은 언제 계산될까? 우리가 유니티에서 맨날 사용하는 Time.deltaTime. 이동할 때는 필수고 실시간으로 움직일 땐 여기저기 안 들어가는 곳이 없다. 그런데 Time.deltaTime이 계산되는 기준은 무엇인가? 매 프레임 유니티는 어떤 작업을 수행하고 있으며, Time.deltaTime은 언제 계산하는 걸까? 이에 관해 유니티가 2020.1 버전까지 존재했던 프레임 파이프라인의 문제점과 2020.2 베타 버전에서 개선한 프레임 파이프라인의 순서를 단순화된 형태로 공개한 글이 있어 이를 써보고자 한다. 이 글에 따르면 Unity의 프레임 파이프라인은 현재와 같은 모습을 갖추기까지 많은 변화가 있었다고 한다. 거의 매 릴리즈마다 변화가 있었다고 하니 이전 버전에서는 어떻게 샘플링을 했.. 2023. 7. 15.
유니티 이벤트 시스템 최적화하기 - Graphic Raycaster 제거하기 이벤트 시스템이 렉을 유발하다 어느 순간부터 유니티에서 EventSystem.Update()가 엄청난 렉을 유발했다. 원인은 바로 그래픽 레이 캐스터(Graphic Raycaster)였다. 아무 생각 없이 캔버스를 생성해놨는데, 미처 그래픽 레이 캐스터를 지우지 못하고 방치했더니 프로파일러가 엄청난 스파이크를 발생시키고 있었다. 그래픽 레이 캐스터(Graphic Raycaster) 그래픽 레이 캐스터는 캔버스에 레이저(Ray)를 발사하여 UI에 마우스가 올려졌는지, 클릭하였는지 등을 검사하는 컴포넌트이다. 그래픽 레이 캐스터 - Unity 매뉴얼 (unity3d.com) 그래픽 레이캐스터 - Unity 매뉴얼 그래픽스 레이캐스터는 캔버스에 레이캐스트를 하는 데 사용합니다. 레이캐스터는 캔버스의 모든 그래.. 2021. 8. 10.
유니티 2D에서 Collider와 Rigidbody 최적화에 관하여 ***테스트 결과와 결론이 궁금하신 분들은 마지막 3줄 요약을 확인해주세요! 개요 불과 얼마 전까지, Rigidbody는 물리 연산을 사용하기 때문에 중력 같은 물리 처리가 필요 없다면 Rigidbody를 부착하지 않는 것이 더 효율적이라 생각했다. 그러나 최적화 팁을 보면 오히려 반대였다. ★ 10. Unity 최적화 기법 :: 큰 꿈을 그리는 프로그래머의 공간. (tistory.com) ★ 10. Unity 최적화 기법 Unity 3D :: 게임 최적화 기법 [최적화의 시작은 병목 파악부터] # CPU - 너무 많은 DP CALL - 복잡한 스크립트나 물리 연산 # Vertex Processing - 너무 많은 버텍스들 - 버텍스당 너무 많은 연산 (Verte.. loadofprogrammer.tis.. 2021. 8. 9.
ScriptableObject를 저장하는 법: EditorUtility.SetDirty(Object target) 유니티 에셋(ScriptableObject, Monobehaviour)을 저장하기 Unity - Scripting API: EditorUtility.SetDirty (unity3d.com) Unity - Scripting API: EditorUtility.SetDirty You can use SetDirty when you want to modify an object without creating an undo entry, but still ensure the change is registered and not lost. If the object is part of a Scene, the Scene is marked dirty. If the object may be part of a Prefab inst.. 2021. 3. 17.
유니티 Log Viewer 소개: 빌드하고 Debug.Log를 보고 싶을 때 공들여 만든 유니티를 실제로 플레이할 수 있는 파일로 만들려면 빌드(Build)를 해야 합니다. 그런데 빌드하는 시간이 많이 걸리기 때문에, 보통 유니티 에디터에서 모든 작업을 끝내고 빌드하게 됩니다. 그래서 버그를 모두 테스트하고 나서 빌드하는 방식으로 진행합니다. 그런데 빌드하고 나면 유니티 에디터에서는 발견할 수 없었던 버그가 하나씩 발견될 때가 있습니다. 정말 간단한 버그라면 쉽게 바로잡을 수 있겠지만, 유니티 에디터에서는 멀쩡하던 것이 오류를 내기 시작했다면 버그를 고치는 일이 정말 어렵게 됩니다. 가장 문제는 뭐가 문제인지 모른다는 것입니다. 유니티 에디터에서는 컴파일 오류, 런타임 오류 등 다양한 문제가 발생하면 편리하게 로그를 띄워줍니다. 개발자가 Debug.Log()를 통해 원하는 로그를.. 2021. 1. 11.
Unity VSCode에서 오류가 날 때: CS0246 형식 또는 네임스페이스 이름을 찾을 수 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요. 이번 글은 아래의 Unity Answer에 있는 답변글을 참조하였습니다. VS Code does not find some classes. cs0246/cs0103 - Unity Answers VS Code does not find some classes. cs0246/cs0103 - Unity Answers answers.unity.com Unity VSCode에서 오류가 날 때 유니티에서 VSCode를 사용할 때 다음과 같은 오류가 발생할 때가 있습니다. 한글 cs0246: 형식 또는 네임스페이스 이름을 찾을 수 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요. 영문 cs0246: The type or namespace name could not be found (are you mi.. 2020. 12. 26.
유니티 프로파일러(Profiler)를 이용해 성능 개선하기 게임을 만들 때 제일 골치 아픈 것은 최적화이다. 최적화가 정말 잘 된 게임, 이른바 갓적화인 게임은 낮은 성능의 컴퓨터로도 아주 섬세한 3D 그래픽을 60 프레임으로 표현할 수 있다. 반대로 최적화가 안 된 게임, 속된 말로 개적화 게임은 아주 단순한 2D 도트 그래픽 게임조차 엔비디아 RTX 그래픽 카드에서 40 프레임이 나오지 않을 수 있다. 물론 PUBG 같은 배틀 로얄 장르는 최적화를 잘해도 저사양 컴퓨터에서는 프레임 드롭이 심할 수 있다. 이는 타 장르에 비해 플레이어의 수가 많고 맵이 넓어서 처리해야 할 연산량이 많은 데다가, 실시간으로 게임을 진행하기 때문이다. 이러한 장르적 차이나 게임 시스템 상의 차이로 인해 피치 못하게 성능 저하가 일어나기도 한다. 그러나 이렇게 원인을 알 수 있는 .. 2020. 10. 4.
유니티 셰이더&렌더링 파이프라인 공부 내용 정리 참고 영상 : youtu.be/0XJWdNFnq50 해당 포스팅은 retr0님의 유니티 셰이더&렌더링 에센스 시리즈를 보고 공부한 내용을 정리하는 글입니다. CG에 관한 지식이 충분하지 않은 상태로 쓴 글이니 오류가 있으면 댓글로 지적해 주세요. 셰이더 셰이더(Shader)란? - 화면에 색을 칠하는(Shading) 프로그램이다. - 렌더링 파이프라인의 일부를 유연하게 변경할 수 있게 해 준다. 렌더링 파이프라인? - 정점으로 정의된 물체를 그려내는 과정을 렌더링이라 한다. - 화면 상에 그림을 그리는 과정을 여러 단계로 나누는 것이다. 작업을 수행하는 걸 파이프라고 하면 전체 과정은 여러 개의 파이프를 이은 것처럼 될 것이고, 이를 렌더링 파이프라인이라 부른다. 셰이더의 종류 - 버텍스 셰이더(Vert.. 2020. 9. 8.
유니티 C# 싱글턴 패턴 + Lazy를 이용한 버전 2023.08.08 추가: 본문에 존재하는 코드(특히 Lazy를 사용한 코드!)는 충분히 검증된 코드는 아닙니다. 따라서 아이디어는 채용하되, 직접 복사-붙여넣기할 경우에 오류가 발생하지 않는다는 보장은 못 드립니다 ㅠ 1. 싱글톤이란? 싱글톤(Singleton)은 게임 개발 시 가장 많이 사용되는 패턴 중 하나입니다. 우선 싱글턴이 무엇인지부터 알아봐야겠지요. 오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공합니다.(『GOF의 디자인 패턴』 181쪽) 정의에 따르면 싱글톤은 단 하나의 클래스 인스턴스만을 갖도록 보장합니다. 전역적인 접근점을 제공한다는 것은 어디에서나 해당 클래스의 인스턴스에 접근할 수 있다는 뜻입니다. 유니티에 적용을 해보자면 게임을 관리하는 매니저.. 2020. 8. 30.