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