목록잡동사니/[2022] 회로이론 (81)
기록

스크립트는 게임 엔진이 어떻게 동작할지 작성한 텍스트 파일입니다. 유니티는 스크립트 언어로 C#을 사용합니다. 따라서 유니티를 제대로 사용하려면 C# 프로그래밍을 이해해야 합니다. 이 장에서는 C# 스크립트를 작성하기 전에 프로그래밍에 필요한 기본 개념을 알아봅니다. 그리고 C#의 다양한 기본 문법을 사용해보고, 유니티에서 첫 C# 스크립트를 작성합니다. 4.1 변수 개념 잡기 모든 프로그래밍 언어에서 공통적으로 사용하는 '변수'와 '메서드(함수)'에 관한 개념을 알아보겠습니다. 먼저 변수부터 알아봅니다. 변수는 값을 저장하는 장소입니다. 변수에 저장한 값은 게임 도중 언제든지 접근하고 수정할 수 있습니다. 변수를 사용하는 이유는 원하는 값을 기억하고 다시 사용하기 위해서입니다. int gold 1000..

컴포넌트 구조에서는 '전체 방송'을 이용해 컴포넌트의 특정 기능을 간접적으로 실행할 수 있습니다. 이러한 전체 방송을 '브로드캐스팅' 이라고 부릅니다. 3.4.1 MonoBehaviour 는 무엇인가? 브로드캐스팅이 가능한 원리를 이해하려면 먼저 모든 컴포넌트의 기반인 MonoBehaviour를 잘 알아야 합니다. 유니티의 모든 컴포넌트는 MonoBehaviour 클래스를 상속합니다. MonoBehaviour 클래스는 유니티에서 미리 만들어 제공하는 클래스이며 컴포넌트에 필요한 기본 기능을 제공합니다. 즉, MonoBehaviour 를 상속한 클래스는 게임 오브젝트에 컴포넌트로서 추가될 수 있습니다. MonoBehaviour 를 상속해서 만든 컴포넌트는 유니티의 제어를 받게 됩니다. 그러므로 컴포넌트는 ..
https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 첫째 줄에 숫자의 개수가 주어지고 둘째 줄에 공백 없이 주어지는 숫자 N개의 합계를 구하여 출력하는 문제입니다. 1. 숫자의 개수 n을 Scanner로 입력받습니다. 2. String형 변수 numStr에 N개의 숫자를 문자열로 입력받습니다. 3. String형 변수 numStr에 저장된 숫자 문자열을 .toCharArray()를 사용하여 char[]형으로 변환하여 char[]형 변수 numChar에 저장합니다. 4. char 배열의 원소 하나씩 접근하여 원소 하나하나를 int ..

물리 계층의 네트워크 장비에는 리피터와 허브가 있습니다 리피터 (repeater)란? 예전에 사용하던 장비입니다. 리피터는 아래 그림과 같이 전기 신호를 정형(일그러진 전기 신호를 복원)하고 증폭하는 기능을 가진 네트워크 중계 장비입니다. 멀리 있는 상대방과도 통신할 수 있도록 파형을 정상으로 만드는 기능을 합니다. 하지만 요즘은 다른 네트워크 장비가 리피터 기능을 지원하기 때문에 리피터를 사용할 필요가 없습니다. 최근에는 보기 힘들고 앞으로도 사용할 일은 거의 없을 것 같습니다. 허브(Hub) 란? 허브는 아래 그림과 같이 포트 (실제로 통신하는 통로)를 여러 개 가지고 있고 리피터 허브라고도 부릅니다. 리피터는 일대일 통신만 가능하지만 허브는 포트를 여러 개 가지고 있어서 컴퓨터 여러 대와도 통신할 ..

네트워크 전송 매체의 종류에는 유선과 무선이 있습니다. 이번에는 유선 전송 매체로 사용되는 네트워크 케이블 커넥터에 대해 알아봅시다. 전송매체란? 데이터가 흐르는 물리적인 선로로 종류가 크게 유선과 무선으로 나누어집니다. 유선에는 트위스트 페어 케이블, 광 케이블 등이 있고 무선에는 라디오파, 마이크로파, 적외선 등이 있습니다. 트위스트 페어 케이블 (Twisted Pair Cable) 이란? 트위스트 페어 케이블의 종류에는 UTP 케이블과 STP 케이블이 있습니다. UTP 케이블 (Unshielded Twisted Pair)은 구리선 여덟 개를 두 개씩 꼬아 만든 네 쌍의 전선으로 실드 (shield)로 보호되어 있지 않은 케이블입니다. 실드는 금속 호일이나 금속의 매듭과 같은 것으로 외부에서 발생하는..

1장에서 Cube 게임 오브젝트 구성에서 컴포넌트 구성을 다시 확인해봅시다. Cube 게임 오브젝트의 외형과 기능은 본래 Cube가 지닌 것이 아니라 컴포넌트에 의해 추가되었다는 사실을 알 수 있습니다. 예를 들어 1장에서 처음 Cube 게임 오브젝트를 만들었을 때 Cube에는 물리 기능이 없었습니다. 나중에 리지드 바디 컴포넌트를 추가함으로써 Cube에 물리 기능이 추가되고 중력의 영향을 받아 Cube가 떨어질 수 있었습니다. 컴포넌트를 추가할 때는 인스펙터 창에서 Add Component 버튼을 클릭합니다. 반대로 기존 컴포넌트를 제거할 수도 있습니다. 특정 컴포넌트를 제거하고 싶다면 컴포넌트를 마우스 우측 버튼으로 클릭하거나 컨텍스트 메뉴(:) 버튼을 클릭한 다음 Remove Component를 선..

게임 엔진에서 게임 오브젝트는 게임 세상에 존재하는 하나의 물체입니다. 유니티는 게임 오브젝트를 컴포넌트 패턴을 사용해 만듭니다. 컴포넌트 패턴 혹은 컴포지션 패턴이란 미리 만들어진 부품을 조립하여 완성된 오브젝트를 만드는 방식입니다. 여기서 ㅣㅁ리 만들어진 부품을 컴포넌트라 부르며 컴포넌트는 저마다의 대표 기능을 가집니다. 컴포넌트 패턴에서 게임 오브젝트는 속이 빈 껍데기입니다. 개발자는 빈 게임 오브젝트에 컴포넌트를 조립하여 새로운 기능을 추가할 수 있습니다. 3.2.1 컴포넌트로 동물 만들기 기획자와 프로그래머가 컴포넌트로 게임 속 동물을 만든다고 가정해봅시다. 이전에는 프로그래머가 여러 필수 기능을 부모 클래스 하나에 몰아넣었습니다. 이번에는 부품마다 대표 기능을 하나씩 부여하고, 여러 부품을 게..

게임 엔진은 이미 완성된 기반 코드를 제공합니다. 개발자는 게임 엔진의 코드를 '재사용'하므로 생산성이 올라갑니다. 이러한 코드 재사용은 게임 개발 뿐만 아니라 대부분의 소프트웨어 개발에 있어 중요합니다. 유니티의 컴포넌트 기반 구조를 이해하려면 코드를 재사용하는 전통적 방법인 '상속'을 알야아 합니다. 상속은 이미 만들어진 클래스에 새로운 코드와 기능을 덧붙여 새로운 클래스를 만드는 방법입니다. 여기서 기초를 제공하는 클래스를 부모 클래스라고 부르고 부모 클래스를 상속해서 확장한 클래스를 자식 클래스라고 부릅니다. 클래스란 묘사할 대상과 관련된 코드 (변수와 메스드 등)을 묶는 틀입니다. 예를 들어 몬스터 클래스는 몬스터와 관련된 코드를 가지고 힐러 클래스는 힐러와 관련된 코드를 가집니다. 3.1.1 ..