본문 바로가기

분류 전체보기84

유니티 이벤트 시스템 최적화하기 - 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.
C언어에서의 16진수, signed int와 unsigned int 문제 발생 만약 int형 변수의 32비트에서 상위 4비트만 떼어내려고 하면 어떻게 해야 할까? 이건 오른쪽으로 28비트만큼 쉬프트 하면 얻을 수 있다. int bit; result = bit >> 28; 그러나 여기서, 만약 bit가 음수라면 어떨까? C언어는 부호가 있는 정수형 연산에서, 왼쪽 쉬프트()는 산술 쉬프트로 계산한다. 여기서 논리 쉬프트는 무조건 빈자리를 0으로 채운다는 뜻이고, 1101 > 1 = 0010 1101 >> 1 = 1110 그렇다면 음수를 오른쪽으로 28비트 쉬프트하게 되면(bit >> 28), 상위 비트는 모두 1로 채워지게 된다고 예상할 수 있다. 이를 해결하려면 쉬프트와 동시에 *마스크를 씌워줘서 상위 비트를 지울 수 있다. (* 마스킹(Masking): 숫자에 비트곱 .. 2021. 5. 3.
새로운 경험은 즐거운 것이어야 한다 Out Of Index Out Of Index - Experimental Game Festival Out Of Index - Experimental Game Festival OOI is an experimental game festival in South Korea. The goal of the festival is to inspire the game industry with new ideas and experimental energy. www.outofindex.org 오늘 본 거 여느 때와 같이 게임 개발을 하고 있던 때... 그러다가 오늘은 Out Of Index라는 게임 행사를 발견했다. 2014년부터 2019년까지 진행했던 게임잼 페스티벌로, 세계 각지의 실험적인 게임을 소개하는 행사이다. Ou.. 2021. 5. 3.
[운영체제 공부] 운영체제 개요 해당 글은 운영체제를 처음 공부하는 사람이 공부하기 위해 쓴 글입니다. 강동현 교수님의 강의 내용과 책 "운영체제 아주 쉬운 세 가지 이야기" 제2판을 공부하고 이를 요약해본 것입니다. 나중에 다시 읽을 수 있게 정리한 글이라 다른 사람들이 읽기 쉬울지는 잘 모르겠지만, 다른 분들에게도 도움이 된다면 좋겠습니다. 이 글은 처음 운영체제를 공부하는 사람을 대상으로 하고 있는데, 운영체제를 아무것도 모르는 사람이 공부한 내용이다 보니 다소 오류가 많습니다. 오류가 있다면 지적 부탁드립니다. 애플리케이션 프로그램은 어떻게 실행될까? 최근의 애플리케이션 프로그램은 고수준 프로그래밍 언어로 작성된다. 고수준 언어에는 과거의 것인 Fortran, Basic부터 시작해서 최근에는 C 계열 언어, Java 계열 언어,.. 2021. 3. 24.
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.
백준 2922 즐거운 단어 오늘의 문제: 2922번: 즐거운 단어 (acmicpc.net) 2922번: 즐거운 단어 상근이는 자신이 다니는 학교에서 영어단어를 가장 많이 외우고 있다. 그 비법은 바로 조기교육이었다. 상근이는 젖병을 물기도 전에 영어 단어를 외웠다. 따라서, 지금은 자리에 앉으면 사전을 www.acmicpc.net 도무지 풀리지 않아서 일주일 가까이를 붙잡고 있었던 문제. 오랜만에 코딩 문제를 풀어서 그런가 정말 풀리지가 않았다... 결국 구글링 찬스를 써서 약간의 힌트를 봤더니 해결되었다; 조건에서 (1) 자음이나 (2) 모음이 연속으로 세 개가 나오면 안 되고 (3) L을 반드시 포함해야 한다고 했으므로 문자를 자음, 모음, L 세 개로 나누어서 단순화할 수 있겠다. 다른 글에서도 찾을 수 있지만, 즐거운 단어.. 2021. 2. 16.
게임에서의 방어력은 어떻게 구현할까? RPG에서 꼭 나오는 개념 RPG, 액션 게임 등 적과 맞서 싸우는 게임에서 공격력, 체력, 방어력은 정말 자주 등장하는 개념입니다. 공격력, 체력, 방어력이 언제 나왔는지는 모르겠지만 게이머에겐 정말 익숙한 개념이죠. 게임에서 공격력, 체력, 방어력은 플레이어가 얼마나 강한지를 측정하는 척도입니다. 공격력이 강하면 적을 좀 더 쉽게 제압할 수 있고, 체력과 방어력은 적의 공격으로부터 얼마나 더 잘 버티느냐를 결정합니다. 공격력, 체력, 방어력만 있는 게임이 있다고 해볼까요? 공격력, 체력은 이해하기 쉽습니다. 적을 공격하면 공격력만큼 체력이 감소시킬 수 있습니다. 계속해서 공격하다 보면 체력이 0에 달하게 되고 캐릭터가 죽게 되죠. 그에 반해 게임에서 방어력은 피해를 얼마나 덜 받느냐를 결정합니다. 방.. 2021. 2. 14.
C# DirectoryNotFoundException 오류: 파일 경로가 잘못되었을 때 MSDN 링크: DirectoryNotFoundException 클래스 (System.IO) | Microsoft Docs DirectoryNotFoundException 클래스 (System.IO) 파일이나 디렉터리의 일부를 찾을 수 없을 때 throw되는 예외입니다.The exception that is thrown when part of a file or directory cannot be found. docs.microsoft.com DirectoryNotFoundException은 파일이나 디렉터리 이름을 찾을 수 없을 때 발생하는 오류이다. 파일이나 디렉터리 이름을 잘 확인하면 해결할 수 있다. 예시 예시로 아래는 Unity에서 Log를 출력하려고 급조한 스크립트이다. 나중에 보니 Log Vi.. 2021. 1. 11.