Study/Unity learn

Unity learn - Unity Essentials

hiheybye 2024. 4. 4. 22:18

 

Unity Essentials

 

Mission_Unity 시작하기

 

TUTORIAL_Unity 필수 과정 준비

  • 유니티 허브 설치
  • 유니티 허브 설치 및  유니티 설치, 'microgame' 체험

  # 'microgame' template은 유니티 2022에서 지원하지 않음. 유니티 2021버전을 설치 할 것

  • 추가 활동

마이크로 게임 중 FPS Microgame을 커스텀하는 단계 중 일부

  •   기존에 가지고 있는 에셋과 script를 활용하여, 간단한 수정 및 새로운 개체를 생성

  # 나중에 추가 진행 할 것. Unity Essentials 과정보다 선행된 스텝이기에 보류

 

TUTORIAL_Unity 필수 과정 시작

  • 동기 부여

 

TUTORIAL_Unity Hub 시작하기

  • 추가 활동

  Unity 에디터 둘러보기

  Project setup processes

  • 패키지 매니져로 패키지 임포트는 물론, 업데이트도 가능
  • 간단한 드래그 앤 드롭으로 다른 프로젝트의 에셋을 가져올 수 있음
  • view 툴바에 하늘, 안개 효과등을 토글하는 버튼이 있음. 
  • scene 작업 전, scene view의 배경을 설정하는 법, Edit/Preferences/color/Background

 

 

TUTORIAL_Unity 에디터에서 작업 시작

  • 간단한 3D cube object 생성
  • 간단한 시점 이동

 

TUTORIAL_패키지 관리자 시작하기

  • 패키지 관리자에 대한 설명 확인

 

 

Mission_유니티 살펴보기

TUTORIAL_실시간의 정의

  • '오프라인 렌더링'과 '실시간 렌더링'

  예전에 진짜 같은 CG영화의 렌더링 시간이 수일에서 수개월 걸렸다는 기사를 본적이 있다. 이는 오프라인 렌더링의 예시다. 오프라인 렌더링은 최종적으로 수정이 불가능한 완성품, 비인터렉티비 미디어에 사용되는 것이다. 이는, 비디오 게임처럼 사용자가 상호작용것에 사용 할 수 없다. 이를 위해 발전된 기술이 실시간 렌더링 기술이다.

 

 

TUTORIAL_Unity의 정의

  • 일종의 shell

  운영체제를 공부하면, shell이란 개념이 있다. 간단히 말하면, 컴퓨터가 얼마나 복잡하게 작동하건 컴퓨터 사용자는 운영체제가 제공하는 몇가지 명령어만 알면된다. 이와 비슷하게, 여러 프로그램언어도 일종의 shell이다. 명령어 하나하나가 얼마나 복잡하게 구현되었던 간에, 사용자는 프로그램언어에서 구현된 명령어의 사용 방법만 알면된다. 게임 엔진의 경우도 마찬가지다. 만약 직접 코드로 어떤 요소를 추가한다면, 이것을 등록하고, 수많은 요소에 연결해줘야 한다. 이런 과정과 게임 제작에 필요한 수많은 작업을 알 필요없이 우리는 게임엔진이 제공하는 기능만 알면 된다.

  • asset

  에셋은 기본적으로 게임 엔진이 아니라, DCC(디지털 콘텐츠 제작 툴에서 만든다.

 

TUTORIAL_Unity로 할 수 있는 작업

  • 3D, AR, VR 다양하다.

TUTORIAL_실시간 크리에이터란?

TUTORIAL_3D 씬에서 게임 오브젝트 작업

 

 

 

  • y-up 좌표계
  • cube(scale : y = 4)의 자식으로 sphere을 생성/초기 차원이 오브젝트의 부모기반으로 생성, 하지만 sphere의 scale y = 1, (임의로 이동한 후,)

 

  애초에 자식으로 생성했을 때, 이렇게 됨, 외부에서 생성한 뒤 자식으로 넣으면, 기존형태를 유지하는 값으로 스케일이 바뀜(부모의 ), 자식으로 넣은 후, 부모의 scale를 변경 시, 내부 모든 자식은 자신의 scale은 유지한 채로, 부모의 행태만큼 변형됨,

  자식을 부모 밖으로 빼내면, 형태를 유지하기 위해 부모의 scale과 내적한 값으로 변경됨,

 

 

 

 

 

 

 

TUTORIAL_프리미티브로 구조 만들기

  • 기본 도형인 cube와 부모,자식, 복사본 생성으로 새로운 오브젝트를 만들어 본다.

 

 

 

 

 

 

TUTORIAL_게임 오브젝트에 컴포넌트 추가

  • 기본 도형을 sphere를 위에서 만든 계단 구조에 생성하고, rigidbody component를 추가하여, 중력에 반응하도록 한다.
  • scene생성 시, 카메라는 플레이어 시점을 체험해 보도록 추가되어있는 것이다.

TUTORIAL_3D 게임 오브젝트에 효과 구현

  •  assets에 material를 만들고, 블럭무늬 png 파일로도 블럭무늬를 설정해 줄 수 있다(albedo 옆 작은 원), 또한 Tiling 파라미터로 그 밀도를 설정할 수 있다.
  • physic material 을 만들어 통해, 탄력, 마찰, 공기 마찰 특성를 만든다.
  • cube의 collider의 material에 생성한 physic material를 설정한다.
  • 바닥이 될 오브젝트를 적당히 추가해주고, 튀어오르는지 확인한다.

 

TUTORIAL_프리팹을 사용하여 게임 오브젝트 관리

  • 인스턴스를 assets에 드래그 앤 드랍하여 prefab 생성이 가능
  • prefab을 통해 인스턴스를 생성하면, 일종의 자식 관계같은 prefab의 인스턴스가 생성
  • 이 인스턴스를 수정하여, scene내 모든 prefab의 인스턴스와 prefab 자체를 수정하는 overrides 기능이 있다.
  • 수정된 인스턴스를 overrides 하지 않고, assets에 드래드 앤 드롭하면 prefab varient를 생성할 수 있다.
  • prefab varient는 일종의 부모 역할의 prefab의 요소와 파라미터를 가져오고, 변경된 부분만 고유로 가진다.

  부모 역할의 prefab에서 어떤 요소가 변경되거나 추가하면, prefab varient도 변경되거나 추가된다. 단, prefab varient가 고유하게 가진 요소는 유지된다.

 그 경우 해당 요소의 좌측에 파랗게 표시되고, 해당 파라미터을 우클릭하여 rebort하여 고유 요소을

해제할 수 있다.

  •  physic material이 적용된 prefab을 중첩시킨 prefab을 만들어 떨군다. 이 경우 각 shape는 떨어져 분리된다.

 

TUTORIAL_3D 에셋 받기

 

CGTrader - 3D Model Store

Join the fastest-growing 3D model marketplace today!

www.cgtrader.com

 

3D Models for Professionals :: TurboSquid

Buy 3D models for your project from our vast online catalog of cars, people, textures, architectural models and more.

www.turbosquid.com

  • unity editor 내에서 제한적이지만 3D 아트 및 환경을 제작할 수 있는 proBuilder 툴도 있다.

   유니티에서 packagemanager를 통해 설치 가능

TUTORIAL_과제: 용암이 끓어오르는 바닥

  • 여태 배운 걸, 사용해본다.

TUTORIAL_프로젝트 퍼블리시

  • 이전 작업물을 webgl로 퍼블리시하여 제출한다.

https://play.unity.com/mg/other/webgl-builds-399073

 

과제: 용암이 끓어오르는 바 - Unity Play

20240405

play.unity.com

 

TUTORIAL_스크립트 시작하기 

  • empty game object를 만들고, add component/ new script를 선택하고 HelloWorld로 명명한다. assets에 생성된 script 파일을 열어 IDE를 실행한다.
  • 클래스 선언단에 'MonoBehaviour' 라는 빌트인 클래스에서 상속되었다는 부분과 메서드 Start(), Update()를 가지는 HelloWorld 클래스가 생성되어있다.

  • Start()는 게임이 시작될때 한번 실행되고, Update()는 게임의 모든 프레임에서 실행된다고 한다.
  • Start() 메서드에 Debug.Log("Hello World"); 코드를 추가하고, 저장한다.

  • 유니티에서 scene을 플레이하고, ctrl + shift + c 버튼으로 콘솔 창을 열고 살펴본다.
  • 해당 코드를 update() 메서드로 옮기고, 다시 실행해본다.
  • string형 멤버 변수 를 추가하고, 해당 멤버 변수를 Debug.Log()에 넣어준 뒤 unity editor에서 확인한다.

  스크립트의 string 멤버에 넣을 값을 unity editor에서 설정해 줄 수 있다!

 

Start(), Update() ,Debug.Log("Hello World"); 

 

 

TUTORIAL_스크립트로 게임 오브젝트 변경

  • 새로운 스크립트를 생성해서, 구르는 공에 적용한다.
  • 해당 스크립트의 클래스에 Vector3형 멤버변수를 추가한다.(scaleChange, 카멜표기법)

  유니티 에디터에서 파라미터를 설정해 줄 수 있는 멤버는 카멜표기법으로 작성한다. 카멜표기법이 C# 멤버 변수를 작성할 때 사용하는 관례이기도 하고, 유니티 에디터에서 띄어쓰기가 되어 표기 된다. 카멜표기법이 아니여도 유니티 에디터에 정상적으로 추가되기는 하다.

  • update() 메서드에 transform.localScale += scaleChange; 를 작성한다. transform 은 게임 오브젝트의 Transform 컴포넌트를 의미한다.

  transform 컴포넌트의 파라미터의 접근 및 수정과정이 간단해서, Test1, Test2 스크립트를 만들어 Test1 의 public 멤버 변수를 Test2에서 접근 및 수정을 이와 같이 간단히 지원하는 지 확인해 보았다. tranform 컴포넌트처럼은 접근이 되지않았는데,  아마 tranform 컴포넌트는 다른 스크립트 요소가 아니라, 상속받아져 있는 속성인 것으로 보인다.

 

  • 위 과정을 transform.position += positionChange; (위치) tramsfor,.Rotate(rotateChange); (각도) 에대 반복한다.

  회전의 경우 Rotate 메서드를 사용한다는 점을 기억한다.

 

transform.localeScale, transform.position, transform.Rotate(), transform 컴포넌트는 간단히 접근 및 수정이 가능하다.

 

 

TUTORIAL_배경 음악 추가

  • Audio Source 컴포넌트를 사용하여 배경음을 추가한다.

 

TUTORIAL_실시간 3D 오디오 효과 제작

  • 거리에 따라 크기가 달라지는 3D 컴포넌트
  • 오브젝트의 Audio Source 컴포넌트에서 거리에 따른 사운드 크기 조절이 가능하다.

   audio source 컴포넌트

 

TUTORIAL_오디오 에셋 받기

  • 여러 소스의 오디오 에셋을 import한다.
  • 도플러 효과도 적용된다.

TUTORIAL_과제:움직이는 음향

  • 이 파트를 복습하며, 도플러 효과를 재현한다.

  Vertor3은 new로 할당한다고 해도 힙이 아니라 힙에 스택이 생성되는 값 타입이다. 어디까지나 Vertor3은 구조체이다.

https://play.unity.com/mg/other/webgl-builds-399202

 

과제: 움직이는 음향 - Unity Play

to solve long 90% loading at web, reduce all asset

play.unity.com

 

  

  처음에는 차 모델, 동물모델 등 추가 에셋을 다운 받아 사용했지만, web으로 돌리기에는 메모리를 많이 먹는지 90%에서 기다려도 실행되지 않았다. 심지어 튜토리얼 에셋도 버거운 것 같았다. 기존에 하던 튜토리얼 프로젝트의 튜토리얼 에셋 "

Unity Learn | Foundations of Real-Time Audio | URP"에서 필요한 방 한칸과 일인칭 및 조작 파일 "FirstPensonContoller" 과 Controller 인스턴스를 가져왔고, 해당 인스턴스를 사용하기 위해 필요한 cinemachine 패키지와 input system 패키지도 설치했다. 

  중간에 상당히 많이 에셋을 옮기면서 프로젝트를 다시 시도했고, 알고보니 간단한 것도 처음이라 많이 해맸다.

  script를 임포트하는 경우, 디렉토리를 맞춰주거나, 해당 prefab에서 script를 다시 연결해주면 된다. script를 수동으로 재매치할때는 script 옆의 작은 원을 누르면 간단히 할 수 있다.

  번외로 import한 model의 텍스처가 이상할때는 window/Rendering/Pender pipeline converter를 눌러 적당히 시도해보았다. 애니메이션이 있는 모델의 경우, 애니메이션 동작 별 순서를 설정하는 파일도 있다. 에디터에서 마인드맵처럼 수정할 수 있더라.

 

TUTORIAL_2D 씬에서 게임 오브젝트 사용

  • 2D 오브젝트는 3D공간을 측면에서 본것으로, 최종 사용자는 플랫 2D 뷰를 보게 되지만 실제 작업공간은 여전히 3D이다.
  • 2D 씬의 게임 오브젝트를 스프라이트라고 한다.
  • knob sprite를 만들고 변형해본다

  scale tool 과 react tool이 시각적으로 다르게 동작하였다. scale tool은 원을 좌우, 위아래로 변형시켰다면, react tool 은 표시하는 무늬의 크기 영역이였다. knob 및 circle sprite만의 차이인지는 불분명.

  • 색상을 변경해본다.

  3D와 달리, matarial이 아닌 직접 색상을 조정한다.

 

TUTORIAL_2D 게임 오브젝트에 컴포넌트 추가

  • ground sprite를 만들고 ground 및 circle sprite에 rigidbody 2D 컴포넌트에, collider 2D를 추가한다. ground sprite는 낙하하지 않도록 Constraints 를 확장해, x,y,z 축의 freeze position를 체크한다.

ground의 경우 box collider 2D, circle의 경우 circle collider 2D 컴포넌트를 추가한다.

ground의 z축 포지션이, 공과 맞지 않더라도, 공이 땅에 닿자 멈추었다.

 

 

TUTORIAL_2D 에셋 받기

  • 인트로 영상 시청

  maya, collab, Blender, scene fushion 같은 프로그램/툴이 존재한다.

 

  • 2D 타일맵 에디터 및 스프라이트 에디터 라는 것도 있더라.
  • 2D 에셋을 store에서 import한다.

TUTORIAL_과제: 스프라이트 파친코

  • 이 파트를 복습하며,  파친코를 재현한다
  • order in Layer 설정으로, 겹친 스프라이트의 중 어떤 스프라이트가 앞으로 나올지 정할 수 있다.

https://play.unity.com/mg/other/webgl-builds-399294

 

과제: 스프라이트 파친코 - Unity Play

use edge collider 2D

play.unity.com

  collier 의 경우, 어떤 형태에서 충격할지 정해져야 한다. edge collider 2D를 사용하면, 충돌모양을 설정 할 수 있다.

   

TUTORIAL_실시간 제작 사이클

  • 사전 제작은 계획, 파이프라인 설정, 초기 다자인 등 정식 제작 시작 전에 이루어지는 작업이다.
  • 사전 제작의 가장 중요한 목표는 손쉽게 방향을 바꿀 수 있을 때, 반복 작업을 통해 새로운 아이디어를 도입하는 것이다.
  • 정식 제작은 제품 및, 에셋를 제작하는 작업이다.
  • 기능 목록이 플레이 가능한 경험으로 구현된다. Feature creep 를 통해 사전 제작 이외의 추가 기능을 추가하여 한정된 시간 및 인력자원이 부족해지는 것을 방지해야 한다.

  버전 관리를 통해, 현재 예정된 버전에 기간을 정해 완성하고, 추가적인 기능은 다음 버전 일정에 추가하여 하는 식 진행하는 등의 방법이 있다. 여러 개발 주기는 정보처리 자격증을 공부 할 때, 이론적으로 접해보았고, 이전 연관굴비 프로젝트에서도 접해보았다.

  • 사후 제작은 제품이 완성된 후 테스트 및 버그 수정이 이루어 지는 작업이다. 제품이 공개적으로 출시되는 시점에 종료된다.
  • 운영은 수익화 및 업데이트를 통한 지속적인 유지 관리 이다.

 

TUTORIAL_실시간 크리에이터의 역할 및 커리어

  나의 길은 어디로 이어지는가...

 

Mission_유니티 학습

TUTORIAL_유명 Unity 크리에이터들이 Unity를 학습한 방법

  • 프로젝트의 범위를 적당히 정해야한다.
  • 인내심을 가져라
  • 성실해라

  엄마가 딸(아들)에게 - 양희은

 

TUTORIAL_학습 계획서 작성

  • 계획을 작성해본다.

TUTORIAL_Unity 크리에이터 커뮤니티

  • 포럼, unity 무료 에셋, 커뮤니티를 통해 학습하자
  • 네가지 핵심가치, 사용자 우선, 최고의 아이디어 채택, 하나가 되어 함께하기, 대담한 도전

TUTORIAL_게임 잼 살펴보기

  • 일정 기간 내에 처음부터 게임을 만들어 참여하는 콘테스트가 있다.

Itch.io, Indie Game Jams, Game Jams 서브레딧(subreddit), Ludum Dare, Global Game Jam 같은 사이트에 게임잼 콘테스트를 확인 할 수있다.

 

https://ldjam.com/

 

ldjam.com

 

r/gamejams

Game jams are accelerated game development events where participants make a game in a short amount of time - an hour to a day to a week or more. THEY ARE SO MUCH FUN.

www.reddit.com

 

Indie Game Jams

The most complete game jam calendar on the web.

www.indiegamejams.com

 

Game jams

Focuses on visual novels and story-based games. Starts in 2024-07-01T12:00:00Z · Lasts 64 days

itch.io

TUTORIAL_제작 여정 시작

  • 동기 부여스

 

https://www.credly.com/badges/1bff1904-1d0d-4431-b3b7-b9e73b3012a7/public_url

 

Unity Essentials Pathway was issued by Unity Technologies to 박기현.

Unity Essentials is the pathway for interested creators who are just getting started with Unity and real-time content creation. To achieve this pathway badge participants will create their first simple interactive experience with Unity. Learners who achiev

www.credly.com

 

'Study > Unity learn' 카테고리의 다른 글

Unity / Basic Design Patterns  (0) 2024.05.23
Unity learn - Make a flag move with shadergraph  (0) 2024.05.03
Unity learn - Creative Core  (0) 2024.04.29
Unity learn - Unity Junior Programmer  (0) 2024.04.09
Unity learn - FPS Microgame Customize  (0) 2024.04.03