본문 바로가기
게임/기술 : 개발엔진

유니티 공부일기

by 박워너비 2020. 8. 6.

비슷한 글 더 찾아보기

 

개발엔진 글 찾기

개발엔진 서랍에 있는 글들을 찾기 쉽게 모아놓는다. 1. 알만툴 알만툴 공부 도움자료 2. 유니티 0. 유니티 공부 도움자료 1. 설치와 화면 구성이해 2. 게임 오브젝트와 텍스쳐링 3. 스크립트 작성 �

bakwannabe.tistory.com

 

- 공부에 사용한 교재

왼쪽->오른쪽 순으로 공부합니다!

 

1. 유니티 교과서 개정 3판

 

1장~2장 초반부분은 기존에 내가 인터넷에 검색하면서 블로그에 작성한

 

유니티 엔진 첫발떼기 ; 설치와 화면구성 이해

~유니티 엔진 설치하기~ 먼저 유니티 프로그램을 컴퓨터에 설치해보자. 구글에 유니티 다운로드라고만 검색해도 쉽게 나오는 것을 알 수 있다. https://unity3d.com/kr/get-unity/download Download Unity! Unity..

bakwannabe.tistory.com

 

 

유니티 두번째 발 딛기 ; 소품과 배우를 세우고 꾸며주기

~ gameObject 소품,배우놓기 ~ 하이에라키창의 +그림을 누르면 위 처럼 여러 소품들(게임오브젝트라고 부른다)을 씬에 놓을 수 있다. 조명이나 카메라를 추가로 놓는 것도 가능하고 위치만 존재하는

bakwannabe.tistory.com

 

 

유니티 세번째 걸음 ; 대본쓰기

~스크립트 만들기~ 세트장과 배우, 소품이 준비됐으면 이제 대본을 써야한다. 프로그램에서 대본이란 스크립트, 즉 코드를 써서 저장하는 것을 뜻한다. 여기서부터가 사실 진짜 유니티를 사용한

bakwannabe.tistory.com

이 글의 내용과 상당부분 겹쳐서 쉽게 읽혔다.

 



C# 스크립트 기초 보충 (2-6부터)

 

2-6 배열의 What Why How?

 

What? 변수 여러개를 묶어서 한번에 처리하는 도구

 

Why? 굉장히 많은 변수를 선언해야하는 경우

배열로 묶어서 관리

 

How? 자료형 배열이름 [요소 수];

*요소 수는 0부터 출발하므로 3개의 변수를 다뤄야하는 경우 [ ]안에는 3을 넣지만

1번째 변수를 다루고 싶을 경우 [0]으로,

2번째 변수를 다루고싶을 경우 [1]로 호출한다.

 

**배열은 int array [5]; 으로 선언해준 뒤

array[0]=3; 처럼 일일히 넣어주는 것도 가능하고

 

수학시간에 배운 집합의 정의처럼

int array [ ] = {3, 34, 65,23,42};

이렇게 한꺼번에 지정해주는 것 또한 가능하다.

 


2-7 메서드(함수)의 What Why How?

 

What? 특정 입력값을 받아 지정된 식대로

계산해 특정 값을 출력하는 도구

 

Why? Start,Update 함수만으로는

조각이 너무 비대해질 때 작업을 분리하기 위해서

 

How?

1. 함수 선언

자료형 함수이름 (자료형 인수) { 처리내용; return 반환값; }

*입력값(인수)는 여러개여도 되지만 출력값(반환값)은 하나다.

** 인수와 반환값은 생략될 수 있다.

 

2. 함수 호출

함수이름( ); 

*인수가 있는 경우에는 ( )안에 인수를 밝혀줘야한다.

 


2-8 클래스의 What Why How?

 

What? 변수와 함수를 묶어둔 것.

 

Why? 하나의 시스템으로 기능하는데

연관이 있는 변수와 함수를

한꺼번에 묶어서 관리하려고

 

How?

1. 클래스 선언

접근 수식자 Class 클래스이름 { 멤버 변수 멤버 메서드 }

*접근 수식자는 SnS게시글의 공개,비공개 개념으로 

 

Public(공용)을 쓸 경우 다른 클래스에서도

해당 클래스의 멤버를 사용할 수 있게 허용하게되며

 

Protected(보호됨)을 쓸 경우 해당 클래스와 해당 클래스에

딸린 서브클래스에서만 멤버를 쓸 수 있게되고

 

Private(개인용)을 쓸 경우 다른 클래스에서

해당 클래스의 멤버에 접근하지 못하게된다.

2. 클래스 변수 선언

*인스턴스 연결과 같은 위치에서 이루어진다.

클래스이름 변수이름;

 

3. 인스턴스 대입(연결)

*인스턴스는 클래스가 호출되는 함수 안에서 같이 대입돼야함.

 

인스턴스는

클래스이름 변수 = new 클래스이름( );

형태로 생성하고 클래스에 대입할 수 있다.

 

*변수에 특정 값이 들어가듯 클래스 변수에도

무언가가 들어가게 되는데 클래스 변수에 들어가는 것을

인스턴스(instance)라고 한다.

 

영단어의 뜻은 사례,경우라는 뜻인데

유니티에서는 해당 클래스가 연결되는 실체를 뜻한다.

 

(플레이어에게 체력,마나통과 공격 함수가 연결된 

클래스를 붙이는 경우 유니티에서 만든 플레이어

객체가 인스턴스가 된다.)

4. 클래스 호출

클래스 변수.멤버메서드or멤버변수

*특정 함수 안에서 멤버 변수를 쓰는 경우

다른 변수와 구분하기위해

This. 을 맨 앞에 붙여줘야한다.

 

+@

객체지향의 상속 개념에 대해서

 

상속(프로그래밍) - 나무위키

한 번 파생받은 클래스에서 또 파생되는 경우, 파생 클래스 바로 위의 클래스를 직접 클래스(direct class), 그 위의 클래스를 간접(indrect) 클래스라고 칭한다. 어느정도 규모가 되는 실 프로젝트에��

namu.wiki

*클래스 이름 뒤에 : Monobehavier 가붙는 경우가 있는데

: 영단어 형식이 상속 방식이다.


2-9 Vector 클래스의 What Why How?

 

What? 플레이어의 위치를 좌표로 나타내는 클래스

 

Why? 위치 기능을 쉽고 빠르게 사용.

 

How? 몇 차원이냐에따라 Vector2 Vector3으로

나뉜다. float 형의 X,Y X,Y,Z 변수를 사용한다.

 


[실습]

룰렛을 만들어보자!

 

룰렛.vol1.egg
10.00MB
룰렛.vol2.egg
3.51MB

 

책에서는 모바일 버전으로,

한번만 터치해도 돌아갔다가 멈추는 방식으로

개발하는 모습인데

 

리소스 파일을 따로 못 찾아서 

포토샵으로 내가 만들었고 유니티로 따라 만들어봤는데

돌림판의 바늘 부분을 내가 잘못 만들어서

 

책의 돌림판은 돌림판이 돌아가고 바늘은 고정된 형태지만

나는 시계바늘같은 형태로 만들었기때문에

 

돌림판은 가만있고 바늘이 돌아가는 형태로

스크립트를 작성하게됐다.

 

그냥 스크립트를 바늘에만

적용해주면 되는거라서 큰 문제는 없었지만

 

바늘이 점점 느려지다가 멈추는 행동을 작성하는 과정에서

회전속도 변수를 float형으로 작성했는데도 불구하고

double형으로 작성된 변수라 안된다는 오류메시지가뜨는 바람에

 

 

기존의 한번 누르면 돌다가 알아서 멈추는 방식에서,

꾹누르고 있는 동안에는 돌아가고,

떼면 멈추는 방식으로 바꾸게 됐다..

 

그마저도 책에서는 ios로 설명하는데

내 폰은 안드로이드라서 안드로이드로 빌드하는 도중에

계속된 오류메시지로 일단은 컴퓨터로 빌드했다..

 

너무 피곤해서 나머지는 다음번에 다시 만져보면서

수정해봐야겠다...