유니티에서 온라인 멀티플레이어 게임을 만들고 싶은 그 3 서버 연결.

지난번에 온라인 다기능 제작을 준비했기 때문에 실제로 제작하고 싶습니다저번 보도
나는 내용을 매 기사로 나누어 쓰고 싶다.

최종 목표


로그렉× 액션 게임 만들기

이번 목표.


제목 화면을 만들고 시작 단추로 서버에 연결하는 처리를 만듭니다.

그 전에


대체로 이번에 제작된 게임의 화면 이동은 상태 이동도를 만들어 보았다.
각 화면에는 서버 연결/차단, 룸 제작/입실/퇴실/등 마이그레이션에 필요한 처리도 대략적으로 표시됩니다.
만약 이런 물건을 만들었다면 설치할 때 혼란스럽지 않았을 것이다.
이번에 나는 그림에 빨간색 동그라미로 둘러싸인 부분을 설치하고 싶다.

제목 화면


※ 인상도(게임 제목이 왼쪽으로 치우쳤으니 신경 쓰지 마세요)

나는 이 인상을 바탕으로 제목 화면을 만들고 싶다.
※ UI 등의 제작 절차는 간략하게 쓰거나 접을 수 있습니다.

제목 화면 제어


제목 화면을 제어하는 코드를 쓰십시오.
※ uGUI계는 사전 조립식이다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SceneTitle : MonoBehaviour
{
    // UIを表示するキャンバス
    private GameObject m_CanvasObj;

    // タイトルテキスト
    private GameObject m_TitleTxtObj;

    // スタートボタン
    private GameObject m_StartBtnObj;

    // 終了ボタン
    private GameObject m_ExitBtnOnj;


    // Start is called before the first frame update
    void Start()
    {
        // UIを表示するためのキャンバス
        m_CanvasObj = Instantiate(Resources.Load("Canvas")) as GameObject;

        // タイトルテキスト表示
        m_TitleTxtObj = Instantiate(Resources.Load("Text")) as GameObject;
        m_TitleTxtObj.transform.SetParent(m_CanvasObj.transform);
        m_TitleTxtObj.transform.localPosition = new Vector3(72.0f, 128.0f, 0.0f);
        m_TitleTxtObj.GetComponent<Text>().text = "Game Title";

        // スタートボタンの作成
        m_StartBtnObj = Instantiate(Resources.Load("Button")) as GameObject;
        m_StartBtnObj.transform.SetParent(m_CanvasObj.transform);
        m_StartBtnObj.transform.localPosition = new Vector3(0.0f, -80.0f, 0.0f);
        m_StartBtnObj.GetComponent<Button>().GetComponentInChildren<Text>().text = "Start";
        m_StartBtnObj.GetComponent<Button>().onClick.AddListener(OnClickStart);

        // 終了ボタンの作成
        m_ExitBtnOnj = Instantiate(Resources.Load("Button")) as GameObject;
        m_ExitBtnOnj.transform.SetParent(m_CanvasObj.transform);
        m_ExitBtnOnj.transform.localPosition = new Vector3(0.0f, -180.0f, 0.0f);
        m_ExitBtnOnj.GetComponent<Button>().GetComponentInChildren<Text>().text = "Exit";
        m_ExitBtnOnj.GetComponent<Button>().onClick.AddListener(OnClickExit);
    }

    // Update is called once per frame
    void Update()
    {

    }

    // スタートボタンが押された際に行いたい処理
    private void OnClickStart()
    {

    }

    // 終了ボタンが押された際に行いたい処理
    private void OnClickExit()
    {
#if UNITY_EDITOR
        UnityEditor.EditorApplication.isPlaying = false;

#elif UNITY_STANDALONE
        UnityEngine.Application.Quit();
#endif
    }
}
단지 uGUI를 설정하여 단추를 눌렀을 때 호출할 함수를 정의합니다.

서버 연결


그러면 우리는 MUN을 사용하여 서버에 연결하는 처리를 실시할 것이다.
우선 공식 문서에서 서버의 연결 방법을 봅시다.
http://www.monobitengine.com/doc/mun/contents/FeatureClient/ConnectToServer.htm
MonobitEngine.MonobitNetwork.ConnectServer();
이 함수만 부르면 서버에 연결할 수 있습니다.

이 연결 리셋을 사용하면 연결 여부를 확인할 수 있을 것 같습니다.
따라서 아까 코드에 서버 연결 처리와 연결 리셋을 추가합니다.
※ 변경점 이외의 부분은 생략하여 기재합니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using MonobitEngine; // MUNの機能を使うために追加します

public class SceneTitle : MonobitEngine.MonoBehaviour // 接続コールバックを利用するために、
{                                                     // UnityEngineではなくMonobitEngineのMonoBehaviourを利用する
    // スタートボタンが押された際に行いたい処理
    private void OnClickStart()
    {
        // スタートボタンが押されたときにサーバーへ接続させたい
        // 引数にはゲームのバージョンをいれてあげるといいです
        MonobitEngine.MonobitNetwork.ConnectServer("DungeonAction_v_1_0");
    }

   // MUNサーバーとの接続に成功した際に呼ばれる接続コールバック
    public void OnConnectedToMonobit()
    {
        Debug.Log("接続しました");
    }

    // サーバから切断したときに呼ばれる接続コールバック
    public void OnDisconnectedFromServer()
    {
        Debug.Log("切断しました");
    }

    // MUNサーバーとの接続に失敗した際に呼ばれる接続コールバック
    public void OnConnectToServerFailed(MonobitEngine.DisconnectCause cause)
    {
        Debug.Log("接続に失敗しました:" + cause.ToString());
    }

    // MUNサーバーとの接続後に何らかの原因で切断されたときに呼ばれる接続コールバック
    public void OnConnectionFail(MonobitEngine.DisconnectCause cause)
    {
        Debug.Log("サーバーとの接続後に何らかの原因で切断されました:" + cause.ToString());
    }

    // サーバーへの接続数が上限だった際に呼ばれる接続コールバック
    public void OnMonobitMaxConnectionReached()
    {
        Debug.Log("サーバーに接続しているクライアント数が上限に達しています");
    }
}
위의 코드로 변경한 후 시작 단추를 누르고 실행하면'연결됨'을 컨트롤러로 출력합니다.

또한 연결이 성공한 상태에서 종료 버튼을 누르면 차단이 표시됩니다.
프로그램이 끝날 때 자동으로 차단된 것 같습니다.
이제 서버에 연결할 수 있습니다.
다음에는 로비 화면과 로비를 만들어서 방에 들어가고 싶어요.

자료


http://www.monobitengine.com/doc/mun/
http://www.monobitengine.com/doc/mun/contents/FeatureClient/ConnectToServer.htm

좋은 웹페이지 즐겨찾기