단비트 엔진으로 유저 이름 검색과 일치하는 기능 만들기

UN(Monobit Unity Networking)을 사용하여 다양한 일을 시도해 보세요!
따라서 이것은 유저 검색 기능을 설치할 때의 필기다.
환경은 다음과 같다.
win10 64bit, Unity2018.3.3f1, Monobit Unity Networking2.0 v2.6

한 일


클라이언트 A
1. 서버 연결을 위해 유저 이름을 입력
2. 방 이름을 입력하여 방을 만들고 방으로 들어가기
클라이언트 B 씨
1. 서버 연결을 위해 유저 이름을 입력
2. 유저 이름을 입력하여 유저 검색
3. 검색 결과 목록에서 플레이어를 선택하여 방에 들어가기
B 씨는 A 씨가 있는 방을 조사하여 입실 처리를 했다.
// プレイヤー名.
private string playerName = "";

/** プレイヤー名入力処理 */

// プレイヤー名を設定
MonobitNetwork.player.name = playerName;

// サーバに接続
MonobitNetwork.ConnectServer("v1.0");
유저 이름을 입력하고 서버에 연결합니다.
유저 검색 기능의 조건은 서버에 연결하는 것이므로 주의해야 한다.
단비트 엔진이 검색 처리를 실행할 때 보기MonobitNetwork.player.name.
유저의 이름을 잊지 않도록 주의하세요.
// プレイヤー検索名.
private string searchPlayerName = "";

// プレイヤー検索処理.
void OnGUI_SearchPlayer()
{
    GUILayout.Label("Search Players", new GUIStyle() { fontStyle = FontStyle.Bold });
    GUILayout.BeginHorizontal();
    GUILayout.Label("Player Name: ");
    searchPlayerName = GUILayout.TextField(searchPlayerName, GUILayout.Width(150));
    if(GUILayout.Button("Seatch", GUILayout.Width(150)))
    {
        // プレイヤー名で検索する
        if(!string.IsNullOrEmpty(searchPlayerName))
        {
            // コルーチンで実行
            StartCoroutine("SearchPlayer");
        }
    }
    GUILayout.EndHorizontal();
}

유저 이름을 입력하고 "Search"단추를 누르면 검색 처리에 들어갑니다.
유저 검색은 상황에 따라 시간StartCoroutine()メソッド이 필요하기 때문이다.
코르크 단백질 참조 링크
// プレイヤー検索(コルーチン).
private IEnumerator SearchPlayer()
{
    isSearchPlayer = false;

    // プレイヤー検索リスト作成
    string[] searchNameList = searchPlayerName.Split(' ');

    // 検索
    MonobitNetwork.SearchPlayers(searchNameList);

    // 見つかるまでループ
    while(!isSearchPlayer)
    {
        yield return null;
    }
}
검색 필드에 공백 구분자로 이름을 입력하여 여러 이름을 검색할 수 있습니다.string[] searchNameList = searchPlayerName.Split(' '); 유저 명칭 그룹을 생성합니다.
이 그룹을 MonobitNetwork.SearchPlayers(); 에 전송하여 검색합니다.
또한 콜틴에게 처리를 맡기고 유저를 찾을 때까지 내부를 계속 순환한다.
// プレイヤー検索結果が返ってきたときのコールバック.
public void OnUpdatedSearchPlayers()
{
    isSearchPlayer = true;
}
검색이 끝나면 OnUpdatedSearchPlayersコールバック 호출되기 때문에 로고를 진짜로 설정하고 콜딘의 순환을 통과합니다.
// 検索結果が得られたかどうか.
private bool isSearchPlayer = false;

// プレイヤー検索結果の表示.
void OnGUI_SearchPlayerResult()
{
    // 検索中なら以下無視
    if(!isSearchPlayer)
    {
        return;
    }

    GUILayout.Label("Search Result", new GUIStyle() { fontStyle = FontStyle.Bold });
    foreach(SearchPlayerData player in MonobitNetwork.SearchPlayerList)
    {
        if(!player.connect)
        {
            GUILayout.Label(player.playerName + " is offline.");
        }
        else if(!player.inRoom)
        {
            GUILayout.Label(player.playerName + " is not in room.");
        }
        else
        {
            GUILayout.Label(player.playerName + " is in " + player.roomName);

            // 参加する
            if (GUILayout.Button("Join", GUILayout.Width(150)))
            {
                MonobitNetwork.JoinRoom(player.roomName);
            }
        }
    }
}
마지막으로 결과를 가져오고 표시합니다.
실행MonobitNetwork.SearchPlayers() 후 검색OnUpdatedSearchPlayers()コールバック을 완료하면 결과는 SearchPlayerData型MonobitNetwork.SearchPlayerListプロパティ에 저장됩니다.
foreach로 목록에서 데이터를 꺼내 하나하나 검사합니다.( 참조 링크 )

참조 링크

  • Monobit Unity Networking2.0 공식 링크
  • 연골소에 관하여
  • 좋은 웹페이지 즐겨찾기