안녕하세요?


이번 포스팅에서는 지난번에 플레이어가 어떻게 해서 움직이게 할 수 있는지를 NGUI만 가지고서 구현하는 것을 해 보았는데, 이번에는 이 플레이어 위에 유저가 설정한 닉네임이 뜰 수 있도록 하는 일련의 작업을 하고자 합니다.



우선 위 스크린샷과 같이 NGUI메뉴에서 2DUI를 만들어 주도록 합니다.



그리고 나서 나오는 UI Root의 설정을 위 스크린샷과 같이 해주도록 합니다.



그리고 이번에는 Edit항목에 있는 Project Setting란에 있는 Tags and Layers를 부르도록 합니다.



위 스크린샷과 같이 User Layer9를 InGame2DUI라고 지정을 하도록 합니다.



그리고 추가를 했는 UIRoot를 선택하도록 합니다. 여기서 이제 이름을 InGame2DUI라고 바꿀 차례입니다.



이름을 바꾼 다음에 Layer라는 항목을 기본으로 UI라고 되어 있는데, 이를 InGame2DUI로 변경을 하도록 합니다.




그러면 자식 오브젝트까지 레이어를 다 변경할 것이라고 묻는데, 당연 Yes를 누르도록 합니다.



이제 InGame2DUI에 있는 Camera를 선택하도록 합니다.



인스펙트 뷰에 있는 Culling Mask를 위 스크린샷과 같이 바꾸어 주도록 합니다.



먼저 InGame2DUI를 선택한 다음에 Alt+Shift+N을 눌러서 새 자식 오브젝트를 생성한 다음에, 여기다가 이름을 Nickname이라고 지정을 하도록 합니다.



그리고 다음에는 Nickname이라는 하는 자식 오브젝트를 선택한 상황에서 Alt+Shift+L을 눌러서 레이블을 만들도록 합니다.



위 스크린샷과 같이 일련의 작업을 하도록 합니다.




다음으로는 Nickname을 선택한 상황에서 Alt+Shift+S를 눌러서 새 스프라이트를 생성하도록 합니다.



일련의 설정을 위 스크린샷과 같이 만들어 주도록 합니다.



그리고 나서 다시금 Nickname>Label을 선택하도록 해 줍니다.



인스펙트 뷰에 있는 Add Component로 새 스크립트를 추가해 주는데, PlayerName.cs라는 C# 스크립트를 생성하도록 합니다.

 

먼저 Start()메소드에 위 스크린샷과 같이 코딩을 하는데, 대략적인 내용은 UILabel이라는 컴포넌트에 접근을 해서, label의 텍스트는 PlayerPrefs의 특정 항목이다 라고 지정을 하는 것입니다. 당연 앞서 저장한 유저 닉네임의 항목명이 무엇인지 정확히 일치해야 합니다.



이제서야 플레이어 프리펩에 들어가 있는 유저의 닉네임이 제대로 나오는 것을 볼 수 있습니다. 이제 이 유저 닉네임이 플레이어를 따라 다니도록 설정을 해야 합니다.




먼저 이전에 했다 시피 Nickname이라는 오브젝트를 선택하도록 합니다.



인스펙트 뷰에서 Add Component로 위 스크린샷과 같이 C#언어로 되어 있는 FollowObject라는 스크립트를 추가하도록 합니다.


먼저 위 스크린샷에 나와 있는 것처럼 광역 변수를 설정해 주도록 합니다. 그런데 여기서 = 이 없어서 변수에 정확한 내용은 스크립트 상에서는 없습니다. 그럼 내용을 어디서 지정 하느냐 하면.....



스크립트를 저장하고 모노디벨롭을 나오면 인스펩트 뷰에 위 스크린샷과 같은 항목이 생성된 것을 볼 수 있습니다. 여기다가 일일히 드레그 앤 드롭으로 지정해 주는 것으로 어떻게 할 수 있습니다.



먼저 위 스크린샷과 같이 지정을 하도록 해 줍니다.



다시 FollowObject.cs 스크립트로 돌아와서, 위 스크린샷에 나와 있는 것처럼 Update()의 메소드에 내용을 지정해 주도록 합니다. 이렇게 하면, 아래와 같이 붙어서 움직이는 것을 볼 수 있습니다.



이것으로 플레이어 닉네임의 표시가 유니티의 플레이 버튼을 누르면 뜨는 것을 확인할 수 있습니다. 이렇게 해서 플레이어의 위에 오프셋으로 위에 있으라고 명령했기 때문에 이렇게 되는 것을 볼 수 있었습니다. 이제 남은 챕터6의 부분을 한번 읽어보고 실습에 더 들어갈지 말지를 결정해야 하는데, 아마 시간이 좀 걸릴 것이리라 생각이 듭니다.

  1. 2018.12.22 06:59

    비밀댓글입니다

    • 안녕하세요?
      이래저래 답글이 늦었습니다. 일단 미리 띄워진 네임을 숨기기 위해서는 저 네임 오브젝트의 enabled를 False로 처리하면 될듯 합니다.
      물론 저도 요새 너무 많이 파이썬을 하다보니 유니티5가 조금은 가물가물하기는 하지만, 아마도 저런 식으로 했을 겁니다.

+ Recent posts

티스토리 툴바