검색결과 리스트
글
실전 Unity3D Engine Programing 과정 5일차 (2013.07.26 (금))
자료 모음: C:\Users\Mac\Documents
한글사이트: www.unity3dkorea.com
##리뷰..
Component Centric 엔진
## 오늘 할일
- NGUI
- 애니메이션
## NGUI 적용하기
- 어제 하던 것에서 NGUI 을 임포트한다.
- menu > Assets > Refresh 한다. 그러면 메뉴에 NGUI가 추가된다.
[설정]
GUI 는 그리팩 유저 인터페이스이다.
화면 해상도가 달라지면 대응하는 방법 안내
- 화면의 사각형의 모서리 엥커를 파악해 두고 거기서 이미지를 배치한다.
총 9개의 앵커 (좌상단, 좌중단, 좌하단, 중상단, 중중단, 중하단, 우상단, 우중단, 우하단)
총 9개의 앵커가 존재하며, 이 엥커를 기준으로 이미지를 배치한다.
- One Unit = 2/화면세로폭
- Root / 스크린의 높이
- 자동으로 늘어나는 것을 언체크해 둔다. 해상도는 동일한 UI를 갖게된다.
- 이 Root(불변 사이즈)를 기준으로 One Unit을 정의한다.
- Camera.. 카메라 밑에 앵커를 둔다.
- 앵커 밑에 판넬을 붙이다.
- 판넬은 이미지, 라벨, 드로콜정보, 매트리얼 사용량 정보글 관리한다.
[이제 작업해 보자]
어제 작업한 것중에 Camera의 Flare Layer, GUILayer, Audio Listener를 언체크한다. (오디오 리스너는 유일하게 하나이어야 한다.)
목표
- 상단에 점수, 10000M
- 하단에 목숨, 폭탄
이렇게 구성해 보자.
menu > NGUI > Create a New UI
창이 뜬다. Layer 선택하고 Add Layer하고 GUI 추가한다.
다시 Layer를 선택하면 만든 GUI가 나온다. GUI를 선택한다.
그리고 create .. 선택하면
하이어아키에 UI Root(2D)가 생긴다.
- Camera,
- Anchor
- Panel
-clipping을 설명. (화면에 보이는 것만 나온다.
이렇게 나온다. 이 각항목을 클릭해서 오른쪽 상세 내용을 보라..
Anchor를 복제해서 4개를 만든다.
그리고 앵커 이름을 각각 바꿔주다. 그리고 내부에 side를 좌우상하로 배치시킨다.
Anchor_TopLeft
Anchor_TopRight
판넬을 선택해서 menu > NGUI > create widget를 선택해서 팝업 화면이 나온다.
Atlas와 Font를 추가하고 Template는 Label로 한다. Add To한다.
아틀라스 만들자. (스프라이트 이미지를 하나의 파일로 재배치해서관리한다.)
- 텍스쳐 폴더에 모든 텍스쳐를 선택하고
- 상단에 menu > NGUI > Altras Make를 한다.
- 팝업에 Replace에 이름을 지정한다. 그러면 create가 나온다. 이 크리에이트 버튼을 누르면
아셋에 3개의 파일이 생성되는 것을 볼 수 있다.
- 이미지를 선택하면 모두 아틀라스를 만들 수 있다. (최대 80개까지 포함시킬 수 있다.)
포트로 아틀라스로 만들 수 있다. BM폰트....
각 포지션으로 만든다.
버튼은 Achor_bottomRight에 추가하는데..
- 엠프티오브젝트를 만들고 이 것에 판넬을 추가한다.
- 이름 Button으로 한다.
- 이 버튼의 상세 내용중 Layer를 GUI로 변경한다.
그리고 이버튼에 menu > NGUI > Attatch Collider 를 추가한다.
그리고 Component > NGUI > interation > 버튼메시지, 버튼사운드, 버튼스켈일을 추가한다.
그리고 버튼을 눌러보면 아래와 같이 붙어 있다.
## 버튼을 누르면 메시지를 출력해 본다.
메인스크립트에 아래 내용을 추가한다.
using UnityEngine;
using System.Collections;
public class MainScript : MonoBehaviour {
public GameObject SkyGamera;
public float CameraRotateSpeed = 0.1f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//카메라를Y축으로돌리자. 축을 중심으로회전한다.
SkyGamera.transform.RotateAround(Vector3.up, Time.deltaTime * CameraRotateSpeed);
}
// 버튼누르면호출된다.
void Bomb()
{
Debug.Log("Bomb Button Pressed");
}
}
실행해서 버튼을 눌러보라 그러면 consol에서 메시지가 출력된다.
##이어서 하자.
보톰 라벨을 life로 하자.
모노라이브 > menu > search > go to file > uiLabel
맨밑에 아래 내용 추가후 저장 > 컨버터
void SetText(string s)
{
this.mText = s;
this.hasChanged = true;
}
메인스크립트에 아래 내용 추가
using UnityEngine;
using System.Collections;
public class MainScript : MonoBehaviour {
public GameObject SkyGamera;
public float CameraRotateSpeed = 0.1f;
public GameObject Distance;
public GameObject Life;
public GameObject Point;
private int playerLife =3;
private int playerPoint = 0;
private float AccelSpeed = 100.0f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//카메라를Y축으로돌리자. 축을 중심으로회전한다.
SkyGamera.transform.RotateAround(Vector3.up, Time.deltaTime * CameraRotateSpeed);
Life.SendMessage("SetText", "X "+playerLife.ToString());
Point.SendMessage("SetText", "Point: "+playerPoint.ToString());
//N0(zero)를 넣어주면소숫점은절삭된다.
Distance.SendMessage("SetText", (Time.time*AccelSpeed).ToString("N0")+" m");
}
//총알이적군이랑충돌되면호출한다.
void Hit(int p)
{
this.playerPoint += p;
}
// 버튼누르면호출된다.
void Bomb()
{
Debug.Log("Bomb Button Pressed");
}
}
assets store로 가서 로그인 하고 itween으로 찾는다.
hotween을 찾아 다운로드 설치한다.
붙인 것 샘플을 돌려 보자
## 클리어신을 만들어 보자
1. new scene , 이름은 win
2. menu > NGUI > create new ui > layer는 GUI로 변경한다.
크리에이트 한다.
3. 위제만든다.
아틀라스는 판타지 아틀라스붙인다.
4. 패널에 라벨3개, 스프라이트 하나 만든다.
5. 라벨을 적당히 채운다.
6. 엠프티 오브젝트 만들고
-버튼
- 레이어는 GUI
- 그리고 판넬로 이동
- 위치 제조정
7. 버튼에 라벨과 스크립트 넣는다.
8. 스크립트 만든다.
using UnityEngine;
using System.Collections;
public class ResultUI : MonoBehaviour {
public Transform TitleLeft;
public Transform TitleRight;
public Transform Button;
IEnumerable Start()
{
Debug.Log("Start Time "+Time.time);
//yield는양보로 기다렸다가 해당시간후다음라인이 동작한다.
yield return new WaitForSeconds(1.0f);
Debug.Log("Next Time "+Time.time);
}
}
아래 것은 양보를 한다. 인공지능에 사용할 수 있고, 그러나 초는 정확하지 않다.
yield
UIRootdp 스크립트를 추가한다.
그리고 각각 연결한다.
다시 스크립트에
using Holoville.HOTween; 추가한다.
스타트함수에 다시 코딩
라벨스테이션 포지션 -1050, 40, 0
라벨클리어 푖션 1050, 40, 0
으로 한다.
그래서 1000을 빼주고 더해주면 화면들로 들어 온다.
실행해 본다.
상세에서
버튼도 스케일도 100, 100, 1로 변경해 본다.
버튼은 언체크 한다.
http://www.unity3dacademy.com/index.php?mid=EduInfo
'Unity3D' 카테고리의 다른 글
실전 Unity3D Engine Programing 과정 7일차 (0) | 2013.07.30 |
---|---|
실전 Unity3D Engine Programing 과정 6일차 (0) | 2013.07.29 |
실전 Unity3D Engine Programing 과정 4일차 (0) | 2013.07.25 |
실전 Unity3D Engine Programing 과정 3일차 (0) | 2013.07.24 |
실전 Unity3D Engine Programing 과정 2일차 (0) | 2013.07.23 |
RECENT COMMENT