728x90
728x90
메모리의 정적/동적 할당 유니티 컴파일러가 실행되는 동작 순서는 정적 메모리 영역 -> 동적 메모리 영역이다. 세부적으로 나눠서 살펴보면 먼저 정적 메모리 공간의 함수들이 실행되고, 정적 영역의 static 변수들이 실행된다. 그 다음 동적 메모리 공간에 저장된 변수들이 실행되게 된다. 유니티 싱글톤(Singleton) 패턴 활용 이러한 메모리 할당 개념을 바탕으로, 싱글톤 객체를 설명해보고자 한다. 일단 유니티에서 생성되는 모든 객체는 최초로 동적 메모리 공간인 heap에 올라간다. 하지만 heap 영역에 위치한 객체들은 사용 범위에 한계를 가지고 있을 수 있다. 그렇기 때문에 객체 클래스 자체를 static 영역에 올리고 instance를 생성해 각각 클래스 별로 뿌려줄 수 있다. 이 것이 바로 관리..
this 키워드 메모리는 저장되는 주소, 변수는 그 주소를 한 번에 볼 수 있는 이름의 개념으로 생각하면 된다. 예) 서울역(변수), 서울시 중구 한강대로 405(메모리) Class는 Heap 영역, 함수는 Code 영역(함수만 들어가 있는 table이 있어 호출하는 개념), 변수는 Stack영역에 저장 obj a = new obj() 객체를 생성하면 heap 메모리 공간에 할당한다. Gameobject obj = new GameObject(); - GameOjbect : 클래스 - obj : 변수 - new GameObject() : 생성자 함수(객체를 생성해주는 함수, heap 메모리 공간 할당) this는 함수와 변수 등이 저장되어 있는 메모리 영역에 관련한 이슈, C/C++ 참고 GameObjec..
전역변수 & 지역변수 C# 스크립트 작성 시 클래스 안에 다양한 변수를 설정한다. 하지만 때때로 함수가 변수들을 읽지 못해 유니티 에디터에서 컴파일 에러가 뜨기도 하고, 이상한 버그들도 발생하곤 한다. 개발할 때 매우 기본이 되는 내용이지만 오히려 모르고 넘어가는 경우가 많기에 때문에, 전역변수와 지역변수에 대해 기본적인 개념을 꼼꼼히 짚어보도록 하겠다. 먼저, 한 클래스 안에서 동일한 이름의 지역/전역 변수가 존재한다면 지역 변수가 전역 변수보다 먼지 인지된다. 그리고 전역 변수는 지역 변수를 모르지만, 지역 변수는 전역 변수를 알고 있다. 이는 컴파일러 실행과 관련되어 설명할 수 있는데 우리가 유니티 에디터에서 플레이 버튼을 누르면 컴파일러는 "코드 -> static(정적 메모리 공간) -> stac..
스택(Stack)이란 - Stack : 쌓다의 의미 - 후입선출(後入先出) 구조 - LIFO(Last - In - First - Out) - 휴대폰 앱의 화면 이동 방식 / 브라우저의 뒤로가기 / Ctrl+Z(Undo) - 스택은 한 번에 한 개의 데이터만 꺼낼 수 있다(하나씩 꺼낸다) - Push(삽입)와 Pop(삭제) - Push(Data) : 저장공간에 데이터를 집어넣는 행위 스택에 데이터가 꽉 차면 오버플로우(Overflow) 현상이 발생. IsFull() 함수로 확인할 수 있음 - Pop() : 저장공간에서 데이터를 빼내는 행위, 최상단의 데이터를 가리킴 스택에 데이터가 비게 되면 언더플로우(Underflow) 현상이 발생. IsEmpty() 함수로 확인할 수 있음 - Peek() : 스택의 최..
컬렉션(Collection) - 데이터 저장, 검색, 기타 데이터 처리 특화 - 자료구조(Data Structure) - 선언 방법, 참조 방법, 중요 메소드 ArrayList - 배열과 비슷 - 크기가 유동적(동적) using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _095_ArrayList { class Program { static void Main(string[] args) { ArrayList arrList = new ArrayList(); //Add 함수는 어떤 데이터형도 다..