Unity_이미지 넘기기 sprite
안녕하세요
오늘은 제가 이번 프로젝트에서 담당했던 파트 중 튜토리얼에서 이미지를 넘겼던 기능을 포스팅하고자 합니다.
sprite라는 기능을 이용해서 구현을 했으며,
좀 더 멋지게 표현을 했다면 좋았겠지만 포토샵으로 간단한 작업을 거친 뒤 클릭만으로 각 버튼에 대한 설명을 확인하고,
또는 Skip 버튼을 이용해서 튜토리얼 중간 또는 보지 않고 바로 게임을 즐길 수 있도록 구성 하였습니다.
저에게는 메인(게임시작) 화면이 없어서,, 흰 바탕으로 시작을 했습니다.
저기서 클릭을 하면 이미지가 넘어가고 게임에 대한 설명들을 볼 수 있게 되어 있습니다.
우측에 보이는 콘솔창을 통해 클릭을 하고 있다는 것을 확인할 수 있습니다.
두 번째 영상은 Skip을 사용하는 영상입니다.
위와 같이 우측에 보이는 콘솔창을 이용하여 Skip 버튼을 클릭했다는 것을 알 수 있습니다.
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class Next : MonoBehaviour
{
Image image; //이미지에 대한 선언
public Sprite[] sprites; //public으로 sprite[] 배열선언
int index = 0; //sprite의 배열에대한 순서 첫번째 0부터시작
void Start()
{
image = GetComponent<Image>(); // 스타트할때 이미지는 GetComponent(inspector창)의 image
}
void Update()
{
if (Input.GetMouseButtonUp(0)) //마우스의 왼쪽버튼을 눌럿다 뗄때 UP
{
Debug.Log("click");
image.sprite = sprites[index]; //image의 sprite를 불러와서 index 순으로 함
index++; // index가 점점 늘어남
if (sprites.Length == index) //sprite의 길이가 index의 수만큼
{
SceneManager.LoadScene("02.Character_Select");
}
}
}
}
Next라는 script를 이용해서 이미지를 넘길 수 있게 코딩해 주었습니다.
위 이미지와 같이 2D Object를 에 Sprites를 통해서도 Sprites를 이용할 수 있습니다.
하지만 오브젝트를 통하지 않았고 코드를 이용해서
public Sprite[] sprites; //public으로 sprite[] 배열선언
public을 이용해 Sprite에 대한 배열을 선언해 줬으며, 위에 코드에 보시는 것과 같이
int index=0; 을통해 sprite의 배열을 0부터 시작하도록 해주었습니다.(코딩에서 첫 번째는 1이 아니라 0입니다. xe) 0 1 2 3)
그리고 Input.GetMouseButtionDown을 사용할 수도 있었지만, 생각해 보면 마우스를 눌렀다 뗄 때 구현이 되어야
한다는 생각이 들어서 Input.GetMouseButtonUp을 사용했고,
클릭 시 마우스 왼쪽버튼 0, 오른쪽 1 , 휠 2( 클릭 시) 이기 때문에 Input.GetMouseButtonUp(0)을 이용했습니다.
그리고 튜토리얼인 만큼 튜토리얼이 끝난 뒤 게임 플레이로 가야 하기 때문에 씬이동을 위해
using UnityEngine.SceneManagement; //씬이동에 필요
를 이용했습니다.
Next 스크립트를 Image에 적용을 시켜줬고, 오른쪽에 보는 것과 같이 배열을 사용했기 때문에 필요한 만큼의 이미지를
넣어 줬습니다. 이미지 삽입시 오른쪽 이미지의 우측 상단에 12가 보이는데 저기를 통해서 필요한 이미지개수만큼의 칸을
늘릴 수 있고, 또한 오른쪽 하단에 잇는 + , - 를 통해 추가할 이미지 수에 따라 칸을 추가 또는 삭제를 할 수 있습니다.
여기서 스크립트에 Image파일등 또는 힘에 대한 어떠한 정보에 대한 수정 등을 스크립트가 아니라 Inspector를 통해
수정을 해야 할 때는 public으로 해야 접근이 가능합니다.
using UnityEngine;
using UnityEngine.SceneManagement;
public class button_Skip : MonoBehaviour
{
public void OnClick() //OnClic으로 함수 이름을 지정
{
Debug.Log("skip");
SceneManager.LoadScene("02.Character_Select");
}
}
이번에는 Skip이라는 버튼에 대한 코드입니다.
Hierarchy창 오른쪽마우스 -> UI -> Legacy-> Text를 통해 만들어 줬습니다.
Hierarchy창에서의 이름을 Button으로 수정했고, 하위메뉴의 Text를 통해 Scene에서 보일 SKIP이라는 글자로
수정을 해줬습니다.
Hierarchy창에 Button을 Button의 Inspector 창에서 Button 메뉴를 찾아보면 On Click()이라는 메뉴를 볼 수 있는데
거기에 Hierarchy창의 Button을 넣어줍니다. 그리고 button_Skip을 을 선택하고 OnClick()을 클릭해 줍니다.
여기서 button_Skip은 Hierarchy창의 Button에 적용해 준 스크립트의 이름이고 OnClick()은 스크립트 안의 함수입니다.
그러므로 이름을 어떻게 짓느냐에 따라 이름은 달라질 수 있습니다.
-----------------------------------------------------------------------------
이번에 튜토리얼을 만들면서는 정말... 와... 멘탈이 갈렸다고 해야 하나...
정말 부족함을 뼈저리게 느끼게 된 계기였습니다. 평소에도 당연히 부족함을 알고는 있었지만, 이번건 어나더....ㅜㅜ
혼자 잡고 있다가 같은 팀내의 형에 도움을 받아 같이 구글링... 같이한 덕에 어쨌든 할 수 있었네요ㅜㅜ
요즘 생각하는 게 if문 쓰고 for문 쓰고 배열쓰고 그래 그렇게 이렇게 하면 되겠네~라고 생각은 잘하는데,,,,,,
이게 코드로 표현하려고 하면 코드 한 글자 타이핑 치기가 너무 힘겹다는 걸 많이 느끼고 있습니다ㅜㅜㅜ
또 노력하고 코딩도 계속하다 보면 구글링도 하겠지만 어느새 코드를 짜고 있는 날이 오겠죠..ㅎㅎ
항상 느끼는 거지만 프로젝트 기간 때 실력이 엄청 느는 것을 느끼기도 합니다. 정말 멘탈이 나갈 거 같고 힘들고 어렵지만 내가 구현했다는 만들어냈다는 그 쾌감은.......ㅋㅋ 정말 짜릿한 것 같습니다 ㅎㅎ
프로젝트기간은 이제 이번주가 끝이고 다음 주 월요일 발표이고 그 후부터 언리얼을 배우는데 뭔가 또 만들 수 있는 것들이 있다면 공부하면서 유니티도 꾸준히 올리고,,, 너무 정신없다면 개념정리 위주나,, 현재 진행형으로써 배우고 있는 언리얼에 대한 포스팅을 올릴 수 있지 않을까 하는 생각을 해봅니다 ㅎㅎ
그래도 처음 배우기 시작한 22년 12월 말을 생각하면 어느덧 2개월 하고 좀 더 지난 시점인데 그때를 되돌아본다면 당연히 많이 늘긴 하느것 같네요 ㅎㅎㅎ 무튼 앞으로도 또 더 화이팅 하겠습니다~ ㅎ