유니티에서 온라인 멀티플레이어 게임을 만들고 싶은 그 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
Reference
이 문제에 관하여(유니티에서 온라인 멀티플레이어 게임을 만들고 싶은 그 3 서버 연결.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koyuki2007/items/247c13603244020f6bb8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
제목 화면을 만들고 시작 단추로 서버에 연결하는 처리를 만듭니다.
그 전에
대체로 이번에 제작된 게임의 화면 이동은 상태 이동도를 만들어 보았다.
각 화면에는 서버 연결/차단, 룸 제작/입실/퇴실/등 마이그레이션에 필요한 처리도 대략적으로 표시됩니다.
만약 이런 물건을 만들었다면 설치할 때 혼란스럽지 않았을 것이다.
이번에 나는 그림에 빨간색 동그라미로 둘러싸인 부분을 설치하고 싶다.
제목 화면
※ 인상도(게임 제목이 왼쪽으로 치우쳤으니 신경 쓰지 마세요)
나는 이 인상을 바탕으로 제목 화면을 만들고 싶다.
※ 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
Reference
이 문제에 관하여(유니티에서 온라인 멀티플레이어 게임을 만들고 싶은 그 3 서버 연결.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koyuki2007/items/247c13603244020f6bb8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
※ 인상도(게임 제목이 왼쪽으로 치우쳤으니 신경 쓰지 마세요)
나는 이 인상을 바탕으로 제목 화면을 만들고 싶다.
※ 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
Reference
이 문제에 관하여(유니티에서 온라인 멀티플레이어 게임을 만들고 싶은 그 3 서버 연결.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koyuki2007/items/247c13603244020f6bb8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(유니티에서 온라인 멀티플레이어 게임을 만들고 싶은 그 3 서버 연결.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koyuki2007/items/247c13603244020f6bb8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)