본문 바로가기

Programming/Unity

UGUI 아틀라스 생성 Atlas 패키징을 할 이미지들을 선택하시면 인스펙터에 이러한 화면이 뜰겁니다. Texture Type 을 Sprite 로 한 후 Packing Tag가 Atlas이름 같은건데 구분이 가능하도록 정해놉니다. 하시는 프로젝트에 따라서 그 외 옵션을 추가설정 한 뒤 상단 메뉴의 Window -> Sprite Packer 를 클릭하여 Sprite Packer를 열어줍니다. 스프라이트 패커 왼쪽 상단에 보시면 Pack 이라는 메뉴가 있는데 눌러서 이미지들을 패킹 해줍니다. 패킹이 된 후 보시는 봐와 같이 View atlas 쪽에 만들어진 Atlas가 나옵니다. 보시면 같은 Atlas이름에 Group 0 1 2 숫자가 보이는데 이런 경우는 알파사용 여부, 필터모드, 밉맵생성 기타등등의 형식이 다를 경우 같은 형식.. 더보기
UGUI를 사용한 캐릭터 리스트 UI (소스코드) 우선 UI추가를 위해 캔버스를 추가해줍니다. 설정 한 캔버스 인스펙터 입니다. UI용 카메라에 찍히도록 설정하기 위해 RenderMode를 Screen Space - Camera로 변경 후 Render Camera에 UI를 찍을 카메라를 넣어줍니다. 저는 UI가 1280 x 720 사이즈로 나오게 하기 위해 Canvas Scaler 에서 저 설정대로 해주었습니다. UGUI는 캔버스 하나당 메시가 생성되기 때문에 드로우콜을 줄이기 위해 캔버스는 하나로 쓰도록 하고 캔버스 아래에 Panel을 추가해 그 밑에 UI 작업을 한 후 프리팹으로 묶어 사용하도록 하겠습니다. 리스트를 표기할 스크롤 뷰를 추가해줍니다. 스크롤바가 필요하다면 Scroll Rect에서 삭제하지 않으시면 되지만 저는 필요가 없음으로 제거해놨.. 더보기
Template을 이용한 Data 저장 Component 만들기(소스코드) 임의의 데이터를 저장하고 불러와야 할 경우에 오브젝트 내에 컴포넌트로 넣어줍니다. 템플릿으로 만들었기 때문에 다양한 타입들의 변수를 넣을 수 있으며, 사용자가 입력한 KeyName 과 템플릿의 타입을 조합한 것을 Dictionary 에서 Key로 가지고 있기 때문에 잘못된 키이름이나 잘못된 타입으로 가져올 경우 default(T)를 반환하게 하였습니다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344using UnityEngine;using System.Collections.Generic;using System.Text; public class CustomDataConatiner : MonoBehaviour{ .. 더보기
NGUI 사용 흐르는 문자열 만들기 가. 흐르는 문자열 만들기 - 사용 조건 : NGUI가 있어야 함. 나. 코드- NGUI UILabel.cs 파일내에 있는 overflow enum 값에 FlowText 라는 값을 추가해준다. 해당 옵션이 되어져 있을 경우 글자가 흐르게 할 예정이다. 12345678 public enum Overflow { ShrinkContent, ClampContent, ResizeFreely, ResizeHeight, FlowText, }cs - UILabel.cs 파일 의 OnStart에 해당 라벨이 흐르게 되는 옵션을 가지고 있는지 체크하도록 한다.12345678910111213141516171819202122232425262728293031 protected override void OnStart () { b.. 더보기
Unity C# Zoom in out 그냥 거리만 축소되는 줌인이 아니라 디아블로3를 하면서 느낀게 거리가 축소되면서 카메라의 x축으로 화전이 가해지는 줌인을 만들어보고 싶어 생각하게되었다. 1. 줌인 명령을 해줄 버튼을 NGUI를 이용해 만들어 둔위 스크립트를 추가ZoomInOut.cs- zoom in out 할 때 한번에 확 되는게 아니라 부드럽게 될 수 있도록 delta time을 넣어줬다. - 각도의 경우 거리와 같은 비율로 할 경우 회전정도가 작아보여서 RoatateSpeed라고 더 넣어줬는데 사실 Speed라기 보단 Offset이 더 의미전달이 잘 될거같아 이름을 바꾸었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3.. 더보기
NGUI HUDText 사용 HUDText라는 NGUI를 사용한 애셋이 있다 본래 HUDText는 Label을 이용해 만들수도 있지만 해당 애셋을 사용하면 편하게 데미지 라던가 대화를 띄울 수 있기 때문에 이렇게 사용하게 되었다. HUDText 애셋을 사용하기 위해서는 NGUI가 꼭 Import되어있어야 한다.우선 NGUI UI Root 의 카메라 밑에 자식으로 HUD를 사용할 Panel을 만들어준다. 만들어진 HUD Panel을 편의상 HUDText 튜토리얼에서 말한것 처럼 HUDRoot라 하겠다.HUDRoot에 자식으로 빈 오브젝트를 만든다음 HUDText 애셋에 있는 HUD Text 스크립트를 넣는다.그리고 그 빈 오브젝트 이름을 HUDText라 이름진다음 프리팹으로 만들어 보관하고 하이어라키에 있는오브젝트는 삭제한다. 이제 .. 더보기
NGUI HP Bar 만들기 HP나 MP나 그냥 스프라이트를 만든다음 해도 되지만 NGUI로 편하게 만들 수 있기 때문에 NGUI를 이용하였다. 우선 필요한 리소스를 NGUI Atlas로 만든다음 NGUI Sprite 오브젝트로 만든다. UI를 보이기 위해 2D UI를 추가하고 Camera 밑에 UI들을 붙일 Panel을 추가해준다. Panel 내부에 NGUI Sprite로 Atlas로 만들어둔 리소스들을 추가한다. HP나 MP Bar같은 것들은 피가 다는 것을 보여주기 위해 뒷 배경을 보여주며 닳아가는 효과를 줄 수 있고 아에 배경없이 피막대기가 까이는 것을 보여줄 수 있다. 나는 뒷배경을 주고 피가 까이는것을 보여주도록 만들기 위해 Foreground와 Background를 Sprite 두개를 만들었다. Foreground에서는.. 더보기
몬스터 FSM 구현 실용적인 예제로 본 게임 인공지능 책을 보고 C++ FSM을 구현할 때는 별 문제가 없었지만 이중상속이 지원되지 않는 유니티 C# 환경에서 FSM을 구현 하려면 딜리게이트나 코루틴을 이용해야 하는데 처음에는 코루틴을 이용해 구현하려했다가 실패를 했고 딜리게이트 역시 내 스스로 딜리게이트 개념을 잘 이해하고 있지 않아서인지 꼬이게 되어서 다른 방법을 인터페이스 개념을 생각해서 따로 만들게 되었다. 기본이 되는 FSM_State 클래스 - MonoBehaviour를 상속받지 않기 때문에 유니티에서 자동으로 업데이트 하지 않는다. 다른 상태들의 인터페이스를 제공할 추상클래스 abstract public class FSM_State { abstract public void EnterState(T _Slime);.. 더보기
가상 조이스틱 구현 포폴 개발초기에는 키보드로 테스트하였기에 별 문제없이 테스트했지만 유니티 어플을 통해 스마트폰으로 테스트하려니 가상조이스틱이 필요하게 되었다. NGUI 튜토리얼에 가상 조이스틱이 있다고 들었는데 찾지를 못 해서 스스로 구현하게 되었는데 조이스틱을 만들 때 기준이 되는 큰원, 내부에 왔다갔다 할 작은 원, 작은원의 최대 위치를 가르킬 빈오브젝트 이렇게 3개의 게임오브젝트를 이용하였다 코드 요약 1. 오브젝트가 눌렸을 때 눌려진 터지번호를 기억하고 update에서 이용한다. 터치번호가 없다면 update에서는 동작을 하지않는다. 2. 기억된 터치번호를 이용하여 터치된 위치를 스크린 좌표에서 직교좌표계로 좌표값으로 변경한다. 3. 변경된 좌표값에 작은원 오브젝트인 Inner_Pad를 이동시킨다. 이동된 작은원.. 더보기
유니티(unity) 디버깅 하기 UnityVS 가 무료로 풀렸기 때문에 https://www.visualstudio.com/features/unitytools-vs 로 가셔서 다운받아 설 치 후Unity 메뉴의 Assats -> Import Package 에서 UnityVS를 하시던지Program Files (x86)\Microsoft Visual Studio Tools for Unity 에 있는 애셋을 수동으로 추가하셔서 하시면편하게 비주얼스튜디오에서 디버깅 할 수 있습니다. 비주얼 스튜디오로 디버깅이 되게 해주는 에셋이 있다는데 전 없어서.. ㅠㅠ저두 있다면 편하고 좋을텐데...제길...orz.. 위 그림처럼 비주얼 스튜디오에서 브레이크 포인트를 걸어봤자 디버깅이 안됩니다;;;모노디벨롶으로 다시 바꿔줘야해요. 모노로 바꿔주었다면 이.. 더보기