목록Dev. Study Note (179)
Priv's Blog
1. '가상'과 '현실'의 정의VR이라고 부르는 '가상 현실'은 '가상'이라는 단어와 '현실'이라는 단어가 합쳐진 용어이다.어떻게 보면 '가상'과 '현실'은 서로 상반되는 개념으로 보일 수도 있는데, 이 두 단어가 어떻게 합쳐진 것일까?아니, 애초에 '가상'과 '현실'은 무엇일까?먼저 가상은 '본질적이고 효과적이지만, 실존하지는 않는 것'이라고 말할 수 있다.컴퓨터를 다루는 사람들이라면 이 개념이 어느 정도 익숙할 것이다.컴퓨터의 HW의 핵심 구성 요소 중 하나인 RAM의 용량이 부족할 때, 우리는 HDD 또는 SDD와 같은 보조 기억장치를 RAM 대신 사용하는 '가상 메모리(Virtual Memory)'를 활용한다.즉, 메모리 공간이라는 본질적인 개념도 존재하며 실제로도 메모리 용량이 늘어난(것 같이 ..
1. 함수C++에도 코드 재활용 수준과 가독성을 높여주는 함수가 존재합니다.함수는 데이터를 입력받으면 이를 활용해 특정한 기능을 수행한 뒤, 적절하게 가공된 출력을 하는 역할을 수행합니다.여기서 데이터의 입력은 '매개변수', 데이터의 출력은 '반환 값'이라는 용어로 칭합니다.매개변수와 반환 값은 존재하지 않을 수도 있으며, 그 종류와 개수도 무궁무진합니다.반복적으로 사용되는 코드의 일부분을 함수로 처리하면 동일한 기능을 수행해야 할 때 그 함수를 '호출'하면 되므로, 코드의 가독성과 재활용성을 높여줄 수 있습니다.함수의 이름이 곧 함수이 기능을 의미합니다.이 때문에 함수를 호출하는 것만으로도 그 함수의 실제 내용물을 모르더라도 어떠한 기능이 수행될 것인지를 쉽게 파악할 수 있습니다.이러한 점 덕분에 OO..
1. JsonUtilityUnity는 기본적으로 Json을 이용해 데이터를 외부에 저장할 수 있는 기능을 지원합니다.Unity Learn에서는 세션 간의 데이터 지속성으로 설명하고 있으며, 직렬화/역직렬화 개념을 기반으로 합니다. Manage scene flow and data: Implement data persistence between sessions출처 Implement data persistence between sessions - Unity Learn In this tutorial, you’ll write code to save and load the color that the user selects so that it persists between sessions of the applicat..
1. C++의 배열이제 C++ 내부에서 배열을 어떻게 다루는지 알아보겠습니다.정수형 변수에 1이라는 값을 더하면, 변수의 값이 1만큼 올라갑니다.하지만 포인터 변수는 다르죠.포인터 변수에 1이라는 값을 더하면 메모리 주소가 달라집니다.만약 포인터 변수의 타입이 double이라면, double은 8byte 크기이므로, 값이 더해졌을 때 8byte만큼 올라갈 것입니다.#include using namespace std;int main() { double* dp = new double; cout 그렇다면 C++에서 포인터가 배열을 가리킨다면 어디를 가리킬까요?위와 같이 단순히 하나의 값만 다루는 변수라면 문제가 없지만, 다들 아시다시피 배열을 여러 개의 값을 연속적으로 저장해 다루는 방식의 자료구조..
1. 메모리 주소포인터 변수는 일반적으로 데이터를 저장하는 것 대신, 메모리의 주소를 저장하는 변수라고 알려져 있습니다.메모리 주소는 말 그대로 데이터가 메모리 상에서 어디에 저장되어 있는지에 대한 주소로, 데이터 그 자체가 아닌 데이터의 위치를 의미합니다.C++에서 이 메모리 주소를 변수에 담기 위해서는 포인터 변수를 정의해 사용해야 하며, 포인터 변수는 메모리 주소만 저장할 수 있습니다. 2. & 연산자와 * 연산자포인터 변수는 값이 아닌 값의 주소를 저장합니다.포인터 변수를 선언하기 위해서는 * 연산자를, 포인터 변수에 저장할 데이터의 주소를 나타내기 위해서는 & 연산자가 사용됩니다.& 연산자는 해당 값의 메모리 주소를 가져오는 역할을 합니다.#include using namespace std;i..
1. 오버로딩 (Overloading)C#에서 사용되는 메서드는 OOP 언어의 개념 중 하나인 다형성에 기반하여 오버로딩이라는 기능을 사용할 수 있습니다.원래 메서드는 고유한 이름을 이용해 정의됩니다.메서드의 이름은 메서드 호출 시에 사용되기 때문에 말 그대로 '이름'의 의미를 지닙니다.하지만 사람들의 이름처럼 메서드의 이름도 '동명이인'이 존재할 수 있습니다.우리가 알고 있는 동명이인이라는 개념을 조금 더 살펴보자면, '이름'은 같지만 '존재'는 다른 두 명 이상의 사람이라고 말할 수 있습니다.여기서 '존재'는 뭘까요?더 쉽게 비유하자면, '알맹이'에 가깝습니다.얼굴도 다르고, 가정도 다르고, 나이도, 태어난 곳도 다른, 말 그대로 '다른 존재'입니다.그 존재를 호출하는 데 사용되는 이름이라는 것만 같..
1. C++의 상속 C++는 OOP 언어의 핵심 중 하나인 '상속' 기능을 지원합니다. C++은 다중 상속을 지원하며, 상속 시 접근 제한자를 이용해 여러 타입의 상속을 구현하는 것도 가능합니다. class Mother { public: Mother() { }; void sayHi() { cout
1. ScriptableObject ScriptableObject는 Unity에서 데이터를 관리하는 컨테이너 중 하나로, 값의 사본이 불필요하게 많이 생성되는 것을 방지하여 메모리 사용량을 절약하는데 유용하게 사용됩니다. 세 종류의 몬스터가 서로 같은 체력과 공격력을 가지고 있다고 가정하면, 각각의 프리팹이 개별적인 데이터를 지니고 있기 때문에 몬스터의 수가 늘어나면 그만큼 사본의 수도 늘어나 메모리가 크게 낭비됩니다. 하지만 ScriptableObject를 사용하면, 게임 내 모든 몬스터가 하나의 ScriptableObject 데이터를 참조하여 사용하기 때문에 아무리 몬스터의 수가 늘어나도 사본의 수는 늘어나지 않습니다. 2. 에디터 버전과 빌드 버전은 다르다. Unity 에디터 상에서 Scriptab..