PUN Classic(PUN1이라고도 불립니다)은 PUN의 첫 버전입니다.         현재는 리팩토링 및 기능 확장에 의해 PUN2로 새롭게 바뀌었습니다.          새 프로젝트에는 PUN2를 이용해 주시고, 기존의 프로젝트도 가능하면 PUN1에서 PUN2로 옮기는 것을 권장합니다.  자세한 내용은: "마이그레이션 노트". PUN Classic은 곧 점검이 시작됩니다.        중요한 버그의 수정과 Unity의 신버전의 지원 등을 예정하고 있습니다. 신기능의 추가는 PUN2에서만 이루어지므로 주의해 주십시오.

파트 3 - 게임 신

이 섹션에서는 플레이어들이 플레이 하는 여러 신을 생성 하는 것을 다루게 됩니다.

각 신은 특정 플레이어 수로 지정되며 플레이어 수가 많아지면 더 커져서 플레이어들이 움직일 수 있는 공간을 제공 합니다. 이 튜토리얼의 아래에서는 플레이어 수에 따른 적정한 레벨을 로드하는 로직을 구현 할 것 이며 다음의 형식으로 레벨에 대해서 명명 할 것 입니다:

"Room for X" X 는 플레이어 숫자를 나타냅니다.

Contents

첫 번째 룸 생성

  1. 새로운 신을 생성하여 정확히 `"Room for 1"로 저장 합니다.
  2. 큐브를 생성하여 이름을 floor 로 합니다.
  3. Position 은 0,0,0 으로 합니다. 플레이어를 중심부 위 (0,x,0) 에 스폰하는 것이 우리 로직 시스템에서 중요 합니다.
  4. floor 의 값은 20,1,20 으로 설정 합니다.

플레이 할 수 있는 단계로는 충분 하지만 벽이 있어야 플레이어를 그 안에서 플레이 할 수 있도록 해줄 것 입니다. 따라서 간단하게 큐브를 생성하여 위치, 회전, 확대 정보를 조정 해 벽 처럼 만들어 주시기 바랍니다. floor 게임 오브젝트에 대한 4개의 벽의 위치, 스케일 정보가 아래에 있습니다.

Wall 1 x y z
Position 0 2 -10
Rotation 0 0 0
Scale 20 3 1
Wall 2 x y z
Position 0 2 10
Rotation 0 0 0
Scale 20 3 1
Wall 3 x y z
Position -10 2 0
Rotation 0 90 0
Scale 20 3 1
Wall 4 x y z
Position 10 2 0
Rotation 0 90 0
Scale 20 3 1

현 시점에서는 Room For 1 신으로 저장해야 한다는 것을 기억 하세요.

Back To Top

Game Manager 프리팹

모든 경우에 있어서, 사용자 인터페이스의 최소 요구사항은 룸에서 빠져 나갈 수 있도록 하는 것 입니다. 이를 위해 UI Button이 필요하고 로컬 플레이어가 룸에서 나갈 수 있도록 Photon 메소드를 호출하는 스크립트도 필요 합니다. 로컬 플레이어가 룸에서 나갈 수 있게 하기 위해 Game Manager라고 하는 프리팹을 생성하고 현재 룸에 참여중인 로컬 플레이어가 룸에서 빠져 나올 수 있도록 하는 작업을 할 것 입니다.

  1. C# 스크립트 GameManager 를 생성 합니다.
  2. 신에서 빈 게임 오브젝트를 생성하여 Game Manager 로 이름을 변경 합니다.
  3. GameManager 스크립트를 Game Manager 게임오브젝트에 드래그 합니다.
  4. Game Manager 를 프리팹으로 변경하기 위해 Hierarachy 에서 드래그하여 Assets Browser 로 끌어 놓으면 Hierarchy 에서 파란색으로 변경됩니다.
  5. GameManager 스크립트를 편집 합니다.
  6. GameManager 스크립트를 다음의 코드로 교체 합니다.
using System;
using System.Collections;

using UnityEngine;
using UnityEngine.SceneManagement; 

namespace Com.MyCompany.MyGame
{
    public class GameManager : MonoBehaviour {

        #region Photon Messages

        /// <summary>
        /// Called when the local player left the room. We need to load the launcher scene.
        /// </summary>
        public void void OnLeftRoom()
        {
            SceneManager.LoadScene(0);
        }

        #endregion

        #region Public Methods

        public void LeaveRoom()
        {
            PhotonNetwork.LeaveRoom();
        }

        #endregion    
    }
}

public 메소드인 LeaveRoom() 을 생성 하였습니다. 이 메소드는 명시적으로 플레이어를 Photon Network 룸에서 나가도록 하며 추상화를 위해서 public 메소드로 wrap 하였습니다. 다음 단계에서는 데이터 저장 또는 확인 단계 추가등 더 많은 기능 추가를 할 수 있습니다. 게임 요구사항에 기반하여 룸에 있지 않을 경우 Launcher 신이 표시되어야 하고 Photon 콜백 OnLeftRoom() 을 listen 하고 [Build Setting]의 신 목록에서 0번 인덱스 로비 신인 Launcher 를 로드합니다. 이 섹션의 Build Settings Scene List 에서 신의 인덱스를 설정 할 것 입니다.

그런데 왜 우리는 프리팹으로 만들었을까요? 동일한 게임의 몇가지 신을 넣어야 하기 때문에 Game Manager 재활용이 필요하기 때문입니다. 유니티에서 게임오브젝트 재활용을 위해서 가장 좋은 방식은 프리팹으로 변경 하는 것 입니다.

다음에는 GameManager LeaveRoom() 메소드를 호출 하는 UI Button을 생성하겠습니다.

Back To Top

Quit Room Button Prefab

다시한번 Game Manager 와 같은 관점에서 이 기능이 필요한 여러 다른 신들이 있으면 먼저 계획하여 Button 을 프리팹으로 만들어서 재활용 하고 나중에 다시 사용할 수 있도록 하는 것이 합리적일 것입니다.

  1. Room for 1 신에 있는지 확인 해주세요.
  2. 유니티 메뉴 'GameObject/UI/Panel' 에서 UI Panel 을 생성하여 Top Panel 로 이름을 부여 합니다.
  3. 이 Panel 에서 ImageCanvas Renderer 컴포넌트를 제거 합니다. 보기에 나쁘지 않으면 그대로 유지 해도 좋습니다.
  4. ShiftAlt 를 누른 상태로 수직 Anchor Presets 를 top 으로 수평 anchor preset 은 stretch 로 설정 합니다. RectTransform Anchors 사용하려면 약간의 경험이 필요하지만 그만한 가치가 있습니다 :)
  5. RectTransform 높이를 50 으로 설정 합니다.
  6. Panel GameObject 를 우클릭하여 Top Panel UI/Button 을 추가하고 Leave button으로 이름을 변경 합니다.
  7. Leave button 의 차일드 텍스트를 선택 하고 텍스트를 Leave Game으로 변경 합니다.
  8. OnClick button의 이벤트와 Hierarchy 의 Game Manager 인스턴스를 연결하여 LeaveRoom()을 호출 하도록 합니다.

Button onClick Action
Button onClick Leave Action

  1. 신 Hierarchy 에서 Leave button 을 Assets Browser 로 드래그 하여 프리팹으로 변경 하면 Hierarchy 에서 파라색으로 변경 됩니다.
  2. 신을 저장하고 프로젝트를 저장 합니다.

Back To Top

다른 룸들 생성

하나의 룸을 맞게 생성 했으므로 3번 복사 하겠습니다. 그리고 이름을 적절하게 명명합니다(유니티에서 복사할 때 이미 이름을 부여 하게 됩니다 ):

위치, 회전과 스케일을 변경하기 위해서 아래의 값을 참고 하시기 바랍니다.

Back To Top

Room For 2

Floor Scale: 36,1,36

Wall 1 x y z
Position 0 2 -18.5
Rotation 0 0 0
Scale 36 3 1
Wall 2 x y z
Position 0 2 18.5
Rotation 0 0 0
Scale 36 3 1
Wall 3 x y z
Position -18.5 2 0
Rotation 0 90 0
Scale 36 3 1
Wall 4 x y z
Position 18.5 2 0
Rotation 0 90 0
Scale 36 3 1

Back To Top

Room For 3

Floor Scale: 50,1,50

Wall 1 x y z
Position 0 2 -25
Rotation 0 0 0
Scale 50 3 1
Wall 2 x y z
Position 0 2 25
Rotation 0 0 0
Scale 50 3 1
Wall 3 x y z
Position -25 2 0
Rotation 0 90 0
Scale 50 3 1
Wall 4 x y z
Position 25 2 0
Rotation 0 90 0
Scale 50 3 1

Back To Top

Room For 4

Floor Scale: 60,1,60

Wall 1 x y z
Position 0 2 -30
Rotation 0 0 0
Scale 60 3 1
Wall 2 x y z
Position 0 2 30
Rotation 0 0 0
Scale 60 3 1
Wall 3 x y z
Position -30 2 0
Rotation 0 90 0
Scale 60 3 1
Wall 4 x y z
Position 30 2 0
Rotation 0 90 0
Scale 60 3 1

Back To Top

신 목록 빌드 설정

편집과 게시할 때 프로젝트에서 중요한 오퍼레이션 Build Settings로 모든 신들을 추가하여 유니티가 어플리케이션을 빌드 할 때 추가 하도록 해야 합니다.

  1. "File/Build Settings" 메뉴를 통하여 Build Settings를 오픈 합니다.
  2. 모든 신을 드래그앤 드롭 하고 launcher 신은 리스트의 첫번째가 되며 유니티가 기본적으로 그 신을 로드하여 플레이어에게 보여 줄 것 입니다.

Build Settings: Scenes In Build
Build Settings: Scenes In Build

이제 기본 신 설정을 완료 했으므로 이제 모든 것을 진행할 준비가 되었고 다음 섹션에서 진행하도록 하겠습니다.

다음 파트.
이전 파트.

기술문서 TOP으로 돌아가기