SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
Unity3D 초급스터디
3회차 `15. 10. 10.
대학연합게임제작동아리 브릿지
스터디 일정 및 커리큘럼
• 9월 12일 : 유니티 소개 및 에디터 조작법
• 9월 19일 : Sprite, Animation, Physics 기초
• 10월 10일 : Unity UI, GameManager
• 10월 24일 : Animation Controller, Timer
• 10월 31일 : 슈팅 게임 개발
• 11월 7일 : 2D 게임 완성(마녀이야기)
대학연합게임제작동아리 브릿지
지난 시간
• 프로그래밍 시스템
• 스프라이트, 2D 애니메이션 기초
• 물리시스템
• 스테이지 관리
• Blinkz 실습
대학연합게임제작동아리 브릿지
uGUI
• 유니티의 새로운(?) GUI 시스템

- 새롭다고 하기에는...

- 4.6 이상 버전부터 사용가능
• 자세한 내용은

- http://www.slideshare.net/gukhwanji/46-gui
대학연합게임제작동아리 브릿지
Canvas
• 모든 UI element를 포함하는 게임오브젝트. Canvas라는 컴포넌
트를 가진다.
• 씬 뷰에서 직사각형 형태

- 게임 뷰에서 보이는 영역
• Screen Space : 화면을 기준으로 UI 그림

World Space : 필드에 세팅 가능. 오브젝트 영향 받음
• Canvas Scaler

- Contant Pixel Size : 스크린 사이즈를 바탕으로

- Scale with Screen Size : 스크린 사이즈를 지정
대학연합게임제작동아리 브릿지
Rect Transform
• UI 성분들을 위한 새로운 트랜스폼 컴포넌트

- Pivot : 회전이나 이동 시 쓰이는 기준점

- Stretch : 화면의 사이즈에 따라 변경될 기준점
• http://docs.unity3d.com/Manual/UIBasicLayout.html
대학연합게임제작동아리 브릿지
Text
• 흔히 알고 있는 Label
• 폰트, 사이즈 등 여러 정보 수정
가능
• Vertical, Horizontal Overflow
주의
대학연합게임제작동아리 브릿지
Image
• 스프라이트의 기능을 담당하는 UI Element
• Image type

- Simple : 기본

- Sliced : 3x3으로 분할. 가장자리 부분이 깨지지 않게

- Tiled : 스프라이트가 반복

- Filled : 부분적으로 스프라이트 보여줌
대학연합게임제작동아리 브릿지
Interaction Components
• Button

버튼이 눌릴 때 이벤트 처리
• Toggle

True/False로 이벤트 처리
• Slider

OnValueChanged
대학연합게임제작동아리 브릿지
Depth
• 유니티 기존 GUI (4.6이전 버전)

- Z축 값 조절
• NGUI

- Depth넘버로 조절
• uGUI

- 하이어라키 뷰 순서조절
대학연합게임제작동아리 브릿지
Sprite Packer
• Atlas 생성

- 드로우콜을 줄이기위해
• 드로우콜?

- 오브젝트를 화면에 그리
기 위해서 엔진이 그래픽
API에 그리기를 요청하는
횟 수
대학연합게임제작동아리 브릿지
실습(1)
대학연합게임제작동아리 브릿지
• card1 ~ card12 이미지를 스프라이트 패커로 묶기

- packingTag 지정
실습(2)
대학연합게임제작동아리 브릿지
• UI 이미지, 버튼을 활용해서 다음과 같은 화면 구성

- canvas size : 800x600

- image size : 80x80
Game Manager
대학연합게임제작동아리 브릿지
• 카드 뒤집기 게임
• GameManager 스크립트를 만들자.

- UI 게임오브젝트 (카드 24장)

- 카드 앞면 스프라이트 12개, 뒷면 1개

- 현재 상태 관리

- 맞춘 카드 갯수

- 첫번째 선택한 카드, 두번째 선택한 카드
오브젝트 참조
대학연합게임제작동아리 브릿지
• public으로 선언 후 인스펙터창에 하나씩 집어넣는 방법
• 스크립트로 불러오는 방법
• 배열로 불러오자!

public GameObject[] cards1 = new GameObject[24];
• List, ArrayList

using System.Collections.Generic;

추가, 수정, 삭제 용이
Generic
대학연합게임제작동아리 브릿지
• 클래스 내부에 사용할 데이터 타입을 외부에서 지정하는 기
법 Java의 Generic, C++의 Templete
• List<GameObject> cards2 = new List<GameObject>();
오브젝트 참조
• 캔버스 아래에 “cards”라는 빈 오브젝트 생성

- 나머지 카드들을 모두 “cards”의 자식으로 집어넣음
• // 이름이 “cards”인 오브젝트를 검색

GameObject o = GameObject.Find(“cards”);

// o의 자식 오브젝트들을 모두 cards2에 추가

for(int i=0; i<o.transform.childCount; i++){

GameObject card = o.transform.getChild(i).gameObject;

cards2.Add(card);

}
대학연합게임제작동아리 브릿지
리소스 참조
• 마찬가지로 public으로 선언뒤 인스펙터 창에서 입력
• 스크립트로 불러오는 방법

Asset/Resources/ “경로이름”
• ex)

Resources.Load(“cards1”, typeof(Sprite)) as Sprite
대학연합게임제작동아리 브릿지
리소스 참조
• backSprite = Resources.Load("back1", typeof(Sprite)) as
Sprite;
• for(int i=0; i<12; i++){

string fileName = string.Format(“card{0}”,i+1);

Sprite sprite = Resources.Load(fileName,
typeof(Sprite) as Sprite;

sprites.Add(sprite);



//sprites.Add(Resources.Load(string.Format("card{0}",i+1), typeof(Sprite)) as Sprite);

}
대학연합게임제작동아리 브릿지
버튼 이벤트 등록
• public void CardClick(GameObject o){

//일단 만들어놓고!

}
• 오브젝트마다 하나씩 집어넣어보자
대학연합게임제작동아리 브릿지
버튼 이벤트 스크립트로 등록
• 귀찮으면 스크립트로.. 근데 좀 복잡함 ㅠ
• 여러 매개변수 전달, 반복 작업이 간편화
• System.Action (Action Delegate)

- C# 문법… 알면 좋으나 일단 그냥 패쓰!!

- https://mmxbong9.wordpress.com/2014/09/02/c-action-
과-delegate-람다식-action-func-event/
대학연합게임제작동아리 브릿지
버튼 이벤트 스크립트로 등록
• 귀찮으면 스크립트로.. 근데 좀 복잡함 ㅠ
• 여러 매개변수 전달, 반복 작업이 간편화
• System.Action (Action Delegate)

- C# 문법… 알면 좋으나 일단 그냥 패쓰!!

- https://mmxbong9.wordpress.com/2014/09/02/c-action-
과-delegate-람다식-action-func-event/
대학연합게임제작동아리 브릿지
스프라이트를 바꿔보자
• GetComponent : 인스펙터 부의 컴포넌트를 스크립트로 가
져옴
• UI 컴포넌트를 사용하려면 using UnityEngine.UI;
• void CardClick(GameObject o){

o.GetComponent<Image>().sprite = sprites[0];

}
대학연합게임제작동아리 브릿지
Card 클래스
• Sprite front // 앞면 스프라이트
• Sprite back // 뒷면 스프라이트
• bool isFront // 앞인가?
• void Awake(){

front = null; back = null; isFront = false;

}
• GameManager에서 한꺼번에 만들어주자!!!
대학연합게임제작동아리 브릿지
Card 클래스
• public void Setup(Sprite front, Sprite back){

this.front = front;

this.back = back;

isFront = false;

}
• public void CardOpen(){

if(isFront){

this.GetComponent<Image>().sprite = back;

}else{

this.GetComponent<Image>().sprite = front;

}

isFront = !isFront;

}
대학연합게임제작동아리 브릿지
Game Manager 클래스
• Start()에 아래 코드 추가

- card오브젝트에 Card컴포넌트를 추가하고, 카드 뒷면 이
미지랑 앞면이미지(랜덤) 추가
• card.AddComponent<Card>().Setup(backSprite,

sprites[Random.Range (0,12)]);
• CardClick 함수 변경

void CardClick(GameObject o){

o.GetComponent<Card>().CardOpen();

}
대학연합게임제작동아리 브릿지
(실습3) 여기까지 구현!
• 클릭하면 미리 생성된 랜덤 앞면 보여주기
• 다시 클릭하면 뒷면 됨
대학연합게임제작동아리 브릿지
카드 Shuffle
• 미리 나열된 배열을 하나 만듬

[0, 0, 1, 1, 2, 2, 3, 3, ... , 10, 10, 11, 11] (size : 24)
• 위의 배열의 순서를 섞어 버린다!
대학연합게임제작동아리 브릿지
카드 Shuffle
대학연합게임제작동아리 브릿지
0 1 2 3 4 5
기준 나머지 중 랜덤으로 하나 선택
4 1 2 3 0 5
자리 교환!
카드 Shuffle
대학연합게임제작동아리 브릿지
4 1 2 3 0 5
기준 나머지 중 랜덤으로 하나 선택
4 5 2 3 0 1
자리 교환!
카드 Shuffle
대학연합게임제작동아리 브릿지
4 5 2 3 0 1
기준 나머지 중 랜덤으로 하나 선택
4 5 3 2 0 1
자리 교환!

반복!
카드 Shuffle
대학연합게임제작동아리 브릿지
• 이렇게 섞임

[10, 1, 3, 2, 4, 2, ... , 1, 11, 5]
• int[] index = new int[24];

for(int i=0; i<24; i++){

index[i] = i/2;

}

for(int i=0; i<23; i++){

int randNum = Random.Range(i+1, 24);

int temp = index[randNum];

index[randNum] = index[i];

index[i] = temp;

}
(실습4) Shuffle 적용하기
대학연합게임제작동아리 브릿지
• 앞에서 작성한 코드에 Shuffle 알고리즘을 추가
• 모든 카드가 한 쌍씩 세트가 되도록
Invoke
• Invoke(“함수이름”, 실행할 시간)
• ex) Invoke(“CardOpen”, 1f)

CardOpen함수를 1초뒤에 실행하라.
대학연합게임제작동아리 브릿지
Button
• o.GetComponent<Button>().interactable = false;

- 버튼이 비활성화 됨.
• o.GetComponent<Button>().interactable = true;

- 버튼이 활성화 됨.
대학연합게임제작동아리 브릿지
(실습5) 1초동안 버튼 비활성화
• 카드 2개를 오픈 하면 1초간 모든 버튼이 비활성화 되도록
함.
• 1초가 지나면 (정답을 제외한) 모든 버튼 활성화
대학연합게임제작동아리 브릿지
[과제] 카드뒤집기 게임 완성
• 게임 시작하면 5초간 카드의 앞면을 보여주고 다시 뒤집힘

- Invoke활용
• 카드를 차례대로 선택. 두번째 카드가 선택되면 1초간 보여
주고 정답 판별

- 정답 : +500점

- 오답 : -100점
• 점수는 UI의 Text를 활용하여 화면에 배치
대학연합게임제작동아리 브릿지
[과제] 카드뒤집기 게임 완성
• 게임 클리어 : 모든 카드를 찾았을 때
• 게임 오버 : -1000점이되었을때
• 5초 뒤 게임 재시작.
대학연합게임제작동아리 브릿지

Contenu connexe

Tendances

디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해Je Lyoung Kim
 
120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseerChan-hyun Park
 
유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료Je Lyoung Kim
 
유니티 고급 과정 -1-
유니티 고급 과정 -1-유니티 고급 과정 -1-
유니티 고급 과정 -1-Kiyoung Moon
 
Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효
Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효
Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효Sunhyo Jung
 
Port polio게임 소개
Port polio게임 소개Port polio게임 소개
Port polio게임 소개Seo YoungHoon
 
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템WooSung Jeon
 
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011devCAT Studio, NEXON
 
Port polio게임소개
Port polio게임소개Port polio게임소개
Port polio게임소개Seo YoungHoon
 
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들Jubok Kim
 
[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술MinGeun Park
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & TrickMinGeun Park
 
A Study on 2D Skeletal structure for efficient 2D game development with Spine
A Study on 2D Skeletal structure for efficient 2D game development with SpineA Study on 2D Skeletal structure for efficient 2D game development with Spine
A Study on 2D Skeletal structure for efficient 2D game development with SpineHyunwoo Kim
 
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터][NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]SeungWon Lee
 
Make a shooting game using unity
Make a shooting game using unityMake a shooting game using unity
Make a shooting game using unityHyunwoo Kim
 
introduce unity3D and playmaker basic
introduce unity3D and playmaker basicintroduce unity3D and playmaker basic
introduce unity3D and playmaker basicquxn6
 
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발MinGeun Park
 
Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나Brandon Chung
 

Tendances (20)

디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해
 
120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer
 
유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료
 
유니티 고급 과정 -1-
유니티 고급 과정 -1-유니티 고급 과정 -1-
유니티 고급 과정 -1-
 
Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효
Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효
Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효
 
Port polio게임 소개
Port polio게임 소개Port polio게임 소개
Port polio게임 소개
 
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
 
Unity소개
Unity소개Unity소개
Unity소개
 
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
 
Port polio게임소개
Port polio게임소개Port polio게임소개
Port polio게임소개
 
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들
 
[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick
 
A Study on 2D Skeletal structure for efficient 2D game development with Spine
A Study on 2D Skeletal structure for efficient 2D game development with SpineA Study on 2D Skeletal structure for efficient 2D game development with Spine
A Study on 2D Skeletal structure for efficient 2D game development with Spine
 
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터][NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
 
Make a shooting game using unity
Make a shooting game using unityMake a shooting game using unity
Make a shooting game using unity
 
introduce unity3D and playmaker basic
introduce unity3D and playmaker basicintroduce unity3D and playmaker basic
introduce unity3D and playmaker basic
 
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
 
Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나
 
Momentum3D
Momentum3DMomentum3D
Momentum3D
 

Similaire à 브릿지 Unity3D 기초 스터디 3회

[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인승명 양
 
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가Hwanhee Kim
 
Flappy bird 만들기 세미나 자료(유니티 4.3버전)
Flappy bird 만들기 세미나 자료(유니티 4.3버전)Flappy bird 만들기 세미나 자료(유니티 4.3버전)
Flappy bird 만들기 세미나 자료(유니티 4.3버전)Changwon National University
 
Fraud Detection - online game 과 결제를 중심으로
Fraud Detection - online game 과 결제를 중심으로Fraud Detection - online game 과 결제를 중심으로
Fraud Detection - online game 과 결제를 중심으로NAVER Engineering
 
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정강 민우
 
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요? (2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요? 내훈 정
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)khuhacker
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)MinGeun Park
 
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들대원 김
 
SVVR아카데미 4월과정 소개_0317
SVVR아카데미 4월과정 소개_0317SVVR아카데미 4월과정 소개_0317
SVVR아카데미 4월과정 소개_0317Unitylearningcenter
 
데이터분석 기반 게임봇과 작업장 탐지 (NDC 2017)
데이터분석 기반 게임봇과 작업장 탐지 (NDC 2017)데이터분석 기반 게임봇과 작업장 탐지 (NDC 2017)
데이터분석 기반 게임봇과 작업장 탐지 (NDC 2017)Korea University
 
Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...
Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...
Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...ssuser4b1f48
 
NDC2013 - 심리학으로 다시 보는 게임 디자인
NDC2013 - 심리학으로 다시 보는 게임 디자인NDC2013 - 심리학으로 다시 보는 게임 디자인
NDC2013 - 심리학으로 다시 보는 게임 디자인Jubok Kim
 
Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발
Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발
Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발Hyukjae Jang
 
유니티로 flappy brid 만들기(Unity 5.1)
유니티로 flappy brid 만들기(Unity 5.1)유니티로 flappy brid 만들기(Unity 5.1)
유니티로 flappy brid 만들기(Unity 5.1)Changwon National University
 
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서영준 박
 
June report in korean
June report in koreanJune report in korean
June report in koreannao takatoshi
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10Ryan Park
 

Similaire à 브릿지 Unity3D 기초 스터디 3회 (20)

[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
 
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
 
Flappy bird 만들기 세미나 자료(유니티 4.3버전)
Flappy bird 만들기 세미나 자료(유니티 4.3버전)Flappy bird 만들기 세미나 자료(유니티 4.3버전)
Flappy bird 만들기 세미나 자료(유니티 4.3버전)
 
Fraud Detection - online game 과 결제를 중심으로
Fraud Detection - online game 과 결제를 중심으로Fraud Detection - online game 과 결제를 중심으로
Fraud Detection - online game 과 결제를 중심으로
 
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
 
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요? (2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
 
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들
 
SVVR아카데미 4월과정 소개_0317
SVVR아카데미 4월과정 소개_0317SVVR아카데미 4월과정 소개_0317
SVVR아카데미 4월과정 소개_0317
 
데이터분석 기반 게임봇과 작업장 탐지 (NDC 2017)
데이터분석 기반 게임봇과 작업장 탐지 (NDC 2017)데이터분석 기반 게임봇과 작업장 탐지 (NDC 2017)
데이터분석 기반 게임봇과 작업장 탐지 (NDC 2017)
 
Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...
Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...
Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...
 
NDC2013 - 심리학으로 다시 보는 게임 디자인
NDC2013 - 심리학으로 다시 보는 게임 디자인NDC2013 - 심리학으로 다시 보는 게임 디자인
NDC2013 - 심리학으로 다시 보는 게임 디자인
 
Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발
Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발
Google Mobile Vision과 OpenCV로 card.io를 확장한 범용 카드번호인식 개발
 
유니티로 flappy brid 만들기(Unity 5.1)
유니티로 flappy brid 만들기(Unity 5.1)유니티로 flappy brid 만들기(Unity 5.1)
유니티로 flappy brid 만들기(Unity 5.1)
 
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
 
June report in korean
June report in koreanJune report in korean
June report in korean
 
Unity시작하기
Unity시작하기Unity시작하기
Unity시작하기
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
 

브릿지 Unity3D 기초 스터디 3회

  • 1. Unity3D 초급스터디 3회차 `15. 10. 10. 대학연합게임제작동아리 브릿지
  • 2. 스터디 일정 및 커리큘럼 • 9월 12일 : 유니티 소개 및 에디터 조작법 • 9월 19일 : Sprite, Animation, Physics 기초 • 10월 10일 : Unity UI, GameManager • 10월 24일 : Animation Controller, Timer • 10월 31일 : 슈팅 게임 개발 • 11월 7일 : 2D 게임 완성(마녀이야기) 대학연합게임제작동아리 브릿지
  • 3. 지난 시간 • 프로그래밍 시스템 • 스프라이트, 2D 애니메이션 기초 • 물리시스템 • 스테이지 관리 • Blinkz 실습 대학연합게임제작동아리 브릿지
  • 4. uGUI • 유니티의 새로운(?) GUI 시스템
 - 새롭다고 하기에는...
 - 4.6 이상 버전부터 사용가능 • 자세한 내용은
 - http://www.slideshare.net/gukhwanji/46-gui 대학연합게임제작동아리 브릿지
  • 5. Canvas • 모든 UI element를 포함하는 게임오브젝트. Canvas라는 컴포넌 트를 가진다. • 씬 뷰에서 직사각형 형태
 - 게임 뷰에서 보이는 영역 • Screen Space : 화면을 기준으로 UI 그림
 World Space : 필드에 세팅 가능. 오브젝트 영향 받음 • Canvas Scaler
 - Contant Pixel Size : 스크린 사이즈를 바탕으로
 - Scale with Screen Size : 스크린 사이즈를 지정 대학연합게임제작동아리 브릿지
  • 6. Rect Transform • UI 성분들을 위한 새로운 트랜스폼 컴포넌트
 - Pivot : 회전이나 이동 시 쓰이는 기준점
 - Stretch : 화면의 사이즈에 따라 변경될 기준점 • http://docs.unity3d.com/Manual/UIBasicLayout.html 대학연합게임제작동아리 브릿지
  • 7. Text • 흔히 알고 있는 Label • 폰트, 사이즈 등 여러 정보 수정 가능 • Vertical, Horizontal Overflow 주의 대학연합게임제작동아리 브릿지
  • 8. Image • 스프라이트의 기능을 담당하는 UI Element • Image type
 - Simple : 기본
 - Sliced : 3x3으로 분할. 가장자리 부분이 깨지지 않게
 - Tiled : 스프라이트가 반복
 - Filled : 부분적으로 스프라이트 보여줌 대학연합게임제작동아리 브릿지
  • 9. Interaction Components • Button
 버튼이 눌릴 때 이벤트 처리 • Toggle
 True/False로 이벤트 처리 • Slider
 OnValueChanged 대학연합게임제작동아리 브릿지
  • 10. Depth • 유니티 기존 GUI (4.6이전 버전)
 - Z축 값 조절 • NGUI
 - Depth넘버로 조절 • uGUI
 - 하이어라키 뷰 순서조절 대학연합게임제작동아리 브릿지
  • 11. Sprite Packer • Atlas 생성
 - 드로우콜을 줄이기위해 • 드로우콜?
 - 오브젝트를 화면에 그리 기 위해서 엔진이 그래픽 API에 그리기를 요청하는 횟 수 대학연합게임제작동아리 브릿지
  • 12. 실습(1) 대학연합게임제작동아리 브릿지 • card1 ~ card12 이미지를 스프라이트 패커로 묶기
 - packingTag 지정
  • 13. 실습(2) 대학연합게임제작동아리 브릿지 • UI 이미지, 버튼을 활용해서 다음과 같은 화면 구성
 - canvas size : 800x600
 - image size : 80x80
  • 14. Game Manager 대학연합게임제작동아리 브릿지 • 카드 뒤집기 게임 • GameManager 스크립트를 만들자.
 - UI 게임오브젝트 (카드 24장)
 - 카드 앞면 스프라이트 12개, 뒷면 1개
 - 현재 상태 관리
 - 맞춘 카드 갯수
 - 첫번째 선택한 카드, 두번째 선택한 카드
  • 15. 오브젝트 참조 대학연합게임제작동아리 브릿지 • public으로 선언 후 인스펙터창에 하나씩 집어넣는 방법 • 스크립트로 불러오는 방법 • 배열로 불러오자!
 public GameObject[] cards1 = new GameObject[24]; • List, ArrayList
 using System.Collections.Generic;
 추가, 수정, 삭제 용이
  • 16. Generic 대학연합게임제작동아리 브릿지 • 클래스 내부에 사용할 데이터 타입을 외부에서 지정하는 기 법 Java의 Generic, C++의 Templete • List<GameObject> cards2 = new List<GameObject>();
  • 17. 오브젝트 참조 • 캔버스 아래에 “cards”라는 빈 오브젝트 생성
 - 나머지 카드들을 모두 “cards”의 자식으로 집어넣음 • // 이름이 “cards”인 오브젝트를 검색
 GameObject o = GameObject.Find(“cards”);
 // o의 자식 오브젝트들을 모두 cards2에 추가
 for(int i=0; i<o.transform.childCount; i++){
 GameObject card = o.transform.getChild(i).gameObject;
 cards2.Add(card);
 } 대학연합게임제작동아리 브릿지
  • 18. 리소스 참조 • 마찬가지로 public으로 선언뒤 인스펙터 창에서 입력 • 스크립트로 불러오는 방법
 Asset/Resources/ “경로이름” • ex)
 Resources.Load(“cards1”, typeof(Sprite)) as Sprite 대학연합게임제작동아리 브릿지
  • 19. 리소스 참조 • backSprite = Resources.Load("back1", typeof(Sprite)) as Sprite; • for(int i=0; i<12; i++){
 string fileName = string.Format(“card{0}”,i+1);
 Sprite sprite = Resources.Load(fileName, typeof(Sprite) as Sprite;
 sprites.Add(sprite);
 
 //sprites.Add(Resources.Load(string.Format("card{0}",i+1), typeof(Sprite)) as Sprite);
 } 대학연합게임제작동아리 브릿지
  • 20. 버튼 이벤트 등록 • public void CardClick(GameObject o){
 //일단 만들어놓고!
 } • 오브젝트마다 하나씩 집어넣어보자 대학연합게임제작동아리 브릿지
  • 21. 버튼 이벤트 스크립트로 등록 • 귀찮으면 스크립트로.. 근데 좀 복잡함 ㅠ • 여러 매개변수 전달, 반복 작업이 간편화 • System.Action (Action Delegate)
 - C# 문법… 알면 좋으나 일단 그냥 패쓰!!
 - https://mmxbong9.wordpress.com/2014/09/02/c-action- 과-delegate-람다식-action-func-event/ 대학연합게임제작동아리 브릿지
  • 22. 버튼 이벤트 스크립트로 등록 • 귀찮으면 스크립트로.. 근데 좀 복잡함 ㅠ • 여러 매개변수 전달, 반복 작업이 간편화 • System.Action (Action Delegate)
 - C# 문법… 알면 좋으나 일단 그냥 패쓰!!
 - https://mmxbong9.wordpress.com/2014/09/02/c-action- 과-delegate-람다식-action-func-event/ 대학연합게임제작동아리 브릿지
  • 23. 스프라이트를 바꿔보자 • GetComponent : 인스펙터 부의 컴포넌트를 스크립트로 가 져옴 • UI 컴포넌트를 사용하려면 using UnityEngine.UI; • void CardClick(GameObject o){
 o.GetComponent<Image>().sprite = sprites[0];
 } 대학연합게임제작동아리 브릿지
  • 24. Card 클래스 • Sprite front // 앞면 스프라이트 • Sprite back // 뒷면 스프라이트 • bool isFront // 앞인가? • void Awake(){
 front = null; back = null; isFront = false;
 } • GameManager에서 한꺼번에 만들어주자!!! 대학연합게임제작동아리 브릿지
  • 25. Card 클래스 • public void Setup(Sprite front, Sprite back){
 this.front = front;
 this.back = back;
 isFront = false;
 } • public void CardOpen(){
 if(isFront){
 this.GetComponent<Image>().sprite = back;
 }else{
 this.GetComponent<Image>().sprite = front;
 }
 isFront = !isFront;
 } 대학연합게임제작동아리 브릿지
  • 26. Game Manager 클래스 • Start()에 아래 코드 추가
 - card오브젝트에 Card컴포넌트를 추가하고, 카드 뒷면 이 미지랑 앞면이미지(랜덤) 추가 • card.AddComponent<Card>().Setup(backSprite,
 sprites[Random.Range (0,12)]); • CardClick 함수 변경
 void CardClick(GameObject o){
 o.GetComponent<Card>().CardOpen();
 } 대학연합게임제작동아리 브릿지
  • 27. (실습3) 여기까지 구현! • 클릭하면 미리 생성된 랜덤 앞면 보여주기 • 다시 클릭하면 뒷면 됨 대학연합게임제작동아리 브릿지
  • 28. 카드 Shuffle • 미리 나열된 배열을 하나 만듬
 [0, 0, 1, 1, 2, 2, 3, 3, ... , 10, 10, 11, 11] (size : 24) • 위의 배열의 순서를 섞어 버린다! 대학연합게임제작동아리 브릿지
  • 29. 카드 Shuffle 대학연합게임제작동아리 브릿지 0 1 2 3 4 5 기준 나머지 중 랜덤으로 하나 선택 4 1 2 3 0 5 자리 교환!
  • 30. 카드 Shuffle 대학연합게임제작동아리 브릿지 4 1 2 3 0 5 기준 나머지 중 랜덤으로 하나 선택 4 5 2 3 0 1 자리 교환!
  • 31. 카드 Shuffle 대학연합게임제작동아리 브릿지 4 5 2 3 0 1 기준 나머지 중 랜덤으로 하나 선택 4 5 3 2 0 1 자리 교환!
 반복!
  • 32. 카드 Shuffle 대학연합게임제작동아리 브릿지 • 이렇게 섞임
 [10, 1, 3, 2, 4, 2, ... , 1, 11, 5] • int[] index = new int[24];
 for(int i=0; i<24; i++){
 index[i] = i/2;
 }
 for(int i=0; i<23; i++){
 int randNum = Random.Range(i+1, 24);
 int temp = index[randNum];
 index[randNum] = index[i];
 index[i] = temp;
 }
  • 33. (실습4) Shuffle 적용하기 대학연합게임제작동아리 브릿지 • 앞에서 작성한 코드에 Shuffle 알고리즘을 추가 • 모든 카드가 한 쌍씩 세트가 되도록
  • 34. Invoke • Invoke(“함수이름”, 실행할 시간) • ex) Invoke(“CardOpen”, 1f)
 CardOpen함수를 1초뒤에 실행하라. 대학연합게임제작동아리 브릿지
  • 35. Button • o.GetComponent<Button>().interactable = false;
 - 버튼이 비활성화 됨. • o.GetComponent<Button>().interactable = true;
 - 버튼이 활성화 됨. 대학연합게임제작동아리 브릿지
  • 36. (실습5) 1초동안 버튼 비활성화 • 카드 2개를 오픈 하면 1초간 모든 버튼이 비활성화 되도록 함. • 1초가 지나면 (정답을 제외한) 모든 버튼 활성화 대학연합게임제작동아리 브릿지
  • 37. [과제] 카드뒤집기 게임 완성 • 게임 시작하면 5초간 카드의 앞면을 보여주고 다시 뒤집힘
 - Invoke활용 • 카드를 차례대로 선택. 두번째 카드가 선택되면 1초간 보여 주고 정답 판별
 - 정답 : +500점
 - 오답 : -100점 • 점수는 UI의 Text를 활용하여 화면에 배치 대학연합게임제작동아리 브릿지
  • 38. [과제] 카드뒤집기 게임 완성 • 게임 클리어 : 모든 카드를 찾았을 때 • 게임 오버 : -1000점이되었을때 • 5초 뒤 게임 재시작. 대학연합게임제작동아리 브릿지