mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-17 18:40:33 +00:00
parent
c2d16c6a5a
commit
22640b5e62
8
Assets/Mirror/Examples/ListServer.meta
Normal file
8
Assets/Mirror/Examples/ListServer.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e192f90e0acbb41f88dfe3dba300a5c9
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
307
Assets/Mirror/Examples/ListServer/ListServer.cs
Normal file
307
Assets/Mirror/Examples/ListServer/ListServer.cs
Normal file
@ -0,0 +1,307 @@
|
|||||||
|
// add this component to the NetworkManager
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace Mirror.Examples.Listen
|
||||||
|
{
|
||||||
|
public class ServerStatus
|
||||||
|
{
|
||||||
|
public string ip;
|
||||||
|
//public ushort port; // <- not all transports use a port. assume default port. feel free to also send a port if needed.
|
||||||
|
public string title;
|
||||||
|
public ushort players;
|
||||||
|
public ushort capacity;
|
||||||
|
|
||||||
|
public int lastLatency = -1;
|
||||||
|
public Ping ping;
|
||||||
|
|
||||||
|
public ServerStatus(string ip, /*ushort port,*/ string title, ushort players, ushort capacity)
|
||||||
|
{
|
||||||
|
this.ip = ip;
|
||||||
|
//this.port = port;
|
||||||
|
this.title = title;
|
||||||
|
this.players = players;
|
||||||
|
this.capacity = capacity;
|
||||||
|
ping = new Ping(ip);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[RequireComponent(typeof(NetworkManager))]
|
||||||
|
public class ListServer : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("Listen Server Connection")]
|
||||||
|
public string listServerIp = "127.0.0.1";
|
||||||
|
public ushort gameServerToListenPort = 8887;
|
||||||
|
public ushort clientToListenPort = 8888;
|
||||||
|
public string gameServerTitle = "Deathmatch";
|
||||||
|
|
||||||
|
Telepathy.Client gameServerToListenConnection = new Telepathy.Client();
|
||||||
|
Telepathy.Client clientToListenConnection = new Telepathy.Client();
|
||||||
|
|
||||||
|
[Header("UI")]
|
||||||
|
public GameObject mainPanel;
|
||||||
|
public Transform content;
|
||||||
|
public UIServerStatusSlot slotPrefab;
|
||||||
|
public Button serverAndPlayButton;
|
||||||
|
public Button serverOnlyButton;
|
||||||
|
public GameObject connectingPanel;
|
||||||
|
public Text connectingText;
|
||||||
|
public Button connectingCancelButton;
|
||||||
|
int connectingDots = 0;
|
||||||
|
|
||||||
|
// all the servers, stored as dict with unique ip key so we can
|
||||||
|
// update them more easily
|
||||||
|
// (use "ip:port" if port is needed)
|
||||||
|
Dictionary<string, ServerStatus> list = new Dictionary<string, ServerStatus>();
|
||||||
|
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
// examples
|
||||||
|
//list["127.0.0.1"] = new ServerStatus("127.0.0.1", "Deathmatch", 3, 10);
|
||||||
|
//list["192.168.0.1"] = new ServerStatus("192.168.0.1", "Free for all", 7, 10);
|
||||||
|
//list["172.217.22.3"] = new ServerStatus("172.217.22.3", "5vs5", 10, 10);
|
||||||
|
//list["172.217.16.142"] = new ServerStatus("172.217.16.142", "Hide & Seek Mod", 0, 10);
|
||||||
|
|
||||||
|
// Update once a second. no need to try to reconnect or read data
|
||||||
|
// in each Update call
|
||||||
|
// -> calling it more than 1/second would also cause significantly
|
||||||
|
// more broadcasts in the list server.
|
||||||
|
InvokeRepeating(nameof(Tick), 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsConnecting() => NetworkClient.active && !ClientScene.ready;
|
||||||
|
bool FullyConnected() => NetworkClient.active && ClientScene.ready;
|
||||||
|
|
||||||
|
// should we use the client to listen connection?
|
||||||
|
bool UseClientToListen()
|
||||||
|
{
|
||||||
|
return !NetworkManager.IsHeadless() && !NetworkServer.active && !FullyConnected();
|
||||||
|
}
|
||||||
|
|
||||||
|
// should we use the game server to listen connection?
|
||||||
|
bool UseGameServerToListen()
|
||||||
|
{
|
||||||
|
return NetworkServer.active;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Tick()
|
||||||
|
{
|
||||||
|
TickGameServer();
|
||||||
|
TickClient();
|
||||||
|
}
|
||||||
|
|
||||||
|
// send server status to list server
|
||||||
|
void SendStatus()
|
||||||
|
{
|
||||||
|
BinaryWriter writer = new BinaryWriter(new MemoryStream());
|
||||||
|
|
||||||
|
// create message
|
||||||
|
// NOTE: you can send anything that you want, as long as you also
|
||||||
|
// receive it in ParseMessage
|
||||||
|
char[] titleChars = gameServerTitle.ToCharArray();
|
||||||
|
writer.Write((ushort)titleChars.Length);
|
||||||
|
writer.Write(titleChars);
|
||||||
|
writer.Write((ushort)NetworkServer.connections.Count);
|
||||||
|
writer.Write((ushort)NetworkManager.singleton.maxConnections);
|
||||||
|
|
||||||
|
// send it
|
||||||
|
writer.Flush();
|
||||||
|
gameServerToListenConnection.Send(((MemoryStream)writer.BaseStream).ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
void TickGameServer()
|
||||||
|
{
|
||||||
|
// send server data to listen
|
||||||
|
if (UseGameServerToListen())
|
||||||
|
{
|
||||||
|
// connected yet?
|
||||||
|
if (gameServerToListenConnection.Connected)
|
||||||
|
{
|
||||||
|
SendStatus();
|
||||||
|
}
|
||||||
|
// otherwise try to connect
|
||||||
|
// (we may have just started the game)
|
||||||
|
else if (!gameServerToListenConnection.Connecting)
|
||||||
|
{
|
||||||
|
Debug.Log("Establishing game server to listen connection...");
|
||||||
|
gameServerToListenConnection.Connect(listServerIp, gameServerToListenPort);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// shouldn't use game server, but still using it?
|
||||||
|
else if (gameServerToListenConnection.Connected)
|
||||||
|
{
|
||||||
|
gameServerToListenConnection.Disconnect();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ParseMessage(byte[] bytes)
|
||||||
|
{
|
||||||
|
// use binary reader because our NetworkReader uses custom string reading with bools
|
||||||
|
// => we don't use ReadString here because the listen server doesn't
|
||||||
|
// know C#'s '7-bit-length + utf8' encoding for strings
|
||||||
|
BinaryReader reader = new BinaryReader(new MemoryStream(bytes, false), Encoding.UTF8);
|
||||||
|
ushort ipLength = reader.ReadUInt16();
|
||||||
|
string ip = new string(reader.ReadChars(ipLength));
|
||||||
|
//ushort port = reader.ReadUInt16(); <- not all Transports use a port. assume default.
|
||||||
|
ushort titleLength = reader.ReadUInt16();
|
||||||
|
string title = new string(reader.ReadChars(titleLength));
|
||||||
|
ushort players = reader.ReadUInt16();
|
||||||
|
ushort capacity = reader.ReadUInt16();
|
||||||
|
//Debug.Log("PARSED: ip=" + ip + /*" port=" + port +*/ " title=" + title + " players=" + players + " capacity= " + capacity);
|
||||||
|
|
||||||
|
// build key
|
||||||
|
string key = ip/* + ":" + port*/;
|
||||||
|
|
||||||
|
// find existing or create new one
|
||||||
|
ServerStatus server;
|
||||||
|
if (list.TryGetValue(key, out server))
|
||||||
|
{
|
||||||
|
// refresh
|
||||||
|
server.title = title;
|
||||||
|
server.players = players;
|
||||||
|
server.capacity = capacity;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// create
|
||||||
|
server = new ServerStatus(ip, /*port,*/ title, players, capacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
// save
|
||||||
|
list[key] = server;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TickClient()
|
||||||
|
{
|
||||||
|
// receive client data from listen
|
||||||
|
if (UseClientToListen())
|
||||||
|
{
|
||||||
|
// connected yet?
|
||||||
|
if (clientToListenConnection.Connected)
|
||||||
|
{
|
||||||
|
// receive latest game server info
|
||||||
|
while (clientToListenConnection.GetNextMessage(out Telepathy.Message message))
|
||||||
|
{
|
||||||
|
// data message?
|
||||||
|
if (message.eventType == Telepathy.EventType.Data)
|
||||||
|
ParseMessage(message.data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ping again if previous ping finished
|
||||||
|
foreach (ServerStatus server in list.Values)
|
||||||
|
{
|
||||||
|
if (server.ping.isDone)
|
||||||
|
{
|
||||||
|
server.lastLatency = server.ping.time;
|
||||||
|
server.ping = new Ping(server.ip);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// otherwise try to connect
|
||||||
|
// (we may have just joined the menu/disconnect from game server)
|
||||||
|
else if (!clientToListenConnection.Connecting)
|
||||||
|
{
|
||||||
|
Debug.Log("Establishing client to listen connection...");
|
||||||
|
clientToListenConnection.Connect(listServerIp, clientToListenPort);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// shouldn't use client, but still using it? (e.g. after joining)
|
||||||
|
else if (clientToListenConnection.Connected)
|
||||||
|
{
|
||||||
|
clientToListenConnection.Disconnect();
|
||||||
|
list.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
// refresh UI afterwards
|
||||||
|
OnUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
// instantiate/remove enough prefabs to match amount
|
||||||
|
public static void BalancePrefabs(GameObject prefab, int amount, Transform parent)
|
||||||
|
{
|
||||||
|
// instantiate until amount
|
||||||
|
for (int i = parent.childCount; i < amount; ++i)
|
||||||
|
{
|
||||||
|
GameObject go = GameObject.Instantiate(prefab);
|
||||||
|
go.transform.SetParent(parent, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete everything that's too much
|
||||||
|
// (backwards loop because Destroy changes childCount)
|
||||||
|
for (int i = parent.childCount-1; i >= amount; --i)
|
||||||
|
GameObject.Destroy(parent.GetChild(i).gameObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnUI()
|
||||||
|
{
|
||||||
|
// only show while client not connected and server not started
|
||||||
|
if (!NetworkManager.singleton.isNetworkActive || IsConnecting())
|
||||||
|
{
|
||||||
|
mainPanel.SetActive(true);
|
||||||
|
|
||||||
|
// instantiate/destroy enough slots
|
||||||
|
BalancePrefabs(slotPrefab.gameObject, list.Count, content);
|
||||||
|
|
||||||
|
// refresh all members
|
||||||
|
for (int i = 0; i < list.Values.Count; ++i)
|
||||||
|
{
|
||||||
|
UIServerStatusSlot slot = content.GetChild(i).GetComponent<UIServerStatusSlot>();
|
||||||
|
ServerStatus server = list.Values.ToList()[i];
|
||||||
|
slot.titleText.text = server.title;
|
||||||
|
slot.playersText.text = server.players + "/" + server.capacity;
|
||||||
|
slot.latencyText.text = server.lastLatency != -1 ? server.lastLatency.ToString() : "...";
|
||||||
|
slot.addressText.text = server.ip;
|
||||||
|
slot.joinButton.interactable = !IsConnecting();
|
||||||
|
slot.joinButton.gameObject.SetActive(server.players < server.capacity);
|
||||||
|
slot.joinButton.onClick.RemoveAllListeners();
|
||||||
|
slot.joinButton.onClick.AddListener(() => {
|
||||||
|
NetworkManager.singleton.networkAddress = server.ip;
|
||||||
|
NetworkManager.singleton.StartClient();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// server buttons
|
||||||
|
serverAndPlayButton.interactable = !IsConnecting();
|
||||||
|
serverAndPlayButton.onClick.RemoveAllListeners();
|
||||||
|
serverAndPlayButton.onClick.AddListener(() => {
|
||||||
|
NetworkManager.singleton.StartHost();
|
||||||
|
});
|
||||||
|
|
||||||
|
serverOnlyButton.interactable = !IsConnecting();
|
||||||
|
serverOnlyButton.onClick.RemoveAllListeners();
|
||||||
|
serverOnlyButton.onClick.AddListener(() => {
|
||||||
|
NetworkManager.singleton.StartServer();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else mainPanel.SetActive(false);
|
||||||
|
|
||||||
|
// show connecting panel while connecting
|
||||||
|
if (IsConnecting())
|
||||||
|
{
|
||||||
|
connectingPanel.SetActive(true);
|
||||||
|
|
||||||
|
// . => .. => ... => ....
|
||||||
|
connectingDots = ((connectingDots + 1) % 4);
|
||||||
|
connectingText.text = "Connecting" + new string('.', connectingDots);
|
||||||
|
|
||||||
|
// cancel button
|
||||||
|
connectingCancelButton.onClick.RemoveAllListeners();
|
||||||
|
connectingCancelButton.onClick.AddListener(NetworkManager.singleton.StopClient);
|
||||||
|
}
|
||||||
|
else connectingPanel.SetActive(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// disconnect everything when pressing Stop in the Editor
|
||||||
|
void OnApplicationQuit()
|
||||||
|
{
|
||||||
|
if (gameServerToListenConnection.Connected)
|
||||||
|
gameServerToListenConnection.Disconnect();
|
||||||
|
if (clientToListenConnection.Connected)
|
||||||
|
clientToListenConnection.Disconnect();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
Assets/Mirror/Examples/ListServer/ListServer.cs.meta
Normal file
11
Assets/Mirror/Examples/ListServer/ListServer.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 69f796b44735c414783d66f47b150c5f
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
Assets/Mirror/Examples/ListServer/Scenes.meta
Normal file
8
Assets/Mirror/Examples/ListServer/Scenes.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9826d673f42ad4c59b8fc27ae86729e1
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/Mirror/Examples/ListServer/Scenes/NavMesh.asset
Normal file
BIN
Assets/Mirror/Examples/ListServer/Scenes/NavMesh.asset
Normal file
Binary file not shown.
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b7816657e55c04901be36ace7275ad85
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 23800000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
3387
Assets/Mirror/Examples/ListServer/Scenes/Scene.unity
Normal file
3387
Assets/Mirror/Examples/ListServer/Scenes/Scene.unity
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ccdea83d270df4b078963a0243e41ac0
|
||||||
|
timeCreated: 1426587410
|
||||||
|
licenseType: Free
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
Assets/Mirror/Examples/ListServer/UI.meta
Normal file
8
Assets/Mirror/Examples/ListServer/UI.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8d7b75cc57dee4425af050c10508257a
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
651
Assets/Mirror/Examples/ListServer/UI/ServerStatusSlot.prefab
Normal file
651
Assets/Mirror/Examples/ListServer/UI/ServerStatusSlot.prefab
Normal file
@ -0,0 +1,651 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &1009505356919436
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 224428085307354514}
|
||||||
|
- component: {fileID: 222534217462828066}
|
||||||
|
- component: {fileID: 114077992825021022}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: TextPlayers
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &224428085307354514
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1009505356919436}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 224813910264502154}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 60, y: 16}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &222534217462828066
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1009505356919436}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &114077992825021022
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1009505356919436}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_FontData:
|
||||||
|
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_FontSize: 12
|
||||||
|
m_FontStyle: 0
|
||||||
|
m_BestFit: 0
|
||||||
|
m_MinSize: 1
|
||||||
|
m_MaxSize: 40
|
||||||
|
m_Alignment: 5
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 1
|
||||||
|
m_HorizontalOverflow: 0
|
||||||
|
m_VerticalOverflow: 0
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: '[Players]'
|
||||||
|
--- !u!1 &1165846264137056
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 224595697833923954}
|
||||||
|
- component: {fileID: 222565095748274674}
|
||||||
|
- component: {fileID: 114410999938197916}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: TextLatency
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &224595697833923954
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1165846264137056}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 224813910264502154}
|
||||||
|
m_RootOrder: 2
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 60, y: 16}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &222565095748274674
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1165846264137056}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &114410999938197916
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1165846264137056}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_FontData:
|
||||||
|
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_FontSize: 12
|
||||||
|
m_FontStyle: 0
|
||||||
|
m_BestFit: 0
|
||||||
|
m_MinSize: 1
|
||||||
|
m_MaxSize: 40
|
||||||
|
m_Alignment: 5
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 1
|
||||||
|
m_HorizontalOverflow: 0
|
||||||
|
m_VerticalOverflow: 0
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: '[Latency]'
|
||||||
|
--- !u!1 &1259177336467004
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 224813910264502154}
|
||||||
|
- component: {fileID: 222443701544564472}
|
||||||
|
- component: {fileID: 114424214131292870}
|
||||||
|
- component: {fileID: 114617214395066132}
|
||||||
|
- component: {fileID: 114618400118094574}
|
||||||
|
- component: {fileID: 114611570997501482}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: ServerStatusSlot
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &224813910264502154
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1259177336467004}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 224596263305646570}
|
||||||
|
- {fileID: 224428085307354514}
|
||||||
|
- {fileID: 224595697833923954}
|
||||||
|
- {fileID: 2588874080615256095}
|
||||||
|
- {fileID: 224530003443674914}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &222443701544564472
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1259177336467004}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &114424214131292870
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1259177336467004}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 0.2509804, g: 0.2509804, b: 0.2509804, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
--- !u!114 &114617214395066132
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1259177336467004}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_HorizontalFit: 0
|
||||||
|
m_VerticalFit: 2
|
||||||
|
--- !u!114 &114618400118094574
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1259177336467004}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Padding:
|
||||||
|
m_Left: 4
|
||||||
|
m_Right: 2
|
||||||
|
m_Top: 1
|
||||||
|
m_Bottom: 1
|
||||||
|
m_ChildAlignment: 0
|
||||||
|
m_Spacing: 0
|
||||||
|
m_ChildForceExpandWidth: 0
|
||||||
|
m_ChildForceExpandHeight: 0
|
||||||
|
m_ChildControlWidth: 0
|
||||||
|
m_ChildControlHeight: 0
|
||||||
|
--- !u!114 &114611570997501482
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1259177336467004}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 7f24d39c9182b4098bcfd0c2546d0bf2, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
titleText: {fileID: 114105517410707240}
|
||||||
|
playersText: {fileID: 114077992825021022}
|
||||||
|
latencyText: {fileID: 114410999938197916}
|
||||||
|
addressText: {fileID: 1711666012325280996}
|
||||||
|
joinButton: {fileID: 114358377111651776}
|
||||||
|
--- !u!1 &1368168976437814
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 224596263305646570}
|
||||||
|
- component: {fileID: 222703717971346548}
|
||||||
|
- component: {fileID: 114105517410707240}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: TextTitle
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &224596263305646570
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1368168976437814}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 224813910264502154}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 218, y: 16}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &222703717971346548
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1368168976437814}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &114105517410707240
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1368168976437814}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_FontData:
|
||||||
|
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_FontSize: 12
|
||||||
|
m_FontStyle: 0
|
||||||
|
m_BestFit: 0
|
||||||
|
m_MinSize: 1
|
||||||
|
m_MaxSize: 40
|
||||||
|
m_Alignment: 3
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 1
|
||||||
|
m_HorizontalOverflow: 0
|
||||||
|
m_VerticalOverflow: 0
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: '[Title]'
|
||||||
|
--- !u!1 &1462871638010074
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 224530003443674914}
|
||||||
|
- component: {fileID: 222322555260831376}
|
||||||
|
- component: {fileID: 114653458098104780}
|
||||||
|
- component: {fileID: 114358377111651776}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: ButtonJoin
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &224530003443674914
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1462871638010074}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 224615151935076648}
|
||||||
|
m_Father: {fileID: 224813910264502154}
|
||||||
|
m_RootOrder: 4
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 40, y: 18}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &222322555260831376
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1462871638010074}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &114653458098104780
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1462871638010074}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
--- !u!114 &114358377111651776
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1462871638010074}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Navigation:
|
||||||
|
m_Mode: 3
|
||||||
|
m_SelectOnUp: {fileID: 0}
|
||||||
|
m_SelectOnDown: {fileID: 0}
|
||||||
|
m_SelectOnLeft: {fileID: 0}
|
||||||
|
m_SelectOnRight: {fileID: 0}
|
||||||
|
m_Transition: 1
|
||||||
|
m_Colors:
|
||||||
|
m_NormalColor: {r: 0.32156864, g: 0.32156864, b: 0.32156864, a: 1}
|
||||||
|
m_HighlightedColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1}
|
||||||
|
m_PressedColor: {r: 0.3882353, g: 0.3882353, b: 0.3882353, a: 1}
|
||||||
|
m_DisabledColor: {r: 0.3882353, g: 0.3882353, b: 0.3882353, a: 0.37254903}
|
||||||
|
m_ColorMultiplier: 1
|
||||||
|
m_FadeDuration: 0.1
|
||||||
|
m_SpriteState:
|
||||||
|
m_HighlightedSprite: {fileID: 0}
|
||||||
|
m_PressedSprite: {fileID: 0}
|
||||||
|
m_DisabledSprite: {fileID: 0}
|
||||||
|
m_AnimationTriggers:
|
||||||
|
m_NormalTrigger: Normal
|
||||||
|
m_HighlightedTrigger: Highlighted
|
||||||
|
m_PressedTrigger: Pressed
|
||||||
|
m_DisabledTrigger: Disabled
|
||||||
|
m_Interactable: 1
|
||||||
|
m_TargetGraphic: {fileID: 114653458098104780}
|
||||||
|
m_OnClick:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
|
||||||
|
Culture=neutral, PublicKeyToken=null
|
||||||
|
--- !u!1 &1575165076438694
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 224615151935076648}
|
||||||
|
- component: {fileID: 222903696298421472}
|
||||||
|
- component: {fileID: 114447744505293664}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Text
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &224615151935076648
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1575165076438694}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 224530003443674914}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &222903696298421472
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1575165076438694}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &114447744505293664
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1575165076438694}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_FontData:
|
||||||
|
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_FontSize: 12
|
||||||
|
m_FontStyle: 0
|
||||||
|
m_BestFit: 0
|
||||||
|
m_MinSize: 1
|
||||||
|
m_MaxSize: 40
|
||||||
|
m_Alignment: 4
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 1
|
||||||
|
m_HorizontalOverflow: 0
|
||||||
|
m_VerticalOverflow: 0
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: Join
|
||||||
|
--- !u!1 &2231260898927249423
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2588874080615256095}
|
||||||
|
- component: {fileID: 2389080155505640677}
|
||||||
|
- component: {fileID: 1711666012325280996}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: TextAddress
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2588874080615256095
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2231260898927249423}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 224813910264502154}
|
||||||
|
m_RootOrder: 3
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 130, y: 16}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &2389080155505640677
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2231260898927249423}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &1711666012325280996
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2231260898927249423}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_FontData:
|
||||||
|
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_FontSize: 12
|
||||||
|
m_FontStyle: 0
|
||||||
|
m_BestFit: 0
|
||||||
|
m_MinSize: 1
|
||||||
|
m_MaxSize: 40
|
||||||
|
m_Alignment: 5
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 1
|
||||||
|
m_HorizontalOverflow: 0
|
||||||
|
m_VerticalOverflow: 0
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: '[Address]'
|
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 611330311f6094567ad2f8012b470129
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
13
Assets/Mirror/Examples/ListServer/UI/UIServerStatusSlot.cs
Normal file
13
Assets/Mirror/Examples/ListServer/UI/UIServerStatusSlot.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
// Attach to the prefab for easier component access by the UI Scripts.
|
||||||
|
// Otherwise we would need slot.GetChild(0).GetComponentInChildren<Text> etc.
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
public class UIServerStatusSlot : MonoBehaviour
|
||||||
|
{
|
||||||
|
public Text titleText;
|
||||||
|
public Text playersText;
|
||||||
|
public Text latencyText;
|
||||||
|
public Text addressText;
|
||||||
|
public Button joinButton;
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7f24d39c9182b4098bcfd0c2546d0bf2
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -5,3 +5,4 @@ EditorBuildSettings:
|
|||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Scenes: []
|
m_Scenes: []
|
||||||
|
m_configObjects: {}
|
||||||
|
Loading…
Reference in New Issue
Block a user