728x90
 

[지금 무료] 블록체인과 솔리디티 | 박민 박 - 인프런

박민 박 | Solinity 언어와 Truffle 빌드 프레임 워크를 사용하는 Ethereum 블록체인에서의 탈중앙화 애플리케이션 (Dapp) 개발, [임베딩 영상] 블록체인과 솔리디티 이 강의는 블록체인에 대한 이해를 높

www.inflearn.com

이번 글은 [블록체인과 솔리디티] 섹션 1 강의를 정리한 글이다.

 


솔리디티

솔리디티는 스마트 컨트랙트를 구현하기 위한 컨트랙트 기반의 고급 프로그래밍 언어로 C++, Pyhton , JavaScript 의 영향을 받은 고수준의 언어이다. 솔리디티는 정적 타입이며, 상속, 라이브러리, 유저 정의 타입을 지원하는 특징이 있다.

이더리움 버추얼 머신이라는 EVM을 타겟으로 디자인되어 있다.

  • Ethereum Virtual Machine

이더리움 네트워크 노드들이 공유하는 하나의 거대한 가상머신이다.

 

스마트 컨트랙트는 특성상 한번 블록체인 위에 올라가면 바꿀 수 없고, 누구나 확인할 수 있기 때문에 신중하게 작성해야 한다. 

솔리디티로 스마트 컨트랙트를 작성하는 방법

 

Remix - Ethereum IDE

 

remix.ethereum.org

remix라는 웹 기반의 솔리디티 에디터를 사용하여 솔리디티로 스마트 컨트랙트를 작성하도록 하겠다. 

remix는 웹 브라우저에서 사용 가능한 IDE이고 솔리디티 프로그램을 테스트, 실행해볼 수 있는 도구이다.

 

 

 

솔리디티의 특징

솔리디티는 튜링완전하는 특징을 가진다. 튜링완전하다는 것은 반복문과 제어문을 사용할 수 있다고 간단하게 말할 수 있다. 

솔리디티는 msg.sender, msg.value라는 특수한 변수가 존재한다.

  • msg.sender: 메세지를 보낸 주소
  • msg.value: 메세지를 보낸 값

 

 


스마트 컨트랙트 구조

컨트랙트는 클래스와 비슷하여 상태 변수, 함수, 함수 변경자, 이벤트, 구조체, 열거형 등을 포함한다. 또한 상속과 다양성도 지원이 된다. 

// 1. 컨트랙트 선언
contract Sample {
    // 2. 상태 변수 선언
    uint256 data;
    address owner;
    
    // 3. 이벤트 정의
    event logData(uint256 dataToLog);
    
    // 4. 함수 변경자 정의
    modifier onlyOwner() {
        if(msg.sender != owner) revert();
        _;
    }
    
    // 5. 생성자
    function Sample(uint256 initData, address initOwner) {
        data = initData;
        onwer = initOwner;
    }
    
    // 6. 함수(메소드) 정의
    function getData() returns (uint256 returned) {
        return data;
    }
    function setData(uint256 newData) onlyOwner {
        logData(newData);
        data = newData;
    }
}
```

 

위 코드는 스마트 컨트랙트 작성 시에 뼈대 코드로 활용하기 좋다. ​

 


솔리디티 데이터 타입

  • string & byte

 

문자열을 표현하는 데이터 타입으로 둘의 차이점은 string은 UTF8로 인코딩 되어 우리가 알아보기 쉽도록 표현된다.

 

  • mapping

키와 value 쌍을 이야기하며, 위 예제에서는 address 값으 키로 sting value를 맵핑하였다. 

 

 

  • 정적 배열 & 동적 배열

동적 배열을 사용하며 블록체인 상에 마치 데이터베이스처럼 값을  계속 추가하며 사용할 수 있다. 

 

  • interface

인터페이스를 사용하여 추상 계층을 작성할 수 있다.

 

  • modifier

modifier라는 한정자를 가지고 있으며, 한정자는 함수를 실행하면 함수를 실행하는 조건으로 자리할 수 있다.

다른 언어의 데코레이터(decorator)와 비슷한 역할을 수행한다.

더보기

데코레이터란? 함수나 메서드에 적용되어, 해당 함수나 메서드의 기능을 확장하거나 변경하는 역할을 한다. 

 


데이터위치와 문법

 

  • storage - 상태변수, 로컬변수
  • memory - 로컬변수

​스토리지는 전역 변수와 같고, 블록체인 내에 저장된다. 메모리는 로컬변수와 같으며 사용 후 휘발된다.

 

솔리디티 문법

if, else, while, for, break, continue, return, ?(삼항연산자) 등을 지원한다. 


가시성

가시성이란 누가 접근할 수 있는가를 정의하며, external, pubric, internal, private 등 4가지가 있다. 

  • external

다른 컨트롤러나 트랜젝션을 통해 호출될 수 있다. 그렇기 때문에 function f를 f() 이렇게 그냥 부르면 동작하지 않고 this.f()로 호출해야 한다.

  • pubric

모든 방법으로 접근할 수 있다.

Getter()가 자동 생성되어 값을 가져올 수 있다.

  • internal

내부적으로만 접근할 수 있다. 접근을 위해 this를 사용할 수 없다는 특징을 가진다.

  • private

상속된 컨트랙트에서는 접근할 수 없다.

 

가스

EVM에서 어떤 것이 실행될 때, 가스가 발생하는데, 가스는 수수료라고 이야기할 수 있다.

가스 리밋

수수료의 한계치로 가스 리밋을 낮게 설정하면 일을 끝마치기 전에 가스(수수료)를 다 사용하게 된다.

이런 경우 이더리움에서는 지금까지 한 일들을 취소시키고 지금까지 수수료는 돌려주지 않는다. 채굴자들이 일을 했기 때문에 수수료 돌려주지 않는 것이다.

가스 프라이스

가스 프라이스는 가스당 가격으로 가격이 비싸지면 채불자들은 수수료를 많이 받을 수 있기에 비싼 가스 프라이스가 먼저 채굴되는 경향이 있다.

가스 프라이스 * 가스 사용량 = 수수료

 

728x90

블록체인

블록체인이란 블록들이 연결되어 있는 체인으로 블록은 데이터 집합을 의미한다. 각각의 블록안에 데이터를 넣고 체인으로 연결되는ㄷ 블록체인을 각각의 사용자들이 모두 동일하게 가지고 있다. 

 

이로 인해 다른 정보를 가지고 있다면 잘못된 정보를 가지고 있음을 알 수 있다. 이제까지의 보안은 최소한의 사람이 정보를 공유하는 방식의 폐쇄적인 형태였다.

이와 달리 블록체인은 최대한 많은 사람이 정보를 가지고 있음으로 만일 잘못된 정보를 퍼트리고 싶어도 많은 사람이 가지고 있는 블록체인 내 데이터를 변경하기란 어렵기 때문에 최근들어 각광을 받고 있다.

 


블록체인과 암호학

머클 트리

 

해시가 이용된 데이터 검증을 위한 트리 구조로 블록체인에서 라이트 노드와 거래 검증의 핵심 요소이다. 

머클트리는 이진 트리라는 이름으로 많이 알려져 있으며 하나의 루트에 뿌리를 내리는 형식으로 거래량이 기하급수적으로 늘어도 특정 거래를 찾는 경로는 단순하다는 이점이 있다.

그렇기 때문에 거래 내역을 위조하려는 시도가 있어도 머클트리의 경로를 따라가면 해시값이 다른 것이 나오게 되어 거래의 위변조도 쉽고 빠르게 알 수 있게 되어 데이터의 무결성이 보장되고 이를 방지 할 수 있다. 

 

라이트 노드 

모든 블록 정보를 가지고 있지 않고 머클루트 값만을 가지고 있는 노드로 머클루트만을 가지고 있는 노드를 라이트노드라고 한다. 

 

거래검증

머클트리는 머클 경로를 알려주기만 하면 몇 번째 블록이건 검증이 가능하다. 위의 예시에서 4가 존재하는 지를 알기 위해 4의 짝노드와 상위 짝노드를 알면, 최종적으로 4가 거래되었는지를 확인할 수 있다. 

 


블록체인의 활용

블록체인의 대표적인 활용으로는 암호화폐를 꼽을 수 있으며, 비트코인, 이더리움, 비트코인 캐시 등 수많은 암호화폐들이 블록체인 기반으로 만들어졌다. 

 

가치전달

[좌] 은행과의 거래 [우] 블록체인 가치 전달

블록체인은 가치를 전달할 수 있다는 것이다. 은행과의 거래에서는 가치가 전달되는 것은 은행에 대한 신뢰를 기반으로 거래를 하지만 실제 금전의 가치가 이동을 했는지에 대해서 확인을 하려면 출금을 해야한다.

하지만 블록체인에서의 거래는 실제로 가치가 전달되는데, 이는 조작될 수 없는 환경인 블록체인에서의 거래는 바꾸거나 되돌릴 수 없기 때문에 그 자체로 가치가 전달된 것임을 증명하게 된다. 

 

이러한 가치가 금전에서 데이터로 확장되었다. 

 


이더리움과 스마트컨트랙트

이더리움이란? 비탈릭 부테린이 이끌고 있는 이더리움 재단에서 만들고 있는 암호화폐이며, 동시에 블록체인 플랫폼이다. 이더리움은 플랫폼으로서 이더리움 블록체인 위에 스마트 컨트랙트를 작성할 수 있게 만들어졌다.

스마트컨트랙트란? 블록체인상에 존재하는 계약서이다. 과정을 블록체인에 담는 것이라고 볼 수 있다. 

 

이더리움 플랫폼 위에 올라가 있는 어플리케이션을 분산한 어플리케이션, Dapp 이라고 읽는다. 이를 이용해 우리는 어떤 조건을 만족하면 실행되는 계약을 만들 수 있고, 이는 무결한 블록체인으로 인해 정확히 실행된다. 

 

 


블록체인과 이더리움의 문제

블록체인이 이점이 있는 반면 단점도 존재하는데, 크게 4가지의 문제가 있다. 

 

프라이버시 문제

블록체인은 기본적으로 데이터 조작이 불가능하고 평생 기록이 남는 것에 따른 프라이버시 문제가 발생할 수 있다. 

 

트랜잭션 코스트

이더리움의 트랜잭션을 실행시킬 때 가스라는 수수료를 내게 되는데 해당 가격을 사용자가 부담하게 된다. 이더리움은 다른 코인에 비해 가격이 안정적인 편에 속하지만, 그래도 가격 변화에 따라 가스비와 이더리움 가격이 높아질 수록 증가하는 수수료는 사용자에게 부담이 된다. 

 

트랜잭션 속도

중앙화된 처리에 비해 느린 속도로 처리가 되는 문제가 있다. 중앙처리 시스템에서는 바로 즉시 효력을 가질 수 있으나 이더리움은 구조상 약 10번 정도 컨펌이 나야 무결하다고 볼 수 있어 효력을 갖는다. 이때까지 걸리는 평균 시간은 3분정도 걸린다. 

 

블록 사이즈

모든 채굴자가 모든 블록을 가지고 있어야 하므로 용량을 많이 차지하게 된다. 

728x90

Unity C# Script

Script의 역할

  • 스크립트가 컴포넌트로 종속된 게임 오브젝트에 주어지는 각종 명령 제어
  • 게임 내에 사용되는 여러 오브젝트들을 생성, 삭제 및 관리
  • 게임 전체 또는 일부를 관리하는 게임 내 시스템 구현

 

Script 생성

Project View > Create (+) > C# 선택하면 파일이 생성된다. 스크립트 파일 생성 시 이름을 설정하면, 설정한 이름대로 클래스가 생성되며 안의 코드를 바꾸고자 한다면 더블클릭을 한다. 

 

 

코드는 비주얼 스튜디오에서 수정하며 기존적인 스크립트 구조는 상단 이름 공간에 Using 이 작성되어 있고, 아래 클래스 이름과 부모 클래스를 정의한다. 이후 클래스 내용은 중괄호 안쪽에 정의된다. 

클래스는 앞에서 본 Transform, Sprite Renderer와 같은 컴포넌트를 나타내는 단위이기도 하며 게임을 구동시키는 각종 기능을 작성하는 공간이다. 

 

위에 사용되는 MonoBehaviour라는 클래스는 유니티에서 미리 작성한 클래스로 using UnityEngine은 유니티 엔진 공간 안에 들어있는 모든 클래스를 사용하겠다는 의미이다.

작성 완료 후 유니티 에디터로 돌아오면 컴파일 과정을 거치게 되고 컴파일이 완료되었을 때, 스크립트에 오류가 발생하면 콘솔 뷰에 나오게 된다.

 

 

콘솔 뷰에 데이터 출력

Debug.Log(""); 를 사용하면 콘솔 뷰에 내용이 출력된다. 여기서 주의해야할 점은 Hierarchy View에 스크립트가 들어가있어야한다.

 
728x90

이번 글에서는 "따라하면서 배우는 고박사의 유니티 기초" 인프런 강의의 3번째 강의 내용을 다루고 있다. 

 

Unity 3D 기본 용어

Project  하나의 게임, 콘텐츠, 어플리케이션
Scene 게임의 장면이나 상태를 저장하는 단위
하나의 게임을 씬 단위로 관리, 코드 이용해 이동 가능
씬을 변경할 경우 이전 씬은 모두 삭제된다.
GameObject 씬에 배치되는 하나의 물체를 지칭하는 단위
모든 게임 오브젝트는 위치/회전/크기를 제어하는 “Transform” 컴포넌트를 가지고 있다. 
게임 오브젝트에 원하는 컴포넌트를 추가하여 다양한 오브젝트 제작 가능
Component (C# Script) 게임 오브젝트에 부착할 수 있는 C# 스크립트 파일을 지칭하는 단위
게임 오브젝트에 컴포넌트를 부착하여 게임 오브젝트에 여러 기능을 부여
Asset  프로젝트 내부에서 사용하는 모든 리소스를 지칭하는 단위(Project View) 
Prefab Hierarchy View에 있는 게임 오브젝트를 파일 형태로 저장하는 단위
주로 게임 중간에 생성되는 게임 오브젝트를 프리팹으로 저장해두고 사용한다. 
동일한 게임 오브젝트를 여러 Scene이나 게임 월드 특정 장소에 배치할 때 Project View에 저장되어 있는 Prefab을 Drag & Drop하여 배치할 수 있다.
기획상의 변경이 있을 때 프리팹 원본을 갱신하게 되면 모든 씬에 복사되어 배치된 게임 오브젝트들도 원본과 동일하게 업데이트 된다.

 

Project, Scene, GameObject, Component, Asset 관계도 

 

 

Unity 3D 좌표 체계 

Unity 3D의 게임 월드는 원손 좌표계를 기준으로 x,y,x 축을 나타낼 수 있다. 또한 실제 게임에서는 2차원과 3차원을 나타낸다. 이때 차원은 카메라를 통해 조절할 수 있다. 

 


게임 오브젝트의 종류

게임 오브젝트 메뉴 

camera 기준으로 위는 생성 아래는 제어하는 메뉴

많이 사용되는 게임 오브젝트들을 생성할 수 있도록 메뉴화하여 제공하였으며 게임 오브젝트를 생성하는 메뉴와 제어하는 메뉴로 되어 있다. 

 

빈 오브젝트 (Empty Object)

빈 오브젝트는 말 그대로 모든 오브젝트가 가지는 Transform component만 붙어있는 오브젝트이다. 여기서 Transform component는 이동, 회전, 크기를 제어하는 component로 모든 게임 오브젝트가 기본으로 가지게 된다. 

 

3D Object 

게임 화면에 배치할 수 있는 3D 오브젝트로 3차원 도형 오브젝트, 화면에 3차원 텍스트를 표현하거나 3차원 지형 등등을 지원한다. 

대표적인 3차원 도형 오브젝트인 Cube의 경우를 예시로 들자면, 

Inspector view를 보면 component가 세가지 항목으로 나뉜다.

  • Mesh Filter component : Mesh 변수에 등록된 데이터에 따라 3차원 오브젝트의 외형이 다르게 구현된다.
  • Mesh Renderer component : 표면의 질감이 표현되며 3차원 오브젝트의 표면 색상을 나타낸다. 
  • Box Collider component : 게임 오브젝트의 충돌 범위를 설정한다. 

 

 

2D Object 

게임 화면상에 2D 이미지를 보이게 하는 게임 오브젝트로 Sprite 오브젝트가 게임 상의 2차원 이미지를 보이게 한다.

Sprite Renderer Component에 의해서 화면상에 2D 이미지를 보여줄 수 있다. 

 

이외에 다양한 오브젝트들은 다음과 같이 간단하게 표로 정리하였다. 

Effect 게임에 사용되는 여러 효과, 무기의 잔상, 선 그리기와 같은 오브젝를 제공
Audio 게임 내에서 재생되는 사운드와 관련된 오브젝트들 제공
Video 동영상 재생 오브젝트 제공
UI 사용자가 게임과 상호작용 할 수 있는 GUI 오브젝트들을 제공

 

 


Camera & Light 

Camera 

플레이어가 게임 월드를 볼 수 있는 눈 역할을 담당하며 Camera Component가 눈 역할을 담당하는데 여러가지 옵션이 존재한다. 대표적인 4가지를 다뤄보겠다. 

  • Clear Flags : 오프젝트가 존재하지 않는 빈 배경을 어떻게 결정하는 요소 
  • Projecton : 카메라의 시점을 나타내며, 2차원과 3차원 시점이 존재한다. 3ㅏ원인 경우에 원근 투영이 적용된다. 
  • Clipping Planes : 카메라가 오브젝트를 볼 수 있는 시야 거리
  • Viewprot Rect : 카메라가 본 것은 화면에 출력하는 영역 설정 변수로 최소 0에서 최대 1을 설정할 수 있다. 

 

 

Light 

현실세계의 빛 역할을 담당하며, 빛을 이용해 모델의 제질이나 색상을 다양한 형태로 보여주는데 사용된다. 

 

여기서 완전한 암흑 공간을 만들고자 할 때 window > Rendering > Lighting Settings 를 선택해 Lighting View를 열어 환경광과 주변광을 어둡게 설정하고 카메라 Clear Flags를 검은 화면으로 설정하면 완전한 암흑을 만 수 있다. 

 

 

Light Component

여러가지 옵션들이 존재하고 Type에 따라 4가지로 나뉘며, 아래의 값들이 바뀔 수 있다. 

 

Directional Light

오브젝트의 위치, 크기가 중요하지 않고, 방향이 중요한 빛으로 게임 월드에 존재하는 모든 오브젝트에게 동일한 방향으로 빛을 제공한다. 

Point Light

Range 변수에 설정된 값 만큼 구 형태로 방사되는 빛으로 주변을 밝게 만드는 전구, 모닥불과 같은 곳에 사용한다. 

 

 

Spot Light

Range, Spot Angle 변수에 설정된 값 만큼 원뿔 형태로 뻗어나가는 빛으로 오브젝트를 강조해서 비출 때나 가로등과 같은 곳에서 사용한다. 

 Area Light

오브젝트의 위치를 기준으로 전방 방향으로만 방출되는 빛으로 Area Light는 Baked 모드에서만 사용 가능하다. 

 

 

Mode

빛의 연산을 실시간으로 할지 미리 계산해두고 쓸지 결정하는 옵션으로 3가지를 볼 수 있다. 

  • ​Realtime : 빛이 비췄을 때의 밝기, 그림자 등의 연산을 실시간으로 함
    • 장점 : 게임 실행 중에도 빛의 이동이나 회전에 따라 환경이 변화
    • 단점 : 연산량이 많아 게임의 최적화에 큰 지장을 줌
  • Mixed : Realtime과 Baked를 섞어서 사용
  • Baked : 현재 상태로 빛 연산을 해두고 활용
    • 장점 : 연산을 미리 해두고 사 용하기 때문에 최적화가 잘 되어있음
    • 단점 : 게임 실행 중에 빛이 이동/회전해도 반영되지 않음

 

 

빛이 Baked 모드일 때 설정해야 하는 것들

빛의 영향을 받을 모든 게임 오브젝트의 Static 옵션을 contribute GI에 설정해야 한다. 또한 Window - Rendering > Lighting Settings에서 “Generate Lighting”으로 빛 데이터 Baked 할 수 있다. 

Intensity

빛의 세기를 나타내는 수치, 높을 수록 빛의 세기가 세진다.

Shadow Type

빛을 받은 오브젝트의 그림자 설정

Cookie & CookieSize

빛의 모양을 원하는 이미지의 모양으로 바꿀 수 있으며, Cookie에 등록된 Texture 모양, Cookie Size 크기의 빛 생성할 수 있다.  Texture 파일의 Wrap Mode가 Repeat로 설정되어야 그림과 같이 반복된 이미지를 출력한다. 

Texture 파일의 Wrap Mode가 Clamp로 설정되어야 그림과 같이 한번만 이미지를 출력한다.

이외에 빛에 대한 여러가지 옵션이 있다.

  • Draw Halo : 빛 주변으로 후광 효과 생성
  • Flare : 빛의 효과에 대한 모습
  • Render Mode : 중요한 빛과 중요하지 않은 빛을 구분
  • Culling Mask : 해당 레이어에 빛을 적용할지 적용하지 않을지 설정. 선택 해제된 레이어는 해당 빛의 영향을 받지 않는다.
 

2D 게임 오브젝트 Texture 출력

  1. 사용할 이미지 Asset의 Texture Type을 Sprite (2D and UI)로 설정
  2. GameObject > 2D Object > Sprite 생성
  3. 생성된 오브젝트의 Sprite Renderer Component에 있는 Sprite 변수에 이미지 assets 등록 

3D 게임 오브젝트 Texture 출력

  1. 사용할 이미지 Asset의 Texture Type을 default로 설정
  2. :Project View에서 Material asset 생성
  3. Material asset에서 image asset 등록
  4. 게임 오브젝트 > 3D 오브젝트 > 원하는 오브젝트 생성
  5. 생성된 오브젝트의 Mesh Renderer 컴포넌트에 있는 materials 변수에 material asset 등록
 
 

 

728x90

 

이번 글에서는 유니티 프로젝트 생성과 유니티 에디터 인터페이스를 다룬다. 

 

Projects 탭에서 기존에 생성되었던 프로젝트나 새로 프로젝트를 생성할 수 있다. 이때  유니티 버전이 여러 개를 가지고 있는 경우, New project 옆에 토글이 활성화되며, 특정 버전을 선택해서 프로젝트를 생성할 수 있다. 

Projects Tab

 

새 프로젝트를 생성해보자. 

 

화면 상단에 프로젝트 이름, Scene 이름, 현재 플랫폼 정보, 유니티 버전 정보 등등을 확인 할 수 있다. 바로 아래에 메뉴 바와 툴바, View 영역이 있다. 

view 영역은 유니티 고유의 영역이며, 각각의 이름을 가지고, 이름에 따라서 역할이 나뉘어져(scene, game, Hierarchy, inspector 등등) 유니티에서는 view 영역을 중심으로 프로젝트 개발을 진행하고 데이터를 확인한다. 

 


Menu 영역

[좌] File > Build Settings [우] Edit > Project Settings

  • File > Build Settings : 프로젝트를 빌드를 할 수 있다. 
  • Edit > Project Settings : 단축키,  그래픽 옵션, 물리, 오디오 등등을 설정할 수 있다. 
  • Assets : 패키지 파일을 생성, 삭제할 수 있다. ( 패키징이란? 유니티의 여러 파일을 다른 사람에게 전달 시 하나로 묶어 전달하기 위해 사용하는 방식 ) 
  • GameObject : gameobject 관련된 메뉴이다. 
  • Component : GameObject에 부착해서 사용하는 하나의 속성으로 물리, 사운드 재생, 충돌 박스, 화면에 보여지는 렌더링와 같은 속성을 설정할 수 있다. 이는 GameObject에 부착하여 사용한다. 
  • Window : 다양한 용도에 따른 view를 열 수 있다. 

 

 


Tool bar

현재 설치된 2022.3 버전 유니티 에디터 툴바는 Scene view, Game view, 계정이나 프로젝트를 위한 툴바로 나뉘게 된다.강의와는 다른 버전으로 설치를 하였기 때문에 2022.3버전의 유니티 에디터 툴바를 설명하고자 한다.

왼쪽부터 차례대로 설명하자면

  • Account Drop Down : Unity 계정을 엑세스한다.
  • Cloud : Unity Service 창을 열 수 있다. 
  • Play, Pause, Step button : 게임을 실행, 일시 정지, 1 step 진행하는 버튼으로 Game view를 위한 도구이다. 
  • Undo History : 에디터에서 수행한 작업을 확인, 취소, 재실행할 수 있다. 
  • Search : 검색
  • Layers Drop Down (Scene View) : Scene View의 게임 오브젝트 제어 ( 화면에 보여지는지, 선택 가능한지)
  • Layers Drop Down : 뷰 정렬을 변경하거나 새 레이아웃을 저장 혹은 기존 레이아웃을 로드할 수 있다. 

Layers Drop Down 레이아웃 선택

 

 


Scene View ( Ctrl + 1 ) 

Unity Editor 의 Scene View 영역

현재 scene에 존재하는 모든 오브젝트를 그래픽에 표현한 것으로 또한 오브젝트의 이동이나 크기, 회전값을 조절할 수 있는 개발자 편집 공간이기도 하다. 위의 이미지 우측 상단에 x,y,z축의 방위를 나타낸다.

 

 

회전, 크기 조절, 이동 등이 가능하며, 오브젝트를 선택 후 F 를 누르면 선택된 오브젝트를 중심적으로 비추는 화면으로 돌아온다. 이외에 키보드나 마우스를 이용한 화면 조작법은 다음과 같다. 

Scene View 화면 조작법

 

 


 

Game View ( Ctrl + 2 ) 

 

현재 카메라가 보고있는 모든 오브젝트가 보여지는 공간이며, play 버튼을 눌렀을 때 실제 게임이 실행되는 공간이기도 하다.  상단에는 게임에서 사용할 수 있는 각종 옵션 버튼이 있다. 

 

 

 

 


Inspector View ( Ctrl + 3 ) 

 오브젝트 선택시 세부 정보를 보여주는 영역이며, 프로젝트 view에 있는 assets 파일을 선택했을 때에 세부 정보를 보여주는 영역이다. 

 

 


Hierarchy view ( Ctrl + 4 )

모든 오브젝트를 이름으로 표현하는 영역으로 오브젝트들이 계층 관계나 구조를 이룰 수도 있다. 이는 여러 오브젝트를 사용하는 경우 부모와 자식간의 관계로 표현할 수 있으며, 자식이 이동하는데 부모는 영향이 없지만, 부모의 이동, 회전은 자식이 함께 동작을 하는 계층적 구조를 가지게 된다. 

 


Project View ( Ctrl + 5 )

해당 영역은 모든 리소스를 관리하는 공간으로 주의할 점은 프로젝트 뷰 내에 있는 assets는 프로젝트에 사용 가능한 상태로 실제 게임에 영향을 주는 것은 Hierarchy 뷰에 위치해야 게임에 영향을 줄 수 있다.

 

이런 프로젝트 뷰에 사용할 수 있는 파일의 확장자는 다음과 같다. 

  • Image Files

bmp, tif, tga, jpg, psd와 같이 가장 일반적인 이미지 파일 형식을 지원 

포토샵(*.psd) 파일을 “Assets 폴더”에 저장하면 병합된 이미지로 가져옴

 

  • 3D Model, Animation Files

가장 일반적인 3D 소프트웨어의 기본 파일(*.max, *.blend, *.mb, *.ma, etc..)을 “Assets 폴더”에 저장하면 유니티에서 새로 로드해서 저장하게 된다.

대부분의 3D 소프트웨어에서 제작한 파일을 가져올 수 있다.

(호환성 문제로 폴리곤 정보는 유지되지만 맵핑 정보는 유지되지 않는 경우가 많다)

 

  • Audio Files

오디오 파일을 “Assets 폴더“에 저장하면 지정된 압축 설정에 따라 가져옴

 

Unity의 Assets 폴더로 들어온 에셋은 압축, 수정 또는 처리하는 다양한 방법에 따라 변형되어 사용된다. (유니티 내부에서만 변형되고, 원본 자체가 변형되진 않음)​


Console View ( Ctrl+Shift+C )

필요한 정보를 출력하거나 게임이 빌드되기 전, 유니티 에디터 상에서 게임을 확인할 때 사용하는 영역으로 게임에 오류가 난다면 오류를 출력하는 영역이다. 

 

 

+ Recent posts