[ Unity3D 0201]
게임에서 사용되는 오브젝트들을 의미
GameObject >> Create ... 메뉴에서 다양한 GameObject들을 만들 수 있음
GameObject는 Component들의 Container로 다양한 Component들을 담을 수 있으며, Component들에 의해서 그 속성이 정의됨
실습 : Object Empty에서 "Cube Object" 만들기 - GameObject와 Component의 관계를 알 수 있음
Cube 생성 : 목적물
Object Empty : 초기
Mesh Filter
Box Collider
Mesh Renderer
Materials
Element : Default-Diffuse
Component 1 - Component들이 어떤 것들이 있는지를 간단하게 설명
Component Class를 상속 받은 것들
Component <- Behavior <- MonoBehavior
Component <- Collider <- Box Collider
Unity Basic Components : Cube로 설명
Transform : 위치 정보처리를 위한 컴포넌트 ( Empty Object도 이 Component는 필수적으로 가지고 있음)
Mesh
Mesh Filter : Mesh Data 관리를 위한 컴포넌트
Text Mesh : Text 출력을 위한 컴포넌트
Mesh Renderer : Material을 가지고 실질적인 Rendering 위한 컴포넌트
Effects
Unity Reference - http://docs.unity3d.com/Documentation/Components/comp-Effects.html
Particle System : Particle관련한 컴포넌트
Trail Renderer : GameObject가 이동할 시 이동한 흔적(Trail)을 남기고자 할 때 사용 ( ex> 터치 드래그 남기기 )
http://docs.unity3d.com/Documentation/Components/class-TrailRenderer.html
Line Renderer : 다양한 라인(Mesh를 이용한) 관련 컴포넌트
Unity Reference - http://docs.unity3d.com/Documentation/Components/class-LineRenderer.html
Lens Flare : 빛이 카메라 방향으로 날아오는 듯한 느낌의 처리를 위한 이펙트
Unity Reference - http://docs.unity3d.com/Documentation/Components/class-LensFlare.html
Halo : 후광 표현을 위한 이펙트
Unity Reference - http://docs.unity3d.com/Documentation/Components/class-Halo.html
Projector
Unity Reference - http://docs.unity3d.com/Documentation/Components/class-Projector.html
Legacy Particles
Unity Reference - http://docs.unity3d.com/Documentation/Components/comp-ParticlesLegacy.html
3.5 버전 이전에 사용되었던 Particle System
Physics : 물리와 관련된 컴포넌트
Rigidbody : 중력의 영향을 받는 컴포넌트
Character Controller
XXX Collider : 충돌 처리를 위한 컴포넌트
XXX Cloth : 옷감 처리와 관련된 컴포넌트
XXX Joint : 강체 연결과 관련된 컴포넌트
Constant Force
Navigation : 길찾기와 관련된 Component
Audio : 사운드,배경음악, 효과음 등의 음악 처리와 관련된 Component
Rendering : 렌더링과 관련된 Component
Miscellaneous : Animation, Network View 관련 Component
Scripts : Game의 로직적인 부분을 담당하는 부분으로 program 코딩과 관련된 Component
사용 가능 언어
javascript
Boo
C#
Unity & Mono
유니티는 모노(Mono)라 불리는 마이크로소프트의 .NET프레임웍을 멀티플랫폼으로 확장시킨 오픈소스 프로젝트에 기반을 둠
javascript, Boo, C#은 스크립트 형태의 언어도만 사용. 즉, Android의 Dalvik(가상머신) 처럼 Mono(가상머신)에서 재컴파일이 이루어진다고 볼 수 있음
내부적으로 Unity3D Engine은 Native언어(C++)로 구성되어 있음
Script 개발 환경
MonoDeveloper
Visual Studio는 BreakPoint의 사용이 불가능하지만, MonoDeveloper의 경우는 사용 가능
Visual Studio
Component <- Behavior <- MonoBehavior
생성된 Script이름과 클래스이름은 일치해야 함
GameObject에 Script(Component) 삽입하여 사용
Overridable Functions
void Start() : 오직 한번만 실행되는 함수
void Update() : 매 프레임마다 실행되는 함수
Start/Update 함수는 C# Script 파일을 만들 때, Default로 주어지는 함수
두 함수 모두 사용하지 않아도 되는 가상 함수임
Debug.Log(".....") :
Unity Console 창에 문자를 출력하는 함수
Debugging 용으로 적절하게 사용할 수 있음
실습 : Console 창에 Start/Update가 실행될 때마다 Console 창에 메시지를 출력할 수 있도록 함
Cube 생성
Script 생성
Start : "Start ... " 출력될 수 있도록
Update 프레임 마다: "Update 1" ~ "Update 100" 까지 출력될 수 있도록
Unity Reference - http://unitykoreawiki.com/index.php?n=KrMain.Prefabs
하나의 애셋(Asset)으로 프로젝트 뷰에 저장되어 있는 재사용 가능한 GameObject
Prefab을 Drag & Drop 으로 GameObject의 생성을 가능하게 해 줌
또한 GameObject의 관리를 수월하게 해줌
하나의 Resource로 여러 개의 GameObject를 생성하는 만큼 메모리의 효율을 높일 수 있음
Prefab 생성 방법
Project View >> Create >> Prefab
Hierachy View에 존재하는 GameObject를 Drag하여 Project View로 가지고 오는 방법
Prefab의 특징
Prefab에 있는 속성을 바꾸게 되면, 기존에 이 Prefab을 사용하고 있는 모든 GameObject도 속성이 바뀌게 됨
Prefab Menu - GameObject의 Inspector에 위치한 메뉴
Select : GameObject와 연결된 Prefab을 표시해 줌
Apply : 현재 GameObject의 변경 사항을 Prefab에 적용
Revert : Prefab에 설정된 값으로 다시 되돌림
실습 : Prefab을 만들고 여러 GameObject를 생성(또한 조금씩 다른 모양으로 게임 오브젝트를 변형)
계층 구조를 이루는 두개의 GameObject 생성
Prefab으로 만들고 이를 통해 2개 정도의 GameObject를 더 만듬
Prefab에서 Rigidbody를 추가하고 GameObject들을 확인해 봄
Select / Apply / Revert 의 의미가 이해될 수 있도록 실습
[ Unity3D 0102]
[ 2D Mario Clone 설치 ]
사이트 : http://www.walkerboystudio.com/html/unity_training___free__.html
Unity로 project를 import할 때, "gumba_yoshi_animation_sprite_sheet.png" 파일 때문에 "Out of Memory" 에러가 발생할 수 있다. 이 파일을 다른 곳(프로젝트 밖)으로 빼내서 import하면 됨(그런 다음 Unity가 열린 이후에 폴더에 넣으면 됨)
java script로 되어 있어 있는 동영상을 C#으로 제작
[ 2D Mario Clone - Ch01 ]
Part 0: Introduction and Design Doc
만들려고 하는 마리오 게임의 디자인 문서에 대한 소개(캐릭터, 무기, 아이템 등)
Part 1: Setting up
이미 만들어진 Resource를 다운 받고, 진행하라고 하고 있음
Part 2: Getting Started
ambient light 조정 : Edit >> Render Settings >> Inspector >> Ambient Light
광원을 전체적으로 조절할 수 있음
받은 리소스를 확인하고 있는 내용
Sprite Prefab으로 구성되어 있음을 보여줌
Part 3: Character Animation
Scene 창에 캐릭터가 보이지 않았었는데, z로 바라보는 각도로 화면을 구성하니까 제대로 보인다.(y:위쪽, x:오른쪽)
이미 만들어진 Sprite 스크립트를 이용한 애니메이션에 대한 설명을 하고 있음(스프라이트 첫 컬럼 부분 실행)
aniSprite.js는 Unity 3 Tool Development 에서 자세하게 소개하고 있음
"player" 게임 오브젝트에 "aniSprite.js", "playerControls.js"가 콤포넌트로 들어가 있음을 볼 수 있음
이 두 파일을 C#코드로 바꿀 것
"aniSprite" C# 코드 -> 첨부파일 참고
C#코드로 바꿀 때 확인 사항
기본 C#코드들은 Monobehavior를 상속받는 자신만의 클래스를 생성함
void Start() / void Update가 기본적으로 생성됨
Start() : 게임 실행시 한번만 호출되는 함수
Update() : 매 프레임마다 생성되는 함수
보다 자세한 javasript와 C#의 차이점 및 스크립트에 관한 문서(Unity3D_Scripting_Overview.pdf)
[04:24] aniSprite 처리
playerControls C#코드 생성
<Source> playerControls0301
[06:50] Key 처리
Input.GetKey() : 키가 눌렸는지를 체크
<Source> playerControls0302