SlideShare ist ein Scribd-Unternehmen logo
1 von 41
지원자 : 서영훈
개발 기간 : 2015/06/17 ~ 2015/08/17
DICE OF WAR 게임 소개
게임 유투브 영상 : HTTPS://WWW.YOUTUBE.COM/WATCH?V=UNMEWAGD3ZA
• 만드는 이유
• 어떤 게임
• 지금까지 한 것
• 개발하면서 공부하게 된 부분
• 어려웠던 부분
만드는 이유
• 게임 개발 프로젝트를 참여해서 프로젝트 목표는 달성
했으나 내가 목표로 한 부분에서는 제대로 완성 해
본 이력이 없어 시도함
• 유니티 실무 경험이 없어 대신 경험 삼아
직접 포트폴리오용으로 만듦
• 유니티 예제같은 것을 보고 배우는 것은 한계가 있어
직접 개발해 보며 작게 나마 경험을 쌓기 위해
어떤 게임을?
주사위 잔영 (개발사 : 소프트맥스[2001])을
그대로 한번 만들어 보자!! 에서 시작
포트폴리오로 어떤 게임을 만들어 볼까 고민 중…
[가칭]DiceOfWar
• 장르 : 2D 주사위 보드게임
• 개발환경 : Unity5.1.1f1, VisualStudio2010
• 사용에셋 : DicePackLight 1.3(이동주사위),
NGUI Next-Gen UI 3.9.0b(UI),
Colorable FantasyUI(UI Atlas)
• 사용 스프라이트 : 주사위 잔영, 라그나로크 온라인
• 게임 시스템 소개 :
캐릭터 – 이동(주사위갯수)만큼 주사위를 굴력 이동,
공격(주사위갯수)만큼 이동 중 적과 조우 시 전투 주사위를
생성,
방어(주사위갯수)만큼 이동하는 적과 조우 시 전투 주사위
를 생성,
지력(수치)만큼 전투시 도움을 준다.
그런 능력치들를 이용해 장애물을 넘어 골인지점까지
가야한다.
파티 – 같은 팀 캐릭터와 첫 발판을 제외한 같은 발판에
있게되면 파티를 할 수 있다. (오른쪽에서 2~3번째 캐릭터
가 전투시 지력으로 지원을 하고 마지막 캐릭터가 방어 시
방어 주사위 개수로 방어를 함)
• 게임 시스템 소개 :
타일 – 3or4칸 이동, 감옥, 아이템 획득, 전투,
도착하면 임의의 타일로 교체
다음 턴 낮은 수 이동 주사위, 다음 턴 높은 수 이동 주사위,
시작, 골인,
도착시 현재 전역 속성이 타일의 각 속성으로 교체되는 타일
[Sword(공격+2,지력-2), Cup(지력+2,공격-2),
Disk(이동+2, 방어-2), Wand(방어+2, 이동-2) ]
( * 현재 버전에서는 타일 이벤트가 아직 미구현입니다.)
• 게임 시스템 소개 :
적 – 맵의 타일에 각각 배치되어 있고 직접 싸움을 걸지 않고
플레이어가 걸면 전투를 함, 플레이어가 전투에서 이기면
사라지고, 적이 이기면 플레이어 캐릭터는
이동 전의 타일 로 돌아감
• 게임 UI 소개(1) :
팀 색, 유저 닉네임, 선택한
캐릭터의 코스트
맨 왼쪽의 X버튼 유저 슬롯 열
기/닫기
캐릭터 이름, 코스트가 표시되어 있고
선택할 수 있는 버튼
좌우 버튼으로 맵 선택
선택한 캐릭터 능력치 표시
게임 시작 버튼
• 게임 UI 소개(2) :
현재 속성 (무속성 NONE부터
시작) 턴 수
미니
맵
파티 시 현재 캐릭터 위치 이동, 현재
캐릭터 파티 탈퇴
이동 주사위 굴
리는 버튼
이동할 캐릭터를 선택하는 버튼
지금까지 한 것
Character
Manager
대기방
요 클래스 구조 소개
MapLoader MapLoader MovingObjInfo UserInfo MapInfo
…
…
본인이 작성한 클래스 위주로 구조를 나타내었음
Character
Manager
GameManagerMapManager BattleManager UIManager
인게임 주요 클래스 구조 소개
RaceManager
Tile
MapLoader
Tile
BasicManager
MovingObjInfo
…
……
CharacterPiece
MovingObject
…
Dice2D
…
UserCharInfo
…
CameraControl
UI_ArrowButton UI_SlotButton본인이 작성한 클래스 위주로 구조를 나타내었음
• CSVParser : FileInfo, TextReader클래스를 이용해 특정 위치에 있
는 csv파일 읽어오게 해 데이터를 읽어오는 클래스,
모든 Loader클래스들이 이 클래스를 상속받음
• CharacterLoader : 캐릭터 정보를 읽어오는Loader,
읽어온 정보를 MovingObjInfo타입으로 저장하고 특정 캐릭터
enum값을 넘겨받으면 그 캐릭터에 정보를 반환하는 기능 있음
• MapLoader : 맵에 배치될 Tile들의 속성, 위치를 읽어오는 Loader,
읽어온 정보를 TileInfo타입으로 저장하고 MapManager에게 넘겨
준다.
• MapListLoader : 맵들의 정보(인덱스, 이름, 제한 캐릭터 Cost)를
읽어오는 Loader, MapInfo타입으로 저장하고
watingRoomManager에 넘겨준다.
• BasicManager : 모든 Manager클래스의 부모 클래스,
이 클래스를 상속 받은 모든 Manager클래스에 싱글톤 패턴이 적용되
게 함
• GameManager : User의 InGame, 캐릭터 정보를 관리
• MapManager : Tile, Enemy, Character 오브젝트를 배치,
Tile타입에 따라 Sprite교체
• RaceManager : 주사위 오브젝트를 생성, 주사위 눈 값 얻기,
캐릭터 이동관련 이벤트, 턴 이벤트
• BattleManager : 전투를 벌일 두 오브젝트 생성 및 애니메이션 제
어, 전투 관련 주사위 생성, 전투 관련 이벤트
• UIManager : NGUI오브젝트들을 제어, UI관련 정보 입출력
• CharacterManager : 이전 Scene에서 받아온 캐릭터, 적 오브젝트들을
생성 및 관리
• MovingObjInfo : CharacterPiece, Enemy오브젝트의 공통으로
가지고 있을 정보(인덱스, 팀, 능력치)를 가짐
• MovingObject : CharacterPiece, Enemy오브젝트의 공통으로
가지고 있을 이동, 애니메이션관련 함수를 가짐
• CharacterPiece : Tile 이동, 충돌된 오브젝트(Tile, Enemy)에 따른 이
벤트(파티or전투) 로직
• Enemy : 현재 밟고 있는 타일 반환
• UserCharInfo : User가 플레이하는 캐릭터에 대한 정보와 InGame
에서 필요로 하는 User정보를 관리
• Tile : Tile의 속성(특수타일, 적 타일, 이전 타일, 이후 타일 등)을
가짐
• CameraControl : 현재 차례에 선택된 캐릭터를 따라 다니게
하는 카메라 이동 로직
• Dice2D : 전투 페이즈 때 쓰는 스크립트, Sprite 이미지와 Animator를
이용해 주사위를 나타냄
• UI_ArrowButton : 현재 움직이는 캐릭터가 갈림길을 만났을 때
나오는 화살표 UI 오브젝트의 스크립트, 캐릭터 오브젝트 좌
표를 이용해 NGUI좌표로 변환 후 화살표 UI 오브젝트
좌표 수정, 클릭한 방향으로 이동하게 하는 로직
• UI_SlotButton : 좌측 하단의 캐릭터 슬롯의 스크립트, 슬롯에 대 한
캐릭터 인덱스를 반환
• UI_MiniMap : 우측 하단의 맵의 Tile, 캐릭터, 적의 현재 위치를 표시
하는 UI 스크립트
• 중요 기능을 우선 개발 [구현]
이동 & 전투 시스템 : 플레이어가 굴려서 나온 주사위 눈만큼
이동, 전투를 하는 시스템
파티 시스템 : 2~3개의 캐릭터가 같은 Tile에 있을 경우
파티를 맺어 같이 이동/전투를 하는 시스템
턴 시스템 : 조작할 수 있는 플레이어 외에 플레이 AI를
추가하고 AI에게 턴을 넘기는 기능 구현
PvP 전투 : 맵에 배치된 적이 아닌 캐릭터들간의 전투 구현과
전투 애니메이션 완성
UI : 팀 표시, 미니 맵, 파티 안내 메시지, 턴 표시, 승리 표시,
인게임 외의 Scene UI 구성
Camera 제어 : 현재 이동하려는 캐릭터를 따라 이동하는
로직을 구현
• 그 외 부가 기능 [미구현]
Tile 속성 부여 : 감옥이나 주사위 확률 조정, 아이템 획득 같은
이벤트를 발생시키는 Tile 제작
스킬 & 아이템 : 사용 시 캐릭터 능력치나 이동, 전투 상황이
변화하는 기능 추가
개발하면서 공부하게 된
부분
• 유니티 C# 환경에서의 싱글톤
각 Manager클래스마다 유일한 인스턴스들을 가질 수 있고
어디서든지 그 인스턴스를 접근하기 위해서 쓰였음
Class BasicManager
{
private static BasicManager instance;
private static GameObject container;
public static BasicManager GetInstance(){
if( !instance )
{
container = new GameObject();
container.name = “BasicManager”;
instance = container.AddComponent(
typeof(BasicManager)) as BasicManager;
}
return instance;
}
}
• 유니티 타이머 Invoke()
일반적인 Timer()대신 MonoBehaviour가 지원하는
Invoke()함수가 있다.
Invoke( string methodName, float time )
- methodName 메소드를 time 초 후에 호출
InvokeRepeating( string methodName, float time,
float repeatRate )
- methodName 메소드를 time 초 후에 호출 후에 repeatRate 초
마다 반복 호출
CancelInvoke()
- 이 함수가 쓰여진 스크립트에 있는 모든 Invoke를 취소
CancelInvoke( string methodName )
- 이 함수가 쓰여진 스크립트에 있는 methodName를 호출하는
모든 Invoke를 취소
• Coroutine()
특정한 일을 단계적으로 발생하게 하거나 시간에 흐름에
따라 발생하거나 다른 연산이 완료될 때까지 기다리는
루틴을 작성할때 사용
yield return null
- Update구문의 완료될때까지
대기
yield return WaitForEndOfFrame
- 현재 프레임의 렌더링 작업
이 끝날때 까지 대기
yield return WaitForFixedUpdate
- FixedUpdate구문이 완료될때
까지 대기
Yield return www
- 웹에서 데이터 전송이 완료될때
까지 대기
• NGUI 버튼 이벤트 동적 할당 방법 - 1
SetUIButtonEvent함수로 버튼객체에 이벤트를 전달
게임플레이를 하면 동적으로 할당한 이벤트함수가
옆에 OnClick아래 Notify에 들어간걸 확인할 수 있다.
UIManager.cs
Battle
Manager.cs
• NGUI 버튼 이벤트 동적 할당 방법 - 2
연결한 이벤트 함수인 OnClickRollButtonInBattleZone함수,
전 슬라이드에서 나온 함수 SetUIButtonEvent에서 설정한 것과
같이 매개변수 개수와 타입이 같은 걸 볼 수 있음
Battle
Manager.cs
• 모든 데이터들을 외부 csv파일에서 읽어오기 - 1
맵에 배치하는 캐릭터, 적, Tile들을 하드코딩으로 배치하기
보다는 외부 csv파일에서 정해진 데이터를 가지고 배치하는
로직만 돌려주면 데이터를 컨트롤하는데 수월할 것 같아
적용해보기로 함
• 모든 데이터들을 외부 csv파일에서 읽어오기 - 2
모바일 환경에서 게임을 구동하려면
FileInfo대신 Resources.Load();를 사용해야 한다.
• Excel에서 데이터 작성 후 csv형식으로 저장 그리고 적용 결과
• 월드좌표에서 NGUI좌표로 변환
UI_ArrowButton.cs
주의! NGUI Camera오브젝트의 CullingMask로 NGUI오브젝트들의 Layer만 보여지게
• [NGUI] Panel과 Depth 개념
Panel : UI Layer라고 생각하면 된다.
Depth : 깊이, 0에 가까울수록 먼저 그리고 값이 클수록 나중에
그린다.
다른 UI오브젝트의 Depth보다 Panel의 Depth가 최우선 시 됨
• [NGUI] UI오브젝트 동적 생성 - 1
아래의 코드를 참고하여 프로젝트에 맞게 코드를 수정함
• [NGUI] UI오브젝트 동적 생성 - 2
csv파일에 읽어 들인 캐릭터들의 개수 만큼
NGUI 버튼 오브젝트를 동적 생성하도록 함
어려웠던 부분
• 이동 로직
처음에는 위 그림처럼 상하좌우 Raycast를 쏘아 Ray와 충돌하는 Tile를 검사
하지만 단점이 많음
주위 Tile이 몇 개 있는지…
이미 지나온 Tile에 대한 예외 처리
다음 Tile이 위치한 방향이 현재 Ray방향과 맞지 않다면?
그래서 해결책으로 현재 밟고 있는 Tile에 이전 Tile과 다음 Tile들 정보를 가
• 전투 페이즈의 주사위 이벤트
GameObject SquareDice에 Aniamtor적용 후
StateMachine에 따라 애니메이션 동작을 시작하게 하고
Rolling상태가 되었다가 아무런 애니메이션도 없는 Ready상태로 바꾸게 했음
그때 SpriteRenderer에서 Sprite을 바꿔도 적용되지 않는 문제가 생김
해결방안으로 Animator를 Enable을 false한 후 Sprite교체
• 스크립트 초기화 순서 문제
UIManager스크립트를 NGUI오브젝트인 UIRoot오브젝트에
붙여서 게임 실행했을 당시에는 잘되는데 유니티 재시작 후
다시 게임 실행해보면 다른 스크립트에서 UIManager의
instance를 사용하려 할때 UIManager의 instance가
생성되지 않았다고 에러 메세지가 나옴
• 스크립트 초기화 순서 문제
스크립트 호출 순서가
문제가 있는지 의심이 되어
스크립트 선택 후 Inspector창에 있는
Execution Order버튼 클릭
UIManager스크립트 드래그 해서
나타난 리스트에 추가
실행 순서 설정
값이 작을 수록 먼저 실행됨
• 참고 사이트
NGUI Tutorials :
https://www.youtube.com/user/ArenMookR5/playlists
Unity 2D Tutorial :
https://www.youtube.com/watch?v=Fdcnt2-Jf
4w&list=PLX2vGYjWbI0SKsNH5Rkpxvxr1dPE0Lw8F
Unity 개발 팁 :
http://unityindepth.tistory.com/

Weitere ähnliche Inhalte

Was ist angesagt?

유니티로 flappy brid 만들기(Unity 5.1)
유니티로 flappy brid 만들기(Unity 5.1)유니티로 flappy brid 만들기(Unity 5.1)
유니티로 flappy brid 만들기(Unity 5.1)Changwon National University
 
브릿지 Unity3D 기초 스터디 3회
브릿지 Unity3D 기초 스터디 3회브릿지 Unity3D 기초 스터디 3회
브릿지 Unity3D 기초 스터디 3회BridgeGames
 
브릿지 Unity3D 기초 스터디 5회
브릿지 Unity3D 기초 스터디 5회 브릿지 Unity3D 기초 스터디 5회
브릿지 Unity3D 기초 스터디 5회 BridgeGames
 
브릿지 Unity3D 기초 스터디 4회
브릿지 Unity3D 기초 스터디 4회브릿지 Unity3D 기초 스터디 4회
브릿지 Unity3D 기초 스터디 4회BridgeGames
 
브릿지 Unity3D 기초 스터디 2회
브릿지 Unity3D 기초 스터디 2회브릿지 Unity3D 기초 스터디 2회
브릿지 Unity3D 기초 스터디 2회BridgeGames
 
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011devCAT Studio, NEXON
 
유니티 고급 과정 -1-
유니티 고급 과정 -1-유니티 고급 과정 -1-
유니티 고급 과정 -1-Kiyoung Moon
 
introduce unity3D and playmaker basic
introduce unity3D and playmaker basicintroduce unity3D and playmaker basic
introduce unity3D and playmaker basicquxn6
 
Project-E 게임 내용 요약
Project-E 게임 내용 요약Project-E 게임 내용 요약
Project-E 게임 내용 요약Jong Won Park
 
유니티 기초 - 유니티 설치부터 스크립팅까지 익히기
유니티 기초 - 유니티 설치부터 스크립팅까지 익히기유니티 기초 - 유니티 설치부터 스크립팅까지 익히기
유니티 기초 - 유니티 설치부터 스크립팅까지 익히기주형 고
 
디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해Je Lyoung Kim
 
유니티 Rpg게임배경 스타트업 첫번째자료
유니티 Rpg게임배경 스타트업 첫번째자료유니티 Rpg게임배경 스타트업 첫번째자료
유니티 Rpg게임배경 스타트업 첫번째자료Je Lyoung Kim
 
120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseerChan-hyun Park
 
행동 기반 게임오브젝트
행동 기반 게임오브젝트행동 기반 게임오브젝트
행동 기반 게임오브젝트kgun86
 
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인승명 양
 
상속 관련 이것저것
상속 관련 이것저것상속 관련 이것저것
상속 관련 이것저것EG Lim
 
유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거
유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거
유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거주형 고
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성noerror
 

Was ist angesagt? (20)

유니티로 flappy brid 만들기(Unity 5.1)
유니티로 flappy brid 만들기(Unity 5.1)유니티로 flappy brid 만들기(Unity 5.1)
유니티로 flappy brid 만들기(Unity 5.1)
 
iOS7 Sprite Kit을 이용한 게임 개발
iOS7 Sprite Kit을 이용한 게임 개발iOS7 Sprite Kit을 이용한 게임 개발
iOS7 Sprite Kit을 이용한 게임 개발
 
Unity 시작하기
Unity 시작하기Unity 시작하기
Unity 시작하기
 
브릿지 Unity3D 기초 스터디 3회
브릿지 Unity3D 기초 스터디 3회브릿지 Unity3D 기초 스터디 3회
브릿지 Unity3D 기초 스터디 3회
 
브릿지 Unity3D 기초 스터디 5회
브릿지 Unity3D 기초 스터디 5회 브릿지 Unity3D 기초 스터디 5회
브릿지 Unity3D 기초 스터디 5회
 
브릿지 Unity3D 기초 스터디 4회
브릿지 Unity3D 기초 스터디 4회브릿지 Unity3D 기초 스터디 4회
브릿지 Unity3D 기초 스터디 4회
 
브릿지 Unity3D 기초 스터디 2회
브릿지 Unity3D 기초 스터디 2회브릿지 Unity3D 기초 스터디 2회
브릿지 Unity3D 기초 스터디 2회
 
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
 
유니티 고급 과정 -1-
유니티 고급 과정 -1-유니티 고급 과정 -1-
유니티 고급 과정 -1-
 
introduce unity3D and playmaker basic
introduce unity3D and playmaker basicintroduce unity3D and playmaker basic
introduce unity3D and playmaker basic
 
Project-E 게임 내용 요약
Project-E 게임 내용 요약Project-E 게임 내용 요약
Project-E 게임 내용 요약
 
유니티 기초 - 유니티 설치부터 스크립팅까지 익히기
유니티 기초 - 유니티 설치부터 스크립팅까지 익히기유니티 기초 - 유니티 설치부터 스크립팅까지 익히기
유니티 기초 - 유니티 설치부터 스크립팅까지 익히기
 
디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해
 
유니티 Rpg게임배경 스타트업 첫번째자료
유니티 Rpg게임배경 스타트업 첫번째자료유니티 Rpg게임배경 스타트업 첫번째자료
유니티 Rpg게임배경 스타트업 첫번째자료
 
120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer
 
행동 기반 게임오브젝트
행동 기반 게임오브젝트행동 기반 게임오브젝트
행동 기반 게임오브젝트
 
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
 
상속 관련 이것저것
상속 관련 이것저것상속 관련 이것저것
상속 관련 이것저것
 
유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거
유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거
유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성
 

Andere mochten auch

[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)GAMENEXT Works
 
이은석 마비노기 영웅전 포스트모템 1부 (kgc 버전)
이은석   마비노기 영웅전 포스트모템 1부 (kgc 버전)이은석   마비노기 영웅전 포스트모템 1부 (kgc 버전)
이은석 마비노기 영웅전 포스트모템 1부 (kgc 버전)drandom
 
이은석 마비노기 영웅전 포스트모템 2부 (kgc 버전)
이은석   마비노기 영웅전 포스트모템 2부 (kgc 버전)이은석   마비노기 영웅전 포스트모템 2부 (kgc 버전)
이은석 마비노기 영웅전 포스트모템 2부 (kgc 버전)drandom
 
The Binding of Isaac (아이작의 구속) 포스트모템
The Binding of Isaac (아이작의 구속) 포스트모템The Binding of Isaac (아이작의 구속) 포스트모템
The Binding of Isaac (아이작의 구속) 포스트모템연우 김
 
[IGC2015] 액션스퀘어 이한순-블레이드를 통해 알아보는 모바일 액션 RPG 전투기획
[IGC2015] 액션스퀘어 이한순-블레이드를 통해 알아보는 모바일 액션 RPG 전투기획[IGC2015] 액션스퀘어 이한순-블레이드를 통해 알아보는 모바일 액션 RPG 전투기획
[IGC2015] 액션스퀘어 이한순-블레이드를 통해 알아보는 모바일 액션 RPG 전투기획강 민우
 
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계승명 양
 
게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소Seungmo Koo
 
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용JP Jung
 

Andere mochten auch (8)

[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
 
이은석 마비노기 영웅전 포스트모템 1부 (kgc 버전)
이은석   마비노기 영웅전 포스트모템 1부 (kgc 버전)이은석   마비노기 영웅전 포스트모템 1부 (kgc 버전)
이은석 마비노기 영웅전 포스트모템 1부 (kgc 버전)
 
이은석 마비노기 영웅전 포스트모템 2부 (kgc 버전)
이은석   마비노기 영웅전 포스트모템 2부 (kgc 버전)이은석   마비노기 영웅전 포스트모템 2부 (kgc 버전)
이은석 마비노기 영웅전 포스트모템 2부 (kgc 버전)
 
The Binding of Isaac (아이작의 구속) 포스트모템
The Binding of Isaac (아이작의 구속) 포스트모템The Binding of Isaac (아이작의 구속) 포스트모템
The Binding of Isaac (아이작의 구속) 포스트모템
 
[IGC2015] 액션스퀘어 이한순-블레이드를 통해 알아보는 모바일 액션 RPG 전투기획
[IGC2015] 액션스퀘어 이한순-블레이드를 통해 알아보는 모바일 액션 RPG 전투기획[IGC2015] 액션스퀘어 이한순-블레이드를 통해 알아보는 모바일 액션 RPG 전투기획
[IGC2015] 액션스퀘어 이한순-블레이드를 통해 알아보는 모바일 액션 RPG 전투기획
 
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
 
게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소
 
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
 

Ähnlich wie Port polio게임소개

2 D게임 프로그래밍 발표 자료
2 D게임 프로그래밍 발표 자료2 D게임 프로그래밍 발표 자료
2 D게임 프로그래밍 발표 자료Lee Jungmin
 
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발MinGeun Park
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰승민 백
 
Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdf
Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdfCase Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdf
Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdfssuser2624f71
 
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Dong Chan Shin
 
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
 
주)바블콘텐츠 모바일 회사소개서
주)바블콘텐츠 모바일 회사소개서주)바블콘텐츠 모바일 회사소개서
주)바블콘텐츠 모바일 회사소개서Gcc Ny
 
레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례기룡 남
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴MinGeun Park
 
Tachyon 게임 기획 PPT
Tachyon 게임 기획 PPTTachyon 게임 기획 PPT
Tachyon 게임 기획 PPTKevin Oh
 
01 액션스크립트기초
01 액션스크립트기초01 액션스크립트기초
01 액션스크립트기초Ansan University
 
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례EG Lim
 
자바기말프로젝트Ppt
자바기말프로젝트Ppt자바기말프로젝트Ppt
자바기말프로젝트PptDongryun Jeong
 
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for UnrealKyu-sung Choi
 

Ähnlich wie Port polio게임소개 (20)

2 D게임 프로그래밍 발표 자료
2 D게임 프로그래밍 발표 자료2 D게임 프로그래밍 발표 자료
2 D게임 프로그래밍 발표 자료
 
jhj port.
jhj port.jhj port.
jhj port.
 
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
 
Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdf
Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdfCase Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdf
Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdf
 
Unity시작하기
Unity시작하기Unity시작하기
Unity시작하기
 
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
 
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...
 
주)바블콘텐츠 모바일 회사소개서
주)바블콘텐츠 모바일 회사소개서주)바블콘텐츠 모바일 회사소개서
주)바블콘텐츠 모바일 회사소개서
 
레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례
 
언어정복
언어정복언어정복
언어정복
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴
 
Tachyon 게임 기획 PPT
Tachyon 게임 기획 PPTTachyon 게임 기획 PPT
Tachyon 게임 기획 PPT
 
01 액션스크립트기초
01 액션스크립트기초01 액션스크립트기초
01 액션스크립트기초
 
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
 
자바기말프로젝트Ppt
자바기말프로젝트Ppt자바기말프로젝트Ppt
자바기말프로젝트Ppt
 
Game Play System
Game Play SystemGame Play System
Game Play System
 
Cyberpunk2165
Cyberpunk2165Cyberpunk2165
Cyberpunk2165
 
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
 

Port polio게임소개

  • 1. 지원자 : 서영훈 개발 기간 : 2015/06/17 ~ 2015/08/17 DICE OF WAR 게임 소개 게임 유투브 영상 : HTTPS://WWW.YOUTUBE.COM/WATCH?V=UNMEWAGD3ZA
  • 2. • 만드는 이유 • 어떤 게임 • 지금까지 한 것 • 개발하면서 공부하게 된 부분 • 어려웠던 부분
  • 4. • 게임 개발 프로젝트를 참여해서 프로젝트 목표는 달성 했으나 내가 목표로 한 부분에서는 제대로 완성 해 본 이력이 없어 시도함 • 유니티 실무 경험이 없어 대신 경험 삼아 직접 포트폴리오용으로 만듦 • 유니티 예제같은 것을 보고 배우는 것은 한계가 있어 직접 개발해 보며 작게 나마 경험을 쌓기 위해
  • 6. 주사위 잔영 (개발사 : 소프트맥스[2001])을 그대로 한번 만들어 보자!! 에서 시작 포트폴리오로 어떤 게임을 만들어 볼까 고민 중…
  • 7. [가칭]DiceOfWar • 장르 : 2D 주사위 보드게임 • 개발환경 : Unity5.1.1f1, VisualStudio2010 • 사용에셋 : DicePackLight 1.3(이동주사위), NGUI Next-Gen UI 3.9.0b(UI), Colorable FantasyUI(UI Atlas) • 사용 스프라이트 : 주사위 잔영, 라그나로크 온라인
  • 8. • 게임 시스템 소개 : 캐릭터 – 이동(주사위갯수)만큼 주사위를 굴력 이동, 공격(주사위갯수)만큼 이동 중 적과 조우 시 전투 주사위를 생성, 방어(주사위갯수)만큼 이동하는 적과 조우 시 전투 주사위 를 생성, 지력(수치)만큼 전투시 도움을 준다. 그런 능력치들를 이용해 장애물을 넘어 골인지점까지 가야한다. 파티 – 같은 팀 캐릭터와 첫 발판을 제외한 같은 발판에 있게되면 파티를 할 수 있다. (오른쪽에서 2~3번째 캐릭터 가 전투시 지력으로 지원을 하고 마지막 캐릭터가 방어 시 방어 주사위 개수로 방어를 함)
  • 9. • 게임 시스템 소개 : 타일 – 3or4칸 이동, 감옥, 아이템 획득, 전투, 도착하면 임의의 타일로 교체 다음 턴 낮은 수 이동 주사위, 다음 턴 높은 수 이동 주사위, 시작, 골인, 도착시 현재 전역 속성이 타일의 각 속성으로 교체되는 타일 [Sword(공격+2,지력-2), Cup(지력+2,공격-2), Disk(이동+2, 방어-2), Wand(방어+2, 이동-2) ] ( * 현재 버전에서는 타일 이벤트가 아직 미구현입니다.)
  • 10. • 게임 시스템 소개 : 적 – 맵의 타일에 각각 배치되어 있고 직접 싸움을 걸지 않고 플레이어가 걸면 전투를 함, 플레이어가 전투에서 이기면 사라지고, 적이 이기면 플레이어 캐릭터는 이동 전의 타일 로 돌아감
  • 11. • 게임 UI 소개(1) : 팀 색, 유저 닉네임, 선택한 캐릭터의 코스트 맨 왼쪽의 X버튼 유저 슬롯 열 기/닫기 캐릭터 이름, 코스트가 표시되어 있고 선택할 수 있는 버튼 좌우 버튼으로 맵 선택 선택한 캐릭터 능력치 표시 게임 시작 버튼
  • 12. • 게임 UI 소개(2) : 현재 속성 (무속성 NONE부터 시작) 턴 수 미니 맵 파티 시 현재 캐릭터 위치 이동, 현재 캐릭터 파티 탈퇴 이동 주사위 굴 리는 버튼 이동할 캐릭터를 선택하는 버튼
  • 14. Character Manager 대기방 요 클래스 구조 소개 MapLoader MapLoader MovingObjInfo UserInfo MapInfo … … 본인이 작성한 클래스 위주로 구조를 나타내었음
  • 15. Character Manager GameManagerMapManager BattleManager UIManager 인게임 주요 클래스 구조 소개 RaceManager Tile MapLoader Tile BasicManager MovingObjInfo … …… CharacterPiece MovingObject … Dice2D … UserCharInfo … CameraControl UI_ArrowButton UI_SlotButton본인이 작성한 클래스 위주로 구조를 나타내었음
  • 16. • CSVParser : FileInfo, TextReader클래스를 이용해 특정 위치에 있 는 csv파일 읽어오게 해 데이터를 읽어오는 클래스, 모든 Loader클래스들이 이 클래스를 상속받음 • CharacterLoader : 캐릭터 정보를 읽어오는Loader, 읽어온 정보를 MovingObjInfo타입으로 저장하고 특정 캐릭터 enum값을 넘겨받으면 그 캐릭터에 정보를 반환하는 기능 있음 • MapLoader : 맵에 배치될 Tile들의 속성, 위치를 읽어오는 Loader, 읽어온 정보를 TileInfo타입으로 저장하고 MapManager에게 넘겨 준다. • MapListLoader : 맵들의 정보(인덱스, 이름, 제한 캐릭터 Cost)를 읽어오는 Loader, MapInfo타입으로 저장하고 watingRoomManager에 넘겨준다.
  • 17. • BasicManager : 모든 Manager클래스의 부모 클래스, 이 클래스를 상속 받은 모든 Manager클래스에 싱글톤 패턴이 적용되 게 함 • GameManager : User의 InGame, 캐릭터 정보를 관리 • MapManager : Tile, Enemy, Character 오브젝트를 배치, Tile타입에 따라 Sprite교체 • RaceManager : 주사위 오브젝트를 생성, 주사위 눈 값 얻기, 캐릭터 이동관련 이벤트, 턴 이벤트 • BattleManager : 전투를 벌일 두 오브젝트 생성 및 애니메이션 제 어, 전투 관련 주사위 생성, 전투 관련 이벤트 • UIManager : NGUI오브젝트들을 제어, UI관련 정보 입출력 • CharacterManager : 이전 Scene에서 받아온 캐릭터, 적 오브젝트들을 생성 및 관리
  • 18. • MovingObjInfo : CharacterPiece, Enemy오브젝트의 공통으로 가지고 있을 정보(인덱스, 팀, 능력치)를 가짐 • MovingObject : CharacterPiece, Enemy오브젝트의 공통으로 가지고 있을 이동, 애니메이션관련 함수를 가짐 • CharacterPiece : Tile 이동, 충돌된 오브젝트(Tile, Enemy)에 따른 이 벤트(파티or전투) 로직 • Enemy : 현재 밟고 있는 타일 반환 • UserCharInfo : User가 플레이하는 캐릭터에 대한 정보와 InGame 에서 필요로 하는 User정보를 관리 • Tile : Tile의 속성(특수타일, 적 타일, 이전 타일, 이후 타일 등)을 가짐
  • 19. • CameraControl : 현재 차례에 선택된 캐릭터를 따라 다니게 하는 카메라 이동 로직 • Dice2D : 전투 페이즈 때 쓰는 스크립트, Sprite 이미지와 Animator를 이용해 주사위를 나타냄 • UI_ArrowButton : 현재 움직이는 캐릭터가 갈림길을 만났을 때 나오는 화살표 UI 오브젝트의 스크립트, 캐릭터 오브젝트 좌 표를 이용해 NGUI좌표로 변환 후 화살표 UI 오브젝트 좌표 수정, 클릭한 방향으로 이동하게 하는 로직 • UI_SlotButton : 좌측 하단의 캐릭터 슬롯의 스크립트, 슬롯에 대 한 캐릭터 인덱스를 반환 • UI_MiniMap : 우측 하단의 맵의 Tile, 캐릭터, 적의 현재 위치를 표시 하는 UI 스크립트
  • 20. • 중요 기능을 우선 개발 [구현] 이동 & 전투 시스템 : 플레이어가 굴려서 나온 주사위 눈만큼 이동, 전투를 하는 시스템 파티 시스템 : 2~3개의 캐릭터가 같은 Tile에 있을 경우 파티를 맺어 같이 이동/전투를 하는 시스템 턴 시스템 : 조작할 수 있는 플레이어 외에 플레이 AI를 추가하고 AI에게 턴을 넘기는 기능 구현 PvP 전투 : 맵에 배치된 적이 아닌 캐릭터들간의 전투 구현과 전투 애니메이션 완성 UI : 팀 표시, 미니 맵, 파티 안내 메시지, 턴 표시, 승리 표시, 인게임 외의 Scene UI 구성 Camera 제어 : 현재 이동하려는 캐릭터를 따라 이동하는 로직을 구현
  • 21. • 그 외 부가 기능 [미구현] Tile 속성 부여 : 감옥이나 주사위 확률 조정, 아이템 획득 같은 이벤트를 발생시키는 Tile 제작 스킬 & 아이템 : 사용 시 캐릭터 능력치나 이동, 전투 상황이 변화하는 기능 추가
  • 23. • 유니티 C# 환경에서의 싱글톤 각 Manager클래스마다 유일한 인스턴스들을 가질 수 있고 어디서든지 그 인스턴스를 접근하기 위해서 쓰였음 Class BasicManager { private static BasicManager instance; private static GameObject container; public static BasicManager GetInstance(){ if( !instance ) { container = new GameObject(); container.name = “BasicManager”; instance = container.AddComponent( typeof(BasicManager)) as BasicManager; } return instance; } }
  • 24. • 유니티 타이머 Invoke() 일반적인 Timer()대신 MonoBehaviour가 지원하는 Invoke()함수가 있다. Invoke( string methodName, float time ) - methodName 메소드를 time 초 후에 호출 InvokeRepeating( string methodName, float time, float repeatRate ) - methodName 메소드를 time 초 후에 호출 후에 repeatRate 초 마다 반복 호출 CancelInvoke() - 이 함수가 쓰여진 스크립트에 있는 모든 Invoke를 취소 CancelInvoke( string methodName ) - 이 함수가 쓰여진 스크립트에 있는 methodName를 호출하는 모든 Invoke를 취소
  • 25.
  • 26. • Coroutine() 특정한 일을 단계적으로 발생하게 하거나 시간에 흐름에 따라 발생하거나 다른 연산이 완료될 때까지 기다리는 루틴을 작성할때 사용 yield return null - Update구문의 완료될때까지 대기 yield return WaitForEndOfFrame - 현재 프레임의 렌더링 작업 이 끝날때 까지 대기 yield return WaitForFixedUpdate - FixedUpdate구문이 완료될때 까지 대기 Yield return www - 웹에서 데이터 전송이 완료될때 까지 대기
  • 27. • NGUI 버튼 이벤트 동적 할당 방법 - 1 SetUIButtonEvent함수로 버튼객체에 이벤트를 전달 게임플레이를 하면 동적으로 할당한 이벤트함수가 옆에 OnClick아래 Notify에 들어간걸 확인할 수 있다. UIManager.cs Battle Manager.cs
  • 28. • NGUI 버튼 이벤트 동적 할당 방법 - 2 연결한 이벤트 함수인 OnClickRollButtonInBattleZone함수, 전 슬라이드에서 나온 함수 SetUIButtonEvent에서 설정한 것과 같이 매개변수 개수와 타입이 같은 걸 볼 수 있음 Battle Manager.cs
  • 29. • 모든 데이터들을 외부 csv파일에서 읽어오기 - 1 맵에 배치하는 캐릭터, 적, Tile들을 하드코딩으로 배치하기 보다는 외부 csv파일에서 정해진 데이터를 가지고 배치하는 로직만 돌려주면 데이터를 컨트롤하는데 수월할 것 같아 적용해보기로 함
  • 30. • 모든 데이터들을 외부 csv파일에서 읽어오기 - 2 모바일 환경에서 게임을 구동하려면 FileInfo대신 Resources.Load();를 사용해야 한다.
  • 31. • Excel에서 데이터 작성 후 csv형식으로 저장 그리고 적용 결과
  • 32. • 월드좌표에서 NGUI좌표로 변환 UI_ArrowButton.cs 주의! NGUI Camera오브젝트의 CullingMask로 NGUI오브젝트들의 Layer만 보여지게
  • 33. • [NGUI] Panel과 Depth 개념 Panel : UI Layer라고 생각하면 된다. Depth : 깊이, 0에 가까울수록 먼저 그리고 값이 클수록 나중에 그린다. 다른 UI오브젝트의 Depth보다 Panel의 Depth가 최우선 시 됨
  • 34. • [NGUI] UI오브젝트 동적 생성 - 1 아래의 코드를 참고하여 프로젝트에 맞게 코드를 수정함
  • 35. • [NGUI] UI오브젝트 동적 생성 - 2 csv파일에 읽어 들인 캐릭터들의 개수 만큼 NGUI 버튼 오브젝트를 동적 생성하도록 함
  • 37. • 이동 로직 처음에는 위 그림처럼 상하좌우 Raycast를 쏘아 Ray와 충돌하는 Tile를 검사 하지만 단점이 많음 주위 Tile이 몇 개 있는지… 이미 지나온 Tile에 대한 예외 처리 다음 Tile이 위치한 방향이 현재 Ray방향과 맞지 않다면? 그래서 해결책으로 현재 밟고 있는 Tile에 이전 Tile과 다음 Tile들 정보를 가
  • 38. • 전투 페이즈의 주사위 이벤트 GameObject SquareDice에 Aniamtor적용 후 StateMachine에 따라 애니메이션 동작을 시작하게 하고 Rolling상태가 되었다가 아무런 애니메이션도 없는 Ready상태로 바꾸게 했음 그때 SpriteRenderer에서 Sprite을 바꿔도 적용되지 않는 문제가 생김 해결방안으로 Animator를 Enable을 false한 후 Sprite교체
  • 39. • 스크립트 초기화 순서 문제 UIManager스크립트를 NGUI오브젝트인 UIRoot오브젝트에 붙여서 게임 실행했을 당시에는 잘되는데 유니티 재시작 후 다시 게임 실행해보면 다른 스크립트에서 UIManager의 instance를 사용하려 할때 UIManager의 instance가 생성되지 않았다고 에러 메세지가 나옴
  • 40. • 스크립트 초기화 순서 문제 스크립트 호출 순서가 문제가 있는지 의심이 되어 스크립트 선택 후 Inspector창에 있는 Execution Order버튼 클릭 UIManager스크립트 드래그 해서 나타난 리스트에 추가 실행 순서 설정 값이 작을 수록 먼저 실행됨
  • 41. • 참고 사이트 NGUI Tutorials : https://www.youtube.com/user/ArenMookR5/playlists Unity 2D Tutorial : https://www.youtube.com/watch?v=Fdcnt2-Jf 4w&list=PLX2vGYjWbI0SKsNH5Rkpxvxr1dPE0Lw8F Unity 개발 팁 : http://unityindepth.tistory.com/