Rebind한 키세팅 저장/초기화/되돌리기
·
코드 및 공부/입력 관리
유니티 버전 - 6000.0.40f1     목차IUISettingChanger변경된 Rebind 저장     IUISettingChanger키세팅뿐만 아니라 다른 세팅들의 변경사항을 제어하기위한 인터페이스입니다, 각 메서드는 저장/되돌리기/초기화의 역할을 담당하고, 하위의 개별 세팅에서 변경사항이 있을때 IsChanged를 이용하여, 설정 팝업을 끄거나 탭을 넘어갈때 미변경 사항을 체크하고 플레이어에게 되묻는 역할을 합니다 public interface IUISettingChanger{ public void ImplementSetting(); public void RevertSetting(); public void ResetSetting(SystemData systemData); ..
CS0162: Unreachable code detected, 이 코드가 경험적으로 도달할 수 없습니다
·
코드 및 공부/기타
유니티 버전 - 6000.0.40f1     CS0162: Unreachable code detected콘솔에서는 위와 같이 나오고, 에디터에서는 "이 코드가 경험적으로 도달할 수 없습니다", "코드에 도달할 수 없습니다" 등으로 표시되는 이 경고는, return / break / throw 이후의 코드, 조건이 항상 거짓인 반복문 등 컴파일러가 실행 흐름상 "절대로" 도달할 수 없다고 판단하는 상황에서 발생하는 경고입니다 if (false){ Debug.Log("CS0162 경고 발생");}if (true){ Debug.Log("항상 실행");}else{ Debug.Log("CS0162 경고 발생");}while (true){ // break, return, throw 없음 → 무..
Application 클래스
·
코드 및 공부/기타
유니티 버전 - 6000.0.40f1     목차Application.isEditorApplication.persistentDataPathApplication.runInBackgroundApplication.systemLanguageApplication.targetFrameRateApplication.Quit     Application.isEditor현재 코드가 Unity 에디터 내에서 실행되고 있는지를 판단합니다, 에디터 전용 코드나 디버깅용 메시지를 출력할 때 활용할 수 있습니다, 빌드된 파일을 실행중일 때 false를 반환합니다if (Application.isEditor){ print("에디터 내에서 실행중");}     Application.persistentDataPath애플리케이션의 데..
SetValueWithoutNotify()을 이용한 드롭다운 옵션 변경
·
코드 및 공부/UI
유니티 버전 - 6000.0.40f1     목차OnValueChaned 이벤트SetValueWithoutNotify()     OnValueChaned 이벤트세팅 설정 팝업에서 변경사항이 있지만 저장하지않고 다음 탭으로 넘어갈때, 이것을 체크하여 저장or캔슬 팝업을 띄우고자하였지만 변경사항이 없는데도 팝업이 뜨는 문제가 발생하였습니다   그 이유는 팝업을 활성화 할때마다 드롭다운의 값을 사용자 지정값으로 불러오는 로직이 존재하였는데   Dropdown.value = 로직이 드롭다운의 값을 설정함과 동시에 OnValueChaned 호출하고 내부 로직에 의해 변경 사항을 추적하는 변수가 true로 변경되어, 팝업을 활성화하였을뿐이지만 변경사항이 있는것처럼 동작하였습니다     SetValueWithoutN..
버튼 OnClick에 async 메서드가 등록되지 않는 문제
·
코드 및 공부/UI
유니티 버전 - 6000.0.40f1     목차이유해결법     이유유니티 UI 시스템은 void 반환 타입을 기대하기때문에 버튼 이벤트에는 async 메서드를 직접 등록할 수 없습니다public async UniTask OnQuitGame(){ await Managers.UI.EnableTitleUI(); // 인스펙터에서 OnClick() 설정 불가}     해결법OnClick()을 일반 void 메서드를 이용하도록 하고 .Forget() 이용하기 .Forget()은 Cysharp.Threading.Tasks 라이브러리의 확장 메서드로, UniTask의 실행 결과를 기다리지 않고 즉시 실행을 진행하는 "fire-and-forget" 방식입니다,이는 Unity의 버튼 OnClick 이벤트처럼 반환..
input system에서 리바인딩한 키세팅을 저장, 로드, 삭제하기
·
코드 및 공부/입력 관리
유니티 버전 - 6000.0.37f1     목차이전글저장, 로드, 삭제     이전글이전에 구현한 커스텀 컨트롤 바인딩을 이용하여 저장, 로드, 삭제하는 기능입니다더보기2025.02.25 - [코드 및 공부/입력 관리] - 커스텀 컨트롤 바인딩 (InputSystem을 이용한 Rebinding system) 커스텀 컨트롤 바인딩 (InputSystem을 이용한 Rebinding system)유니티 버전 - 6000.0.37f1     목차들어가며Rebinding system     들어가며키를 리바인딩할 수 있다면, 다음과 같이 사용자가 직접 원하는 키세팅을 이용하여 동작을 수행하도록 하고, 사용자의ekrxjvpvj0110.tistory.com     저장, 로드, 삭제public void SaveRe..
커스텀 컨트롤 바인딩 (InputSystem을 이용한 Rebinding system)
·
코드 및 공부/입력 관리
유니티 버전 - 6000.0.37f1     목차들어가며Rebinding system     들어가며키를 리바인딩할 수 있다면, 다음과 같이 사용자가 직접 원하는 키세팅을 이용하여 동작을 수행하도록 하고, 사용자의 편의성과 접근성을 향상 시킬 수 있습니다     Rebinding system전체 코드입니다public class UIRebindAction : MonoBehaviour{ [SerializeField] private InputActionReference actionReference = null; [SerializeField] private int bindingIndex; private InputActionRebindingExtensions.RebindingOperation _r..
EditorWindow를 이용하여 에디터에서 윈도우 탐색기 폴더 열기
·
코드 및 공부/데이터 관리
유니티 버전 - 6000.0.37f1     목차EditorWindowEditorUtility.RevealInFinder()     EditorWindow개발 도중 저장되는 파일을 직접 확인/삭제 등, 직접 접근하여 수정해야할 일이 생겼을때 매번 %appdata% 를 통하여 찾아 들어가거나 폴더를 항상 켜놓지 않고도 EditorWindow를 이용하여 특정 폴더를 열 수 있습니다   먼저 EditorWindow를 스크립트를 작성합니다public class DevelopHelper : EditorWindow{ private GUIStyle _labelStyle; [MenuItem("Window/Customizing/DevelopHelper")] public static void..
C# - 스택
·
코드 및 공부/이론
유니티 버전 - 6000.0.37f1     목차스택의 기본 원리스택의 구현     스택의 기본 원리스택이란 데이터를 저장하는 선형 자료구조의 한 종류로, 한쪽 끝에서만 데이터를 추가하거나 제거 할 수 있습니다, 마지막에 추가된 요소가 가장 먼저 제거되는 LIFO 구조입니다 아래는 스택의 공식문서입니다더보기https://learn.microsoft.com/ko-kr/dotnet/api/system.collections.generic.stack-1?view=net-8.0 클래스 (System.Collections.Generic)" data-og-description="동일한 지정된 형식의 인스턴스에 대한 LIFO(Last-in-First-out) 컬렉션의 변수 크기를 나타냅니다." data-og-host=..
RenderPipelineGlobalSettings should be edited from Project Settings > Graphics 경고
·
코드 및 공부/데이터 관리
유니티 버전 - 6000.0.34f1     목차UniversalRenderPipelineGlobalSettings     UniversalRenderPipelineGlobalSettingsURP 프로젝트를 생성하고 UniversalRenderPipelineGlobalSettings 에셋을 들어가보면, RenderPipelineGlobalSettings should be edited from Project Settings > Graphics라는 경고가 나오면서 아래 버튼을 이용하여 설정하라고 나옵니다   2022.3.57f1의 Global Settings를 보면 Layers와 Shader Stripping의 내용을 볼 수 있습니다   6000.0.34f1의 Project Settings의 Graphics..