원본 글 : https://doc.photonengine.com/ko-kr/pun/current/demos-and-tutorials/pun-basics-tutorial/lobby-ui

이번 파트는 큰 내용은 없었다.



Launcher 스크립트의 start 부분에 있는 connect() 함수를 지우고,

버튼 하나를 만들어 Launcher 스크립트를 연결하여 onClick시 connect() 함수를 연결

버튼을 눌러야만 연결되도록 변경하였다.




InputField에 연결할 스크립트를 만든 후 InputField를 만들어 스크립트를 넣고 

onValueChanged에 SetPlayerName() 함수를 연결해준다.

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
33
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
[RequireComponent(typeof(InputField))]
public class PlayerNameInputField : MonoBehaviour {
 
    static string playerNamerPrefKey = "PlayerName";
 
    // Use this for initialization
    void Start () {
        string defaultName = "";
        InputField _inputfield = this.GetComponent<InputField>();
        if (_inputfield != null)
        {
            if(PlayerPrefs.HasKey(playerNamerPrefKey))
            {
                defaultName = PlayerPrefs.GetString(playerNamerPrefKey);
                _inputfield.text = defaultName;
            }
        }
 
        PhotonNetwork.playerName = defaultName;
    }
 
    public void SetPlayerName(string value)
    {
        PhotonNetwork.playerName = value + " ";
        PlayerPrefs.SetString(playerNamerPrefKey, value);
    }
}
 
cs

PlayerPrefs는 dictionary처럼 key와 value값을 가진 리스트로 플레이어의 환경설정을 저장하는 용도라고 보면 된다.

(https://docs.unity3d.com/ScriptReference/PlayerPrefs.html)


키는 변하지 않으므로 static으로 선언해두었다. (7번째줄)

InputField에 값을 입력받으면 SetString을 통해 해당 키에 value를 입력하고, (30번째줄)

실행 시 해당 키가 존재하면(HasKey, 17번째줄) GetString을 통해 value값을 받아와 출력한다. (19번째줄)


PhotonNetwork.playerName을 통해 네트워크상의 이름을 설정한다.




이후 텍스트 하나를 생성후 내용을 Connecting... 으로 변경

Start함수에서 라벨 및 버튼은 표시하고, 텍스트는 비표시.

Connect()시 라벨 및 버튼 비표시, Connecting 글자가 표시되도록 함.

OnDisconnectedFromPhoton()에서는 다시 라벨 및 버튼을 표시하고 텍스트는 표시되지 않도록 함.

Posted by misty_
,