Unity 썸네일형 리스트형 [Unity 유니티] 싱글톤 패턴 (Singleton) 유니티에서 싱글톤 패턴 쉽게 이해하기: 게임 개발에서 왜 필요한가?게임 개발을 하다 보면 어떤 오브젝트는 게임 내에 단 하나만 존재해야 할 때가 있다. 예를 들어 게임의 전체 상태를 관리하는 게임 매니저, 지속적으로 재생되는 오디오 매니저 등이 그렇다. 이런 경우, 매번 새 인스턴스를 생성하는 대신 하나의 인스턴스를 전체 게임에서 공유할 수 있는 방법이 바로 싱글톤(Singleton) 패턴이다.유니티에서 싱글톤 패턴을 어떻게 구현할 수 있는지, 장단점은 무엇인지 알아보자.싱글톤 패턴이란?싱글톤 패턴은 프로젝트 내에서 특정 클래스의 인스턴스를 단 하나만 허용하고, 어디서든 그 인스턴스에 접근할 수 있도록 하는 디자인 패턴이다. 유니티에서는 게임을 관리하는 주요 객체를 하나만 두고 싶을 때 싱글톤을 사용한다.. 더보기 [Unity 유니티] 유니티 내에서 스크린샷 찍기 - Recorder 유니티 내에서 Recorder 기능을 제공하고 있습니다. 이를 이용해 스크린샷을 찍는 방법을 알아보겠습니다. 1. Window - Package Manager 에서 Recorder를 설치합니다. 2. 아래 스크립트를 작성한 뒤 Hierachy에 빈 게임 오브젝트를 만든 후 그 안에 넣어줍니다. namespace UnityEngine.Recorder.Examples { [Serializable] public class ScreenShotData { public string name; public int width; public int height; } public class CaptureScreenShot : MonoBehaviour { RecorderController m_RecorderControlle.. 더보기 [Unity 유니티] Coroutine 코루틴 yield return 최적화 private IEnumerator Example() { yield return new WaitForSeconds(1f); } 코루틴을 사용할 때 new WaitForSeconds()를 이용하면 실행될 때마다 가바지 값이 생긴다. 이를 막기 위해서는 미리 캐싱을 해두고 사용하면 된다. private IEnumerator Example() { WaitForSeconds wait = new WaitForSeconds(1f); yield return wait; } 하지만 작업을 하다보면 여러번 사용하는 경우가 생기고, 더 편하고 효율적인 작업을 위해서 코루틴 매니저를 만들면, 미리 캐싱된 값을 수정하면서 사용할 수 있다. using System.Collections; using Syste.. 더보기 [Unity 유니티] Update 를 Coroutine 으로 최적화 하기 유니티의 Update문은 매 프레임마다 실행된다. // Update 함수는 매 프레임마다 실행된다. 60프레임 환경이라면 1초에 60번 실행 private void Update() { // 실행할 코드 } 이때 매 프레임마다 꼭 실행할 필요가 없는 함수들, 예를 들어서 n초마다 체력이 닳는 독 시스템, 1초 간격의 타이머 등등 이럴 때, Coroutine을 이용해서 실행 간격을 줄이면 불필요한 호출이 줄어들기 때문에 성능이 더 올라간다. private float coroutineTime = 1f; // 실행 간격 private void Start() { StartCoroutine(CountTime()); } private IEnumerator CountTime() { while (true) { // 실행.. 더보기 [Unity 유니티] Api Compatibility Level .Net 4.x 가 없을 때 해결 방법 GPGS 연결을 위해서 여러 글들을 둘러보던 중, Api Compatibility Level 부분에서 .NET 4.x 를 선택하라는 글들이 여러 개 있었는데, 정작 내 프로젝트에서는 2.1 말고는 보이지 않았다. 찾아본 결과, 최근 유니티 업데이트에서 .NET 4.x 가 .NET Framework 로 이름이 바뀌었다고 한다. 따라서 .NET Framework 를 선택 해주면 된다. ( .NET 4.x 와 동일 ) 더보기 [Unity 유니티] Missing Default Layout - No Valid user created or default window layout found. Please revert factory settings to restore the default layouts. 오류 해결 방법 작업하던 도중 재부팅을 하니 이런 오류가 발생하였다. 구글링을 통해 해결 방법을 알아본 결과, 1. C:\Users\bonit\AppData\Roaming\Unity\Editor-5.x\Preferences\Layouts\default 파일 가져오기 2. 다른 정상적인 폴더의 CurrentLayout-default.dwlt 를 복사해서 가져오기 하지만 두 방법 모두 해결되지 않았고, 낙담하던 도중 한 글을 발견. 오류가 있는 프로젝트의 Library 폴더를 삭제 후 프로젝트를 실행시켰더니 해결되었다. (실행 시 오래걸림) 더보기 [Unity 유니티] 버튼을 누르고 있으면 반복 실행되게 만들기 버튼을 여러번 눌러야 되는 상황에서 사용자에게 편리함을 제공하기 위해, 버튼을 정해진 시간 이상 누르고 있으면 일정 시간마다 함수를 실행시킨다. using UnityEngine; using UnityEngine.EventSystems; public class ButtonHoldHandler : MonoBehaviour, IPointerDownHandler, IPointerUpHandler { private bool isButtonHold = false; // 버튼을 누르고 있는지 여부 private float holdDuration = 0.5f; // n초 동안 누르고 있으면 시작 private float repeatInterval = 0.2f; // n초 마다 실행 private float holdTi.. 더보기 [Unity 유니티] Unity Remote 5 작동 안될 때 1. 테스트할 기기에서 설정 > 개발자 옵션 > USB 디버깅이 활성화되어 있는지 확인하기 개발자 옵션이 없다면 기기별로 활성화 방법을 인터넷에 검색하면 나온다. 2. Edit > Project Settings > Editor > Unity Remote > Device가 기기에 맞는 상태인지 확인하기 안드로이드라면 Any Android Device로 iOS라면 Any iOS Device로 바꿔주자. 3. File > Build Settings에서 플랫폼이 Android 또는 iOS로 되어있는지 확인하기 다른 플랫폼으로 되어있다면 테스트 기기에 맞는 플랫폼으로 바꿔주자. 4. 설정 후 유니티 재시작하기 설정을 마쳤다면 유니티를 재실행 해줘야 정상적으로 작동한다. 더보기 이전 1 2 다음