feat: beginning to implement an online lobby in the main menu with fishnet
This commit is contained in:
parent
94863a7eb5
commit
0b14b754b4
8
Assets/Prefabs/Multiplayer.meta
Normal file
8
Assets/Prefabs/Multiplayer.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f2e5203152d671b4b9decf6d5ecf4a8f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
208
Assets/Prefabs/Multiplayer/NetworkManager.prefab
Normal file
208
Assets/Prefabs/Multiplayer/NetworkManager.prefab
Normal file
@ -0,0 +1,208 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &7443408887813606051
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7443408887813606049}
|
||||
- component: {fileID: 7443408887813606050}
|
||||
- component: {fileID: 934570884}
|
||||
- component: {fileID: 7443408887813606060}
|
||||
m_Layer: 0
|
||||
m_Name: NetworkManager
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &7443408887813606049
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7443408887813606051}
|
||||
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: 4393252310584637084}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &7443408887813606050
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7443408887813606051}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d2c95dfde7d73b54dbbdc23155d35d36, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_logging: {fileID: 0}
|
||||
_spawnablePrefabs: {fileID: 11400000, guid: ec64eb18c93ab344892891f33edbf82a, type: 2}
|
||||
_refreshDefaultPrefabs: 0
|
||||
_runInBackground: 1
|
||||
_dontDestroyOnLoad: 1
|
||||
_persistence: 0
|
||||
--- !u!114 &934570884
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7443408887813606051}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 7d331f979d46e8e4a9fc90070c596d44, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_defaultConditions:
|
||||
- {fileID: 11400000, guid: 2033f54fd2794464bae08fa5a55c8996, type: 2}
|
||||
--- !u!114 &7443408887813606060
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7443408887813606051}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 211a9f6ec51ddc14f908f5acc0cd0423, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_playerPrefab: {fileID: 0}
|
||||
_addToDefaultScene: 1
|
||||
Spawns: []
|
||||
--- !u!1001 &2130063410
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 7443408887813606049}
|
||||
m_Modifications:
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4393252310969058995, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: NetworkHudCanvas
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
|
||||
--- !u!224 &4393252310584637084 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 2130063410}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
7
Assets/Prefabs/Multiplayer/NetworkManager.prefab.meta
Normal file
7
Assets/Prefabs/Multiplayer/NetworkManager.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0b650fca685f2eb41a86538aa883e4c1
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
104
Assets/Prefabs/Multiplayer/SSOLobby.prefab
Normal file
104
Assets/Prefabs/Multiplayer/SSOLobby.prefab
Normal file
@ -0,0 +1,104 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &1637189641542276332
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 922071417191856395}
|
||||
- component: {fileID: 6527384552577148640}
|
||||
- component: {fileID: 1367685490385930048}
|
||||
- component: {fileID: -5295043410836352606}
|
||||
m_Layer: 0
|
||||
m_Name: SSOLobby
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &922071417191856395
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1637189641542276332}
|
||||
serializedVersion: 2
|
||||
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_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &6527384552577148640
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1637189641542276332}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
<IsNested>k__BackingField: 0
|
||||
<ComponentIndex>k__BackingField: 0
|
||||
<PredictedSpawn>k__BackingField: {fileID: 0}
|
||||
_networkBehaviours: []
|
||||
<SerializedRootNetworkBehaviour>k__BackingField: {fileID: 0}
|
||||
<NestedRootNetworkBehaviours>k__BackingField: []
|
||||
SerializedTransformProperties:
|
||||
Position: {x: -9.091714, y: -0.83495903, z: 37.68543}
|
||||
Rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
LocalScale: {x: 1, y: 1, z: 1}
|
||||
_isNetworked: 1
|
||||
_isSpawnable: 1
|
||||
_isGlobal: 0
|
||||
_initializeOrder: 0
|
||||
_defaultDespawnType: 0
|
||||
NetworkObserver: {fileID: 0}
|
||||
_enablePrediction: 0
|
||||
_predictionType: 0
|
||||
_graphicalObject: {fileID: 0}
|
||||
_enableStateForwarding: 1
|
||||
_networkTransform: {fileID: 0}
|
||||
_ownerInterpolation: 1
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 11
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
_scenePathHash: 1455445497
|
||||
<SceneId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 16185758033927324700
|
||||
--- !u!114 &1367685490385930048
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1637189641542276332}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c71fd7f855ec523429999fc4e14a1928, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_overrideType: 3
|
||||
_updateHostVisibility: 1
|
||||
_observerConditions: []
|
||||
--- !u!114 &-5295043410836352606
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1637189641542276332}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5aee3998d0d63994e944a61ed8c59784, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
7
Assets/Prefabs/Multiplayer/SSOLobby.prefab.meta
Normal file
7
Assets/Prefabs/Multiplayer/SSOLobby.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7b71eecaf6568a847b4b8415852f9e98
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
4121
Assets/Scenes/OnlineLobby.unity
Normal file
4121
Assets/Scenes/OnlineLobby.unity
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Scenes/OnlineLobby.unity.meta
Normal file
7
Assets/Scenes/OnlineLobby.unity.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c6e60c70adfdd0d47bfd941e56fab716
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Scripts/Multiplayer.meta
Normal file
8
Assets/Scripts/Multiplayer.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4442b78d089cca44193d1597cc1b8f4d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
21
Assets/Scripts/Multiplayer/LobbyManager.cs
Normal file
21
Assets/Scripts/Multiplayer/LobbyManager.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class LobbyManager : MonoBehaviour
|
||||
{
|
||||
#region Fields
|
||||
private SSOLobby lobby;
|
||||
#endregion
|
||||
#region Init
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Locator.RegisterService<LobbyManager>(this);
|
||||
}
|
||||
|
||||
public void InitClient(SSOLobby lobby)
|
||||
{
|
||||
this.lobby = lobby;
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
11
Assets/Scripts/Multiplayer/LobbyManager.cs.meta
Normal file
11
Assets/Scripts/Multiplayer/LobbyManager.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5bc412a4b00206945ada9fb37d31501c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
35
Assets/Scripts/Multiplayer/Locator.cs
Normal file
35
Assets/Scripts/Multiplayer/Locator.cs
Normal file
@ -0,0 +1,35 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using log4net;
|
||||
using System.Reflection;
|
||||
public static class Locator
|
||||
{
|
||||
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private static readonly Dictionary<Type, object> services = new();
|
||||
public static void RegisterService<T>(T service)
|
||||
{
|
||||
Type serviceType = typeof(T);
|
||||
if (!services.ContainsKey(serviceType))
|
||||
{
|
||||
services.Add(serviceType, service);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.Warn($"Service of type {serviceType} is alreade registered.");
|
||||
}
|
||||
}
|
||||
|
||||
public static T GetService<T>()
|
||||
{
|
||||
Type serviceType = typeof(T);
|
||||
if (services.TryGetValue(serviceType, out var service))
|
||||
{
|
||||
return (T)service;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.Error($"Service of type {serviceType} not registered.using System.Collections");
|
||||
throw new KeyNotFoundException($"Service of type {serviceType} not registered.using System.Collections");
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/Scripts/Multiplayer/Locator.cs.meta
Normal file
11
Assets/Scripts/Multiplayer/Locator.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b3859cbdeed05145a0526bc5a346eff
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
66
Assets/Scripts/Multiplayer/SSOLobby.cs
Normal file
66
Assets/Scripts/Multiplayer/SSOLobby.cs
Normal file
@ -0,0 +1,66 @@
|
||||
using System;
|
||||
using FishNet;
|
||||
using FishNet.Connection;
|
||||
using FishNet.Managing.Scened;
|
||||
using FishNet.Object;
|
||||
using FishNet.Transporting;
|
||||
using UnityEngine;
|
||||
|
||||
public class SSOLobby : NetworkBehaviour
|
||||
{
|
||||
#region Init & Update
|
||||
void Start()
|
||||
{
|
||||
Locator.RegisterService<SSOLobby>(this);
|
||||
|
||||
// Register connection state events
|
||||
InstanceFinder.ServerManager.OnServerConnectionState += OnServerStateChanged;
|
||||
InstanceFinder.ServerManager.OnRemoteConnectionState += OnClienStateChanged;
|
||||
InstanceFinder.ClientManager.OnClientConnectionState += OnLocalClientStateChanged;
|
||||
|
||||
base.NetworkManager.SceneManager.OnLoadEnd += OnClientLoadedScene;
|
||||
base.NetworkManager.SceneManager.OnClientPresenceChangeEnd += OnClientSceneState;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public override void OnStartClient()
|
||||
{
|
||||
Locator.GetService<LobbyManager>().InitClient(this);
|
||||
}
|
||||
public override void OnStopServer()
|
||||
{
|
||||
base.OnStopServer();
|
||||
base.NetworkManager.SceneManager.OnLoadEnd -= OnClientLoadedScene;
|
||||
base.NetworkManager.SceneManager.OnClientPresenceChangeEnd -= OnClientSceneState;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Events
|
||||
private void OnClientSceneState(ClientPresenceChangeEventArgs args)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private void OnClientLoadedScene(SceneLoadEndEventArgs args)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private void OnLocalClientStateChanged(ClientConnectionStateArgs args)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private void OnClienStateChanged(NetworkConnection connection, RemoteConnectionStateArgs args)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private void OnServerStateChanged(ServerConnectionStateArgs args)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
11
Assets/Scripts/Multiplayer/SSOLobby.cs.meta
Normal file
11
Assets/Scripts/Multiplayer/SSOLobby.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5aee3998d0d63994e944a61ed8c59784
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
57
Assets/Scripts/Multiplayer/StartUp.cs
Normal file
57
Assets/Scripts/Multiplayer/StartUp.cs
Normal file
@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using FishNet.Managing;
|
||||
using FishNet.Object;
|
||||
using FishNet.Transporting;
|
||||
using FishNet.Transporting.Multipass;
|
||||
using FishNet.Transporting.Tugboat;
|
||||
using log4net;
|
||||
using Unity.VisualScripting;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
public class StartUp : MonoBehaviour
|
||||
{
|
||||
#region Fields
|
||||
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
[SerializeField] private NetworkObject lobbyNetworkPrefab;
|
||||
private NetworkManager networkManager;
|
||||
#endregion
|
||||
|
||||
private void Start()
|
||||
{
|
||||
networkManager = GetComponent<NetworkManager>();
|
||||
Multipass mp = GetComponent<Multipass>();
|
||||
#if UNITY_WEBGL && !UNITY_EDITOR
|
||||
mp.SetClientTransport<Bayou>();
|
||||
#else
|
||||
mp.SetClientTransport<Tugboat>();
|
||||
#endif
|
||||
networkManager.ServerManager.OnServerConnectionState += ServerStateChanged;
|
||||
|
||||
}
|
||||
|
||||
#region Events
|
||||
private void ServerStateChanged(ServerConnectionStateArgs args)
|
||||
{
|
||||
if (args.ConnectionState != LocalConnectionState.Started)
|
||||
{
|
||||
Log.Debug("Server not yet started.");
|
||||
return;
|
||||
}
|
||||
if (!networkManager.ServerManager.OneServerStarted())
|
||||
{
|
||||
Log.Info("More than one server available.");
|
||||
return;
|
||||
}
|
||||
|
||||
Log.Debug("Instantiating networked lobby.");
|
||||
|
||||
NetworkObject nob = Instantiate(lobbyNetworkPrefab);
|
||||
// TODO: Might not be necessary
|
||||
Scene scene = SceneManager.GetSceneByName("OnlineLobby");
|
||||
SceneManager.MoveGameObjectToScene(nob.gameObject, scene);
|
||||
networkManager.ServerManager.Spawn(nob.gameObject);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
11
Assets/Scripts/Multiplayer/StartUp.cs.meta
Normal file
11
Assets/Scripts/Multiplayer/StartUp.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ebee11279046f334d88e559c5c2ff08e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Loading…
Reference in New Issue
Block a user