함수의 스코프(Scope)변수나 함수가 어디서부터 어디까지 접근할 수 있는지를 정의하는 범위전역 스코프(Global Scope)전역 스코프에 있는 변수는 클래스 내의 모든 메서드에 접근 가능클래스의 필드로 선언된 변수가 전역 스코프를 가지게 된다.이런 변수는 클래스의 인스턴스가 존재하는 동안 접근 가능하다.public class Player { // 전역 변수 public int health = 100; public void TakeDamage(int damage) { // 클래스 내의 다른 메서드에서 접근 가능 health -= damage; } public void Heal(int amount) { // 이 메서든에서도 ..
Unity
직렬화란 무엇인가?직렬화는 객체의 상태를 저장하거나 전송할 수 있는 형식(0과 1의 순서, 즉 바이너리 데이터)으로 변환하는 과정이다.여기서 객체의 상태란, 객체가 가지고 있는 필드의 값들을 의미한다.예를 들면, 어떤 클래스의 인스턴스가 'Name'이라는 문자열 필드와 'Age'라는 정수형 필드를 가지고 있다면,직렬화는 이 'Name'과 'Age' 값을 메모리나 파일, 혹은 네트워크를 통해 전송할 수 있도록 변환하는 과정이다.직렬화가 필요한 이유프로그래머가 정의한 클래스나 구조체 같은 복합 데이터 형식은 단순한 기본 데이터 형식(int, string, float 등)과 달리,한 번에 쉽게 스트림에 기록하거나 읽을 수 없다.BinaryWriter/Reader, StreamWriter/Reader는 기본 데..
클로저(Closure)는 C#과 같은 현대 프로그래밍 언어에서 매우 중요한 개념입니다. 이번 포스팅에서는 클로저의 기본적인 이해와 C#에서 클로저가 어떻게 사용되는지에 대해 알아보겠습니다. 클로저(Closure)란 무엇인가? 클로저는 함수가 선언될 때의 환경을 '캡처(Capture)'하여, 그 환경 밖에서도 해당 환경에 접근할 수 있게 하는 기능입니다. 클로저는 내부 함수가 외부 함수의 스코프(Scope)에 접근할 수 있도록 해주며, 이를 통해 프로그램잉에서 강력한 표현력을 제공합니다. 클로저의 작동 원리 클로저는 외부 함수의 변수를 내부 함수가 참조할 때 발생합니다. 내부 함수는 외부 함수의 실행이 끝난 후에도 외부 함수의 변수에 접근할 수 있습니다. 이러한 특성 덕분에, 클로저는 다양한 프로그래밍 상..
Unity 개발 시 다양한 플랫폼을 지원하기 위해 플랫폼 별로 다른 코드 실행이 필요할 때가 있습니다. 이를 위한 주요 두 가지 방법, Application.platform과 #if 디렉티브를 비교해 보겠습니다. Application.platform의 사용 Application.platform은 Unity의 런타임 시점에서 현재 실행 중인 플랫폼을 확인하는 방법입니다. 장점 동적 처리: 단일 빌드로 여러 플랫폼에서 다르게 동작하는 앱을 만들 수 있습니다. 코드 포함: 빌드에 모든 플랫폼에 대한 코드가 포함되어, 하나의 빌드로 여러 환경을 대응할 수 있습니다. 사용 예 if (Application.platform == RuntimePlatform.WindowsPlayer) { // Windows 전용 코드..
에러 코드 UnityException: get_enterPlayModeOptionsEnabled can only be called from the main thread. Constructors and field initializers will be executed from the loading thread when loading a scene. Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function. UnityEngine.AddressableAssets.Addressables.get_m_Addressables () (at 한글 번..
최근에 들었던 생각 중에 하나인 유니티 개발자로 일을 하고 있는데 기초가 많이 부족하다고 느껴지게 되었던 부분들이 있었습니다. 그래서 해당 부분들을 보충하기 위해 "레트로의 유니티 게임 프로그래밍 에센스"라는 책을 구입 후 공부하기 시작했습니 다. 물론 알고 있는 부분도 많이 있지만 복습 역시 필요한 영역이라고 생각이 들어서 책을 공부하는 중입니다. 유니티 C#에서 말하는 클래스란 ? # 레트로의 유니티 게임 프로그래밍 에센스 p184 우선 책에서는 클래스와 오브젝트를 같이 설명하는 방식으로 진행되었습니다. 객체지향 프로그래밍 - '사람이 현실 세상을 보는 방식'에 가깝게 프로그램을 완성하는 방법의 핵심 개념으로 설명을 해주면서 시작하게 되었습니다. 클래스는 표현하고 싶은 대상을 추상화하여 대상과 관련된..
서론 최근 회사에서 진행하게 될 프로젝트 중 새롭게 요청된 기능 중 하나인 현지화(Localization) 기능 - 다국어 번역 관련해서 구현하게 된 방향과 추후에 지식공유를 위한 정리 글입니다. 프로젝트 링크 https://github.com/SONSAZANG/UnityLocalizationTest GitHub - SONSAZANG/UnityLocalizationTest: UnityLocalizationTest UnityLocalizationTest. Contribute to SONSAZANG/UnityLocalizationTest development by creating an account on GitHub. github.com 우선 유니티에서 현지화 기능을 사용할 때 진행할 수 있는 방향을 두 가..
본 글은 회사 업무 중에 서버에서 불러오는 Texture2D (JPG, PNG)등의 용량이 너무 커서 램 관리가 필요한 모바일 환경에서 강제 종료되는 현상을 방지하기 위해 구현하게 된 기능입니다. 필요한 기능 서버에서 불러오는 이미지를 런타임 환경에서 불러오는 과정과 동시에 텍스처 압축을 진행하여서 메모리 과부하를 막는 기능이 필요합니다. 유니티 프로젝트 안에 있는 텍스처의 경우 따로 여러 플랫폼에 원하는 형식으로 저장할 수 있는 기능이 제공되고 있으나 서버에서 바로 불러올 경우 위 기능을 사용하지 못하는 형식입니다. 구현한 기능 PNG or JPG -> GPU 랜더링이 필요하지 않는 이미지 파일들을 더 낮은 용량인 RGBA32로 변환 후 DXT5로 압축 진행 using System.Collections..