Humility

아무리 노력해도 최고가 되지 못할 수 있다⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀그럼에도 노력하는자가 가장 겸손한 것 아닌가

공부하는 블로그
반응형

c# 44

[Unity] 유니티 C#) 다양한 클래스 유형

공부를 하다보면 다양한 유형들의 클래스들이 있었다이는 설계 원칙에 맞춰 만들어진 패턴이라 볼 수 있는데,주로 사용되는 유형들에 대해 알아보았다1. DTO (Data Transfer Object) 클래스정의 순수하게 데이터만 담는 컨테이너 클래스 사용 시점API 통신할 때 데이터 전송용데이터베이스에서 데이터 가져올 때다른 시스템과 데이터 교환할 때 예시public class PlayerDTO{ public int id; public string name; // 데이터만 있고 메서드는 없음}2. 싱글톤 클래스정의전체 게임에서 단 하나의 인스턴스만 존재하는 클래스 사용 시점게임 전체 상태 관리 (GameManager)자원 공유 (ResourceManager)사운드 관리 (AudioManager..

[Unity] 유니티 C#) JSON 직렬화 / 역직렬화

직렬화(Serialization) 란?데이터 구조나 객체를 저장하거나 전송할 수 있는 형태로 변환하는 과정 역직렬화(Deserialization) 란?저장된 데이터를 다시 프로그램에서 사용할 수 있는 객체로 변환하는 것 예시// 직렬화 전: 메모리의 객체PlayerData player = new PlayerData{ name = "철수", level = 5 };// 직렬화 후: JSON 텍스트{"name": "철수", "level": 5}직렬화가 필요한 이유1. 저장게임의 세이브 데이터처럼 객체를 파일로 저장할 때 2. 네트워크 전송다른 컴퓨터나 서버와 데이터를 주고 받을 때 3. 메모리 구조 변환복잡한 객체 구조를 단순한 형태로 변환해 처리할 때Unity JsonUtility의 직렬화 가능한 타입기본 ..

유니티 2025.01.23

[Unity] 유니티 C#) async와 코루틴의 차이

async/await와 코루틴의 주요 차이점 1. 반환값 처리// 코루틴 - 직접적인 반환값을 받을 수 없음IEnumerator LoadDataCoroutine(){ yield return new WaitForSeconds(1f); string data = "데이터"; // 반환값을 직접 받을 수 없어서 다른 변수나 콜백으로 처리해야 함}// async - 직접 반환값을 받을 수 있음async Task LoadDataAsync(){ await Task.Delay(1000); return "데이터"; // 직접 반환 가능}2. 예외처리// 코루틴 - try-catch 사용 불가IEnumerator ErrorCoroutine(){ yield return new WaitForS..

유니티/문법 2025.01.22

[Unity] 유니티 C#) async/await

async/await 이란?비동기 프로그래밍을 쉽게 구현할 수 있게 해주는 기능 유니티에서는 코루틴 대신 사용할 수 있는 좋은 대안이다 async의 핵심 정의메서드나 람다 표현식을 비동기 메서드로 지정하는 키워드async가 붙은 메서드는 내부에서 await를 사용할 수 있음컴파일러에게 "이 메서드는 비동기적으로 실행될 수 있다"라고 알려주는 역할을 함반환 타입으로 Task, Task, void를 사용할 수 있음 예시코드public async Task DoSomethingAsync(){ // 비동기 코드 작성 가능}await의 핵심 정의비동기 작업이 완료될 때까지 현재 메서드의 실행을 일시 중단하는 키워드await는 반드시 async 메서드 내부에서만 사용할 수 있음작업이 완료되면 await 이후의 ..

유니티/문법 2025.01.21

[Unity] 유니티 C#) Property ( 프로퍼티 )

프로퍼티란? 객체 지향 프로그래밍 언어에서 객체의 속성을 의미하는 용어 프로퍼티와 캡슐화캡슐화란? 데이터(변수)와 해당 데이터를 처리하는 메서드들을 하나로 묶어서 관리하는 것 특징외부에서 직접적인 접근을 제한하고, 정해진 방법으로만 접근하도록 만드는 것이다"중요한 데이터를 보호하는 포장지"라고 생각하면 된다 예시public class Player{ private int health; // 직접 접근 불가능 // health는 이 메서드들을 통해서만 수정 가능 public void TakeDamage(int damage) { health -= damage; if(health 100) health = 100; }}프로퍼티란? 필드(변수)에 접근할 ..

유니티/문법 2025.01.20

[Unity] 유니티C#) Struct ( 구조체 )

구조체란?여러 데이터를 하나로 묶어서 관리할 수 있게 해주는 사용자 정의 데이터 타입 실생활로 예시를 들어보자학생 정보를 예시로 든다면, 학생의 이름, 나이, 번호을 하나로 묶어서 "학생" struct로 만들 수 있다게임으로 예를 든다면 체력,마나,공격력을 하나로 묶어서 "스탯" struct를 만들 수 있다 간단예시// 학생 정보를 담는 structstruct Student { public string name; // 이름 public int age; // 나이 public int studentId; // 학번}// 실제 사용Student newStudent;newStudent.name = "김철수";newStudent.age = 20;newStudent.student..

유니티/문법 2025.01.17

[Unity] 유니티 C#) Casting ( 형변환 )

형변환 이란? 하나의 데이터 타입을 다른 데이터 타입으로 변환하는 것 형변환의 종류암시적 형변환 ( 자동 형변환 )int num = 10;float floatNum = num; // int → float 자동 변환long longNum = num; // int → long 자동 변환 사용 시기작은 크기의 데이터 타입에서 큰 크기로 변환할 때데이터 손실의 위험이 없어 자동으로 변환됨명시적 형 변환 ( 강제 형변환 )float floatNum = 10.5f;int num = (int)floatNum; // float → int 강제 변환// 10이 저장됨 (소수점 이하 손실) 사용시기큰 크기의 데이터 타입에서 작은 크기로 변환할 때데이터 손실의 가능성이 있어 명시적으로 변환해야 함사용 예시기본 데이터 타..

유니티/문법 2025.01.16

[Unity] 유니티 C#) try-catch문 ( 예외처리 )

try-catch문이란?프로그램 실행 중 발생할 수 있는 오류(예외)를 처리하기 위한 구문  예상치 못한 상황이 발생했을 때 프로그램이 강제로 종료되는 것을 방지하고, 적절한 대응을 할 수 있게 해준다기본 구조try { // 예외가 발생할 수 있는 코드} catch (예외종류) { // 예외가 발생했을 때 실행할 코드} finally { // 예외 발생 여부와 관계없이 항상 실행되는 코드}예외처리를 사용하는 이유1. 프로그램의 안정성 확보public class FileManager : MonoBehaviour{ // 예외처리가 없는 경우 public void SaveWithoutTryCatch(string data) { // 파일 저장 실패시 프로그램이 강제 ..

유니티/문법 2025.01.15

[Unity] 유니티 C#) LINQ ( Language Integrated Query )

LINQ란? C#에서 데이터 쿼리를 위한 통합 프로그래밍 모델로, 다양한 데이터 소스(컬렉션, XML, 데이터베이스 등)에 대해 일관된 방식으로 쿼리를 작성할 수 있게 해주는 기능 예를 들어, 도서관에서 책 찾기를 생각하면 쉽다 "2000년 이후에 출간된 소설책만 찾아줘""가격이 2만원 이하인 책들을 가격 순으로 정렬해줘""과학 분야 책들의 평균 가격을 계산해줘"  복잡한 for문이나 if문을 여러 번 사용하여 찾을 수도 있지만,LINQ를 사용하면 더욱 쉽고 직관적으로 처리할 수 있다. 예시// 체력이 50% 이하인 적 캐릭터들 찾기var weakEnemies = enemies.Where(enemy => enemy.health player.score);  쉽게 말해 "데이터를 검색하고 정리하는 만능 도..

유니티/문법 2025.01.14

[Unity] 유니티 C#) 전처리문 (Preprocessor Directives)

전처리문이란? 코드가 컴파일되기 전에 처리되는 특별한 지시문 간단한 예시#if DEBUGDebug.Log("디버그 모드입니다");#endif 위 코드에서 #if DEBUG는 "만약 DEBUG 모드라면" 이라는 의미이다컴파일러는 이 코드를 실행하기 전에 먼저 확인한다  DEBUG 모드로 설정되어 있다면? Debug.Log() 코드가 남아있게 된다 DEBUG 모드가 아니라면? 이 코드는 완전히 제거되어 최종 프로그램에 포함되지 않습니다전처리문의 주요 특징'#' 기호로 시작한다컴파일 전에 처리된다조건부로 코드를 포함하거나 제외할 수 있다플랫폼별 다른 코드를 작성할 때 자주 사용된다실제 활용 방법void Start(){ #if UNITY_ANDROID // 안드로이드 전용 코드 S..

유니티/문법 2025.01.13
반응형