feat: (work in progress) online multiplayer lobby with fishnet

This commit is contained in:
Jakob Feldmann 2024-05-07 19:36:56 +02:00
parent 0b14b754b4
commit 58aaa8deff
22 changed files with 2408 additions and 1426 deletions

8
.vscode/launch.json vendored
View File

@ -2,9 +2,15 @@
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Unity",
"name": "Attach to Unity Editor",
"type": "vstuc",
"request": "attach"
},
{
"name": "Attach to Unity Build",
"type": "vstuc",
"request": "attach",
"endPoint": "127.0.0.1:56493"
}
]
}

View File

@ -13,6 +13,7 @@ MonoBehaviour:
m_Name: DefaultPrefabObjects
m_EditorClassIdentifier:
_prefabs:
- {fileID: 6141811525297683108, guid: abf4376f1c6f28241b1125c0eac87199, type: 3}
- {fileID: 6527384552577148640, guid: 7b71eecaf6568a847b4b8415852f9e98, type: 3}
- {fileID: 4320456058255827552, guid: 65cd4fa5e050652409dd9b062365c7e8, type: 3}
- {fileID: 394654179909484550, guid: 9f3e27e33167d704e941e42ded557111, type: 3}

View File

@ -28,9 +28,9 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -1}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4393252311501663115}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@ -60,6 +60,7 @@ MonoBehaviour:
m_Material: {fileID: 0}
m_Color: {r: 0.25490198, g: 0.25490198, b: 0.25490198, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
@ -104,11 +105,11 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 4393252311652982283}
- {fileID: 4393252311501663115}
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}
@ -127,7 +128,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 6d3606bfdac5a4743890fc1a5ecd8f24, type: 3}
m_Name:
m_EditorClassIdentifier:
AutoStart: 0
_autoStartType: 0
_stoppedColor: {r: 0.25490198, g: 0.25490198, b: 0.25490198, a: 1}
_changingColor: {r: 0.78431374, g: 0.6862745, b: 0, a: 1}
_startedColor: {r: 0, g: 0.5882353, b: 0.64705884, a: 1}
@ -150,7 +151,9 @@ Canvas:
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 0
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
@ -176,6 +179,7 @@ MonoBehaviour:
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!114 &4393252310969058989
MonoBehaviour:
m_ObjectHideFlags: 0
@ -222,10 +226,10 @@ RectTransform:
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:
- {fileID: 9139860296052841449}
m_Father: {fileID: 4393252310969058990}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
@ -255,6 +259,7 @@ MonoBehaviour:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
@ -283,6 +288,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
@ -313,6 +319,7 @@ MonoBehaviour:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 4393252310969058994}
m_TargetAssemblyTypeName:
m_MethodName: OnClick_Client
m_Mode: 1
m_Arguments:
@ -352,10 +359,10 @@ RectTransform:
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:
- {fileID: 7233259200663826443}
m_Father: {fileID: 4393252310969058990}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
@ -385,6 +392,7 @@ MonoBehaviour:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
@ -413,6 +421,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
@ -443,6 +452,7 @@ MonoBehaviour:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 4393252310969058994}
m_TargetAssemblyTypeName:
m_MethodName: OnClick_Server
m_Mode: 1
m_Arguments:
@ -481,9 +491,9 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -1}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4393252311652982283}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@ -513,6 +523,7 @@ MonoBehaviour:
m_Material: {fileID: 0}
m_Color: {r: 0.25490198, g: 0.25490198, b: 0.25490198, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:

View File

@ -0,0 +1,92 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3802985406936712805
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 926952496977333823}
- component: {fileID: 171993714235241304}
- component: {fileID: 6141811525297683108}
m_Layer: 0
m_Name: Client Instance
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &926952496977333823
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3802985406936712805}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -51.775536, y: 0.6793438, z: -2.5173702}
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 &171993714235241304
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3802985406936712805}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5eb53f3d7ef001049a14bc1408dc0092, type: 3}
m_Name:
m_EditorClassIdentifier:
_componentIndexCache: 0
_addedNetworkObject: {fileID: 6141811525297683108}
_networkObjectCache: {fileID: 6141811525297683108}
--- !u!114 &6141811525297683108
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3802985406936712805}
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:
- {fileID: 171993714235241304}
<SerializedRootNetworkBehaviour>k__BackingField: {fileID: 0}
<NestedRootNetworkBehaviours>k__BackingField: []
SerializedTransformProperties:
Position: {x: -51.775536, y: 0.6793438, z: -2.5173702}
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: 0
<SpawnableCollectionId>k__BackingField: 0
_scenePathHash: 1455445497
<SceneId>k__BackingField: 0
<AssetPathHash>k__BackingField: 17698334116330632258

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: abf4376f1c6f28241b1125c0eac87199
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -12,6 +12,16 @@ GameObject:
- component: {fileID: 7443408887813606050}
- component: {fileID: 934570884}
- component: {fileID: 7443408887813606060}
- component: {fileID: 4427988724072666434}
- component: {fileID: 937364350749304634}
- component: {fileID: 4166310840977298591}
- component: {fileID: 6354181707884201360}
- component: {fileID: 4931936926189112829}
- component: {fileID: 5770411533141640352}
- component: {fileID: 2456202277866033903}
- component: {fileID: 4080293045635388376}
- component: {fileID: 1147000878988426880}
- component: {fileID: 6184982229728339744}
m_Layer: 0
m_Name: NetworkManager
m_TagString: Untagged
@ -26,13 +36,14 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7443408887813606051}
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:
- {fileID: 4393252310584637084}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &7443408887813606050
MonoBehaviour:
@ -46,12 +57,13 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d2c95dfde7d73b54dbbdc23155d35d36, type: 3}
m_Name:
m_EditorClassIdentifier:
_logging: {fileID: 0}
_spawnablePrefabs: {fileID: 11400000, guid: ec64eb18c93ab344892891f33edbf82a, type: 2}
_refreshDefaultPrefabs: 0
_refreshDefaultPrefabs: 1
_runInBackground: 1
_dontDestroyOnLoad: 1
_dontDestroyOnLoad: 0
_objectPool: {fileID: 0}
_persistence: 0
_logging: {fileID: 11400000, guid: 1b221f26a1118094c81531b27f6fad43, type: 2}
_spawnablePrefabs: {fileID: 11400000, guid: bb50798712a8fcd40b22abbc470201fb, type: 2}
--- !u!114 &934570884
MonoBehaviour:
m_ObjectHideFlags: 0
@ -64,9 +76,27 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 7d331f979d46e8e4a9fc90070c596d44, type: 3}
m_Name:
m_EditorClassIdentifier:
_defaultConditions:
- {fileID: 11400000, guid: 2033f54fd2794464bae08fa5a55c8996, type: 2}
_enableNetworkLod: 0
_levelOfDetailDistances: []
_updateHostVisibility: 1
_maximumTimedObserversDuration: 10
_defaultConditions: []
--- !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: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 211a9f6ec51ddc14f908f5acc0cd0423, type: 3}
m_Name:
m_EditorClassIdentifier:
_playerPrefab: {fileID: 6141811525297683108, guid: abf4376f1c6f28241b1125c0eac87199, type: 3}
_addToDefaultScene: 1
Spawns: []
--- !u!114 &4427988724072666434
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@ -75,134 +105,283 @@ MonoBehaviour:
m_GameObject: {fileID: 7443408887813606051}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 211a9f6ec51ddc14f908f5acc0cd0423, type: 3}
m_Script: {fileID: 11500000, guid: e08bb003fce297d4086cf8cba5aa459a, type: 3}
m_Name:
m_EditorClassIdentifier:
_playerPrefab: {fileID: 0}
_addToDefaultScene: 1
Spawns: []
_queuedInputs: 1
_dropExcessiveReplicates: 1
_maximumServerReplicates: 15
_redundancyCount: 2
_allowPredictedSpawning: 0
_reservedObjectIds: 15
--- !u!114 &937364350749304634
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: 3fdaae44044276a49a52229c1597e33b, type: 3}
m_Name:
m_EditorClassIdentifier:
_updateOrder: 0
_timingType: 0
_allowTickDropping: 0
_maximumFrameTicks: 2
_tickRate: 30
_pingInterval: 1
_physicsMode: 0
--- !u!114 &4166310840977298591
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: f9b6b565cd9533c4ebc18003f0fc18a2, type: 3}
m_Name:
m_EditorClassIdentifier:
_color: {r: 1, g: 1, b: 1, a: 1}
_placement: 1
_hideTickRate: 1
--- !u!114 &6354181707884201360
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: 34e4a322dca349547989b14021da4e23, type: 3}
m_Name:
m_EditorClassIdentifier:
Transport: {fileID: 2456202277866033903}
_intermediateLayer: {fileID: 0}
_latencySimulator:
_enabled: 0
_simulateHost: 1
_latency: 0
_outOfOrder: 0
_packetLoss: 0
--- !u!114 &4931936926189112829
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: 6f48f002b825cbd45a19bd96d90f9edb, type: 3}
m_Name:
m_EditorClassIdentifier:
_dontRoute: 0
_unreliableMtu: 1023
_ipv4BindAddress:
_enableIpv6: 1
_ipv6BindAddress:
_port: 7770
_maximumClients: 4095
_clientAddress: localhost
--- !u!114 &5770411533141640352
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: 362dfd7e6009fb44c90beec3df0ad853, type: 3}
m_Name:
m_EditorClassIdentifier:
_useWss: 0
_sslConfiguration:
Enabled: 0
CertificatePath:
CertificatePassword:
SslProtocol: 0
_mtu: 1023
_port: 443
_maximumClients: 2000
_clientAddress: localhost
--- !u!114 &2456202277866033903
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: 314b449d3505bd24487ba69b61c2fda5, type: 3}
m_Name:
m_EditorClassIdentifier:
GlobalServerActions: 1
_transports:
- {fileID: 4931936926189112829}
- {fileID: 5770411533141640352}
--- !u!114 &4080293045635388376
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: 68828c85278210948b9d50a8db3aab74, type: 3}
m_Name:
m_EditorClassIdentifier:
_authenticator: {fileID: 0}
_remoteClientTimeout: 2
_remoteClientTimeoutDuration: 60
_syncTypeRate: 0.1
SpawnPacking:
Position: 0
Rotation: 2
Scale: 2
_changeFrameRate: 1
_frameRate: 500
_shareIds: 1
_startOnHeadless: 1
--- !u!114 &1147000878988426880
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: aca43cf6f20e77c4f8fcc078fd85081f, type: 3}
m_Name:
m_EditorClassIdentifier:
_remoteServerTimeout: 2
_remoteServerTimeoutDuration: 60
_changeFrameRate: 1
_frameRate: 500
--- !u!114 &6184982229728339744
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: ebee11279046f334d88e559c5c2ff08e, type: 3}
m_Name:
m_EditorClassIdentifier:
lobbyNetworkPrefab: {fileID: 6527384552577148640, guid: 7b71eecaf6568a847b4b8415852f9e98, type: 3}
--- !u!1001 &2130063410
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 7443408887813606049}
m_Modifications:
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_Pivot.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_Pivot.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4393252310969058995, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
- target: {fileID: 4393252310969058995, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
propertyPath: m_Name
value: NetworkHudCanvas
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
--- !u!224 &4393252310584637084 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0,
type: 3}
m_CorrespondingSourceObject: {fileID: 4393252310969058990, guid: 0570b6f7f713dc44a90463654bbcd8d0, type: 3}
m_PrefabInstance: {fileID: 2130063410}
m_PrefabAsset: {fileID: 0}

View File

@ -49,7 +49,8 @@ MonoBehaviour:
<IsNested>k__BackingField: 0
<ComponentIndex>k__BackingField: 0
<PredictedSpawn>k__BackingField: {fileID: 0}
_networkBehaviours: []
_networkBehaviours:
- {fileID: -5295043410836352606}
<SerializedRootNetworkBehaviour>k__BackingField: {fileID: 0}
<NestedRootNetworkBehaviours>k__BackingField: []
SerializedTransformProperties:
@ -70,7 +71,7 @@ MonoBehaviour:
_ownerInterpolation: 1
_enableTeleport: 0
_teleportThreshold: 1
<PrefabId>k__BackingField: 11
<PrefabId>k__BackingField: 12
<SpawnableCollectionId>k__BackingField: 0
_scenePathHash: 1455445497
<SceneId>k__BackingField: 0
@ -102,3 +103,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 5aee3998d0d63994e944a61ed8c59784, type: 3}
m_Name:
m_EditorClassIdentifier:
_componentIndexCache: 0
_addedNetworkObject: {fileID: 6527384552577148640}
_networkObjectCache: {fileID: 6527384552577148640}
clientPrefab: {fileID: 6141811525297683108, guid: abf4376f1c6f28241b1125c0eac87199, type: 3}

View File

@ -0,0 +1,257 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &965101957841962906
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2307997546785490004}
- component: {fileID: 8542124331883837710}
- component: {fileID: 4615906867004551015}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2307997546785490004
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 965101957841962906}
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: 4487778728931874858}
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 &8542124331883837710
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 965101957841962906}
m_CullTransparentMesh: 1
--- !u!114 &4615906867004551015
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 965101957841962906}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Player Name
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 3c4448e26b9824f499067d5cba19c732, type: 2}
m_sharedMaterial: {fileID: -7766214204018960760, guid: 3c4448e26b9824f499067d5cba19c732, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 72
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 1
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &6269466464471204554
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4487778728931874858}
- component: {fileID: 5992024379863759697}
- component: {fileID: 2833456142315467025}
- component: {fileID: 974065929055435231}
m_Layer: 5
m_Name: Player Item
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4487778728931874858
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6269466464471204554}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -0.0018000603}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2307997546785490004}
m_Father: {fileID: 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: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5992024379863759697
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6269466464471204554}
m_CullTransparentMesh: 1
--- !u!114 &2833456142315467025
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6269466464471204554}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 0.6862745, b: 0, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: a8292d7c3170a7348accf3d85c0e7359, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &974065929055435231
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6269466464471204554}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 2
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.7169812, g: 0.7169812, b: 0.7169812, a: 1}
m_PressedColor: {r: 0.49056602, g: 0.49056602, b: 0.49056602, a: 1}
m_SelectedColor: {r: 0.7169812, g: 0.7169812, b: 0.7169812, a: 1}
m_DisabledColor: {r: 0.26415092, g: 0.26415092, b: 0.26415092, a: 0.11764706}
m_ColorMultiplier: 1
m_FadeDuration: 0.05
m_SpriteState:
m_HighlightedSprite: {fileID: 21300000, guid: a4fde6e0b21dc224d813ee493157874f, type: 3}
m_PressedSprite: {fileID: 21300000, guid: e5a390d359542f845bd18b3970c5eff3, type: 3}
m_SelectedSprite: {fileID: 21300000, guid: a4fde6e0b21dc224d813ee493157874f, type: 3}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Highlighted
m_DisabledTrigger: Disabled
m_Interactable: 0
m_TargetGraphic: {fileID: 2833456142315467025}
m_OnClick:
m_PersistentCalls:
m_Calls: []

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 166dea4a96a843c4dbbacf764967cb42
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,257 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &441483089998703986
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 211753779370993020}
- component: {fileID: 4202016964752389999}
- component: {fileID: 877214380053287912}
- component: {fileID: 333219489926224623}
m_Layer: 5
m_Name: Room Item
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &211753779370993020
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 441483089998703986}
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:
- {fileID: 8681801365378766037}
m_Father: {fileID: 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: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4202016964752389999
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 441483089998703986}
m_CullTransparentMesh: 1
--- !u!114 &877214380053287912
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 441483089998703986}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 0.6862745, b: 0, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: a8292d7c3170a7348accf3d85c0e7359, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &333219489926224623
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 441483089998703986}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 2
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.7169812, g: 0.7169812, b: 0.7169812, a: 1}
m_PressedColor: {r: 0.49056602, g: 0.49056602, b: 0.49056602, a: 1}
m_SelectedColor: {r: 0.7169812, g: 0.7169812, b: 0.7169812, a: 1}
m_DisabledColor: {r: 0.26415092, g: 0.26415092, b: 0.26415092, a: 0.11764706}
m_ColorMultiplier: 1
m_FadeDuration: 0.05
m_SpriteState:
m_HighlightedSprite: {fileID: 21300000, guid: a4fde6e0b21dc224d813ee493157874f, type: 3}
m_PressedSprite: {fileID: 21300000, guid: e5a390d359542f845bd18b3970c5eff3, type: 3}
m_SelectedSprite: {fileID: 21300000, guid: a4fde6e0b21dc224d813ee493157874f, type: 3}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Highlighted
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 0}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &4532608931749753960
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8681801365378766037}
- component: {fileID: 9185343577600448866}
- component: {fileID: 9022054896948753903}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8681801365378766037
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4532608931749753960}
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: 211753779370993020}
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 &9185343577600448866
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4532608931749753960}
m_CullTransparentMesh: 1
--- !u!114 &9022054896948753903
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4532608931749753960}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Room Name
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 3c4448e26b9824f499067d5cba19c732, type: 2}
m_sharedMaterial: {fileID: -7766214204018960760, guid: 3c4448e26b9824f499067d5cba19c732, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 72
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 1
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: bebd38cf5fa32ba41926d43852f2e633
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -239,9 +239,9 @@ MonoBehaviour:
m_EditorClassIdentifier:
boostCapacities:
- {fileID: 1950397573}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 723891192}
- {fileID: 1472618151}
- {fileID: 1501063438}
joinPrompts:
- {fileID: 886944251}
- {fileID: 374405368}
@ -346,34 +346,6 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 1178560132}
m_Modifications:
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_text
value: No
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textAlignment
value: 65535
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.lineCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.pageCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.wordCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_HorizontalAlignment
value: 2
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.characterCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 106129460808279082, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3}
propertyPath: m_SizeDelta.y
value: -12.6
@ -534,6 +506,34 @@ PrefabInstance:
propertyPath: m_Name
value: No Button
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_text
value: No
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textAlignment
value: 65535
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.lineCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.pageCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.wordCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_HorizontalAlignment
value: 2
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.characterCount
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@ -1011,34 +1011,6 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 1986215051}
m_Modifications:
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_text
value: Yes
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textAlignment
value: 65535
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.lineCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.pageCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.wordCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_HorizontalAlignment
value: 2
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.characterCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 106129460808279082, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3}
propertyPath: m_SizeDelta.y
value: -12.6
@ -1191,6 +1163,34 @@ PrefabInstance:
propertyPath: m_Name
value: Yes Button
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_text
value: Yes
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textAlignment
value: 65535
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.lineCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.pageCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.wordCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_HorizontalAlignment
value: 2
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.characterCount
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@ -2062,6 +2062,17 @@ RectTransform:
m_CorrespondingSourceObject: {fileID: 7548755371474331641, guid: ece147409d177604bb59e8bbd21316da, type: 3}
m_PrefabInstance: {fileID: 723891190}
m_PrefabAsset: {fileID: 0}
--- !u!114 &723891192 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 5281775441835194232, guid: ece147409d177604bb59e8bbd21316da, type: 3}
m_PrefabInstance: {fileID: 723891190}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7e3ef46bd7908ba4b8fd45a5572217b6, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &754823974
GameObject:
m_ObjectHideFlags: 0
@ -2841,10 +2852,6 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 2011926118}
m_Modifications:
- target: {fileID: 5415181396576777827, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_Mesh
value:
objectReference: {fileID: 0}
- target: {fileID: 106129460808279082, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3}
propertyPath: m_AnchoredPosition.y
value: -4
@ -3027,6 +3034,10 @@ PrefabInstance:
propertyPath: m_Name
value: Exit Button
objectReference: {fileID: 0}
- target: {fileID: 5415181396576777827, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_Mesh
value:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@ -3056,34 +3067,6 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 1986215051}
m_Modifications:
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_text
value: No
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textAlignment
value: 65535
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.lineCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.pageCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.wordCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_HorizontalAlignment
value: 2
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.characterCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 106129460808279082, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3}
propertyPath: m_SizeDelta.y
value: -12.6
@ -3244,6 +3227,34 @@ PrefabInstance:
propertyPath: m_Name
value: No Button
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_text
value: No
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textAlignment
value: 65535
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.lineCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.pageCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.wordCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_HorizontalAlignment
value: 2
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.characterCount
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@ -3340,34 +3351,6 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 1178560132}
m_Modifications:
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_text
value: Yes
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textAlignment
value: 65535
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.lineCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.pageCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.wordCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_HorizontalAlignment
value: 2
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.characterCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 106129460808279082, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3}
propertyPath: m_SizeDelta.y
value: -12.6
@ -3516,6 +3499,34 @@ PrefabInstance:
propertyPath: m_Name
value: Yes Button
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_text
value: Yes
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textAlignment
value: 65535
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.lineCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.pageCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.wordCount
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_HorizontalAlignment
value: 2
objectReference: {fileID: 0}
- target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3}
propertyPath: m_textInfo.characterCount
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@ -3798,6 +3809,17 @@ RectTransform:
m_CorrespondingSourceObject: {fileID: 7548755371474331641, guid: ece147409d177604bb59e8bbd21316da, type: 3}
m_PrefabInstance: {fileID: 1472618149}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1472618151 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 5281775441835194232, guid: ece147409d177604bb59e8bbd21316da, type: 3}
m_PrefabInstance: {fileID: 1472618149}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7e3ef46bd7908ba4b8fd45a5572217b6, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &1501063436
PrefabInstance:
m_ObjectHideFlags: 0
@ -3932,6 +3954,17 @@ RectTransform:
m_CorrespondingSourceObject: {fileID: 7548755371474331641, guid: ece147409d177604bb59e8bbd21316da, type: 3}
m_PrefabInstance: {fileID: 1501063436}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1501063438 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 5281775441835194232, guid: ece147409d177604bb59e8bbd21316da, type: 3}
m_PrefabInstance: {fileID: 1501063436}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7e3ef46bd7908ba4b8fd45a5572217b6, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1686910807
GameObject:
m_ObjectHideFlags: 0

View File

@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.16318765, g: 0.16640459, b: 0.19442183, a: 1}
m_IndirectSpecularColor: {r: 0.16326728, g: 0.16644119, b: 0.17437215, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
@ -396,6 +396,15 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 20df0926ff00f0e4dab5fd8ea03a31d2, type: 3}
m_Name:
m_EditorClassIdentifier:
MaxAdditionalDistance: 30
FarOutBias: 0.3
MaxFollowDistance: 100
FollowSpeed: 2
TiltFactor: 1.5
ZoomOutMargin: 142
ZoomInMargin: 190
MinZoomSpeed: 0.4
MaxZoomSpeed: 0.5
--- !u!114 &963194230
MonoBehaviour:
m_ObjectHideFlags: 0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,35 @@
using FishNet.Object;
using FishNet.Object.Synchronizing;
using FishNet.Connection;
using FishNet;
using log4net;
using System.Reflection;
public class ClientInstance : NetworkBehaviour
{
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
#region Sync
private readonly SyncVar<string> username = new();
#endregion
#region Username
public string Username { get => username.Value; set => username.Value = value; }
#endregion
#region Helper
public static ClientInstance ReturnClientInstance(NetworkConnection conn)
{
if (InstanceFinder.IsServerStarted && conn != null)
{
// Expects the client instance to be the very first object of that connection
NetworkObject nob = conn.FirstObject;
return (nob == null) ? null : nob.GetComponent<ClientInstance>();
}
else
{
Log.Warn("Unable to find client instance");
return null;
}
}
#endregion
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5eb53f3d7ef001049a14bc1408dc0092
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,20 +1,224 @@
using System.Collections.Generic;
using System.Reflection;
using FishNet.Object;
using log4net;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class LobbyManager : MonoBehaviour
{
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
#region Fields
[SerializeField] private TMP_InputField usernameLabel;
[SerializeField] private TextMeshProUGUI roomNameLabel;
[SerializeField] private Canvas lobbyCanvas;
[SerializeField] private Canvas roomCanvas;
[SerializeField] private Transform roomItemContainer;
[SerializeField] private Transform playerItemContainer;
[SerializeField] private GameObject roomItemPrefab;
[SerializeField] private GameObject playerItemPrefab;
private Dictionary<string, GameObject> playerRoomItems = new();
private Dictionary<string, GameObject> roomItems = new();
private Canvas previousCanvas;
private SSOLobby lobby;
#endregion
#region Init
private void Awake()
{
Locator.RegisterService<LobbyManager>(this);
lobbyCanvas.gameObject.SetActive(false);
roomCanvas.gameObject.SetActive(false);
}
public void InitClient(SSOLobby lobby)
{
this.lobby = lobby;
lobby.SignIn();
}
#endregion
#region Events
private void SubscribeToRoomAndPlayerEvents(bool subscribe)
{
if (subscribe)
{
lobby.OnMemberJoined += OnMemberJoined;
lobby.OnMemberLeft += OnMemberLeft;
lobby.OnRoomCreated += OnRoomCreated;
lobby.OnRoomDeleted += OnRoomDeleted;
lobby.OnRoomStarted += OnRoomStarted;
}
else
{
lobby.OnMemberJoined -= OnMemberJoined;
lobby.OnMemberLeft -= OnMemberLeft;
lobby.OnRoomCreated -= OnRoomCreated;
lobby.OnRoomDeleted -= OnRoomDeleted;
lobby.OnRoomStarted -= OnRoomStarted;
}
}
private void OnRoomStarted(Room room)
{
UpdateRoomUI(room.name);
}
private void OnRoomDeleted(Room room)
{
RemoveRoomUI(room.name);
}
private void OnRoomCreated(Room room)
{
AddRoomUI(room.name);
}
private void OnMemberLeft(NetworkObject target)
{
string username = target.Owner.FirstObject.GetComponent<ClientInstance>().Username;
RemoveRoomPlayerUI(username);
}
private void OnMemberJoined(NetworkObject target)
{
string username = target.Owner.FirstObject.GetComponent<ClientInstance>().Username;
AddRoomPlayerUI(username);
}
#endregion
#region Navigation
public void ChangeCanvas(Canvas canvas)
{
if (previousCanvas != null)
previousCanvas.gameObject.SetActive(false);
if (canvas == previousCanvas)
{
Log.Info("This canvas is already active");
return;
}
canvas.gameObject.SetActive(true);
previousCanvas = canvas;
}
public void EnterGame()
{
SubscribeToRoomAndPlayerEvents(false);
}
public void EnterLobby()
{
ChangeCanvas(lobbyCanvas);
}
public void SignInSuccess(string username)
{
Log.Debug($"User: {username} just signed in with the server.");
usernameLabel.text = username;
SubscribeToRoomAndPlayerEvents(true);
EnterLobby();
}
public void SignInFailed(string failedReason)
{
Log.Warn($"User wasn't signed in because: {failedReason}");
}
public void OnCreateRoom(Room r)
{
ChangeCanvas(roomCanvas);
roomNameLabel.text = r.name;
}
public void OnJoinRoom(Room r)
{
ChangeCanvas(roomCanvas);
roomNameLabel.text = r.name;
}
public void OnLeaveRoom()
{
ChangeCanvas(lobbyCanvas);
}
#endregion
#region UI
// Room
public void AddRoomUI(string roomName)
{
if (roomItems.ContainsKey(roomName))
return;
GameObject go = Instantiate(roomItemPrefab);
go.transform.SetParent(roomItemContainer, false);
go.GetComponentsInChildren<TextMeshProUGUI>()[0].text = roomName;
go.GetComponentInChildren<Button>().onClick.AddListener(() => OnJoinRoomClick(roomName));
roomItems.Add(roomName, go);
}
public void RemoveRoomUI(string roomName)
{
Destroy(roomItems[roomName]);
roomItems.Remove(roomName);
}
public void UpdateRoomUI(string roomName)
{
roomItems[roomName].GetComponent<Button>().interactable = false;
}
// Player
public void ResetRoomPlayerUI()
{
foreach (Transform t in roomItemContainer)
Destroy(t.gameObject);
playerRoomItems.Clear();
}
public void AddRoomPlayerUI(string username)
{
if (roomItems.ContainsKey(username))
return;
GameObject go = Instantiate(playerItemPrefab);
go.transform.SetParent(playerItemContainer, false);
go.GetComponentsInChildren<TextMeshProUGUI>()[0].text = username;
playerRoomItems.Add(username, go);
}
public void RemoveRoomPlayerUI(string username)
{
Destroy(playerRoomItems[username]);
playerRoomItems.Remove(username);
}
#endregion
#region Buttons
public void OnCreateRoomClick()
{
lobby.CreateRoom();
}
public void OnJoinRoomClick(string roomName)
{
lobby.JoinRoom(roomName);
}
public void OnLeaveRoomClick()
{
lobby.LeaveRoom();
}
public void OnStartGameClick()
{
}
public void OnRefreshLobbyClick()
{
}
public void OnLeaveLobbyClick()
{
GameObject menuCam = GameObject.Find("Main Menu Camera");
menuCam.TryGetComponent(out Animator camAnimator);
if (!camAnimator)
{
Log.Error("Can't go back to main menu, camera animator not found.");
}
camAnimator.SetTrigger("BackToIdleTrigger");
// TODO Disconnect the client from the server
}
#endregion

View File

@ -0,0 +1,67 @@
using System.Collections.Generic;
using FishNet.Connection;
using FishNet.Object;
using Managers;
using UnityEngine.SceneManagement;
public class Room
{
#region Field
public Room() { }
public Room(string name, string password, bool lockOnStart, int playerCount)
{
this.name = name;
this.maxPlayers = playerCount;
this.lockOnStart = lockOnStart;
this.hasPassword = !string.IsNullOrEmpty(password);
}
public string name;
public int maxPlayers;
public bool hasPassword;
public bool lockOnStart;
public bool isStarted;
public List<NetworkConnection> Members = new();
public List<NetworkObject> MemberIds = new();
public List<NetworkObject> StartedMembers = new();
[System.NonSerialized] public GameManager gameManager;
[System.NonSerialized] public string PasswordAuthenticator = string.Empty;
[System.NonSerialized] public HashSet<Scene> Scenes = new HashSet<Scene>();
#endregion
#region Members
public void AddMember(NetworkObject clientId)
{
if (!MemberIds.Contains(clientId))
{
MemberIds.Add(clientId);
Members.Add(clientId.Owner);
}
}
public void AddStartedMember(NetworkObject clientId)
{
if (!StartedMembers.Contains(clientId))
StartedMembers.Add(clientId);
}
public bool RemoveMember(NetworkObject clientId)
{
int index = MemberIds.IndexOf(clientId);
if (index != -1)
{
MemberIds.RemoveAt(index);
Members.Remove(clientId.Owner);
if (StartedMembers.Contains(clientId))
{
StartedMembers.Remove(clientId);
}
return true;
}
else
{
return false;
}
}
#endregion
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 70ab8bd65e254744ea7c1864013fc8ff
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,15 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Security.Cryptography;
using FishNet;
using FishNet.Connection;
using FishNet.Managing.Scened;
using FishNet.Object;
using FishNet.Transporting;
using log4net;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.SceneManagement;
public class SSOLobby : NetworkBehaviour
{
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
#region Fields
[SerializeField] private NetworkObject clientPrefab;
public List<Room> createdRooms = new();
public Dictionary<NetworkConnection, Room> connectionRooms = new();
#endregion
#region Init & Update
void Start()
protected virtual void Awake()
{
Locator.RegisterService<SSOLobby>(this);
@ -18,49 +33,403 @@ public class SSOLobby : NetworkBehaviour
InstanceFinder.ServerManager.OnRemoteConnectionState += OnClienStateChanged;
InstanceFinder.ClientManager.OnClientConnectionState += OnLocalClientStateChanged;
base.NetworkManager.SceneManager.OnLoadEnd += OnClientLoadedScene;
base.NetworkManager.SceneManager.OnClientPresenceChangeEnd += OnClientSceneState;
}
public override void OnStartClient()
{
if (clientPrefab == null)
{
Log.Error("There is no client prefab for the client to spawn.");
return;
}
// // The client gets a client instance upon entering the lobby
// NetworkObject nob = Instantiate(clientPrefab);
// Scene scene = UnityEngine.SceneManagement.SceneManager.GetSceneByName("OnlineLobby");
// UnityEngine.SceneManagement.SceneManager.MoveGameObjectToScene(nob.gameObject, scene);
// InstanceFinder.ServerManager.Spawn(nob.gameObject, LocalConnection);
Locator.GetService<LobbyManager>().InitClient(this);
}
public override void OnStartServer()
{
// TODO: check if the mirror timing issues still persist
ChangeSubscription(false);
ChangeSubscription(true);
}
public override void OnStopServer()
{
base.OnStopServer();
ChangeSubscription(false);
}
public void ChangeSubscription(bool subscribe)
{
if (base.NetworkManager == null)
return;
if (subscribe)
{
base.NetworkManager.SceneManager.OnLoadEnd += OnClientLoadedScene;
base.NetworkManager.SceneManager.OnClientPresenceChangeEnd += OnClientSceneState;
}
else
{
base.NetworkManager.SceneManager.OnLoadEnd -= OnClientLoadedScene;
base.NetworkManager.SceneManager.OnClientPresenceChangeEnd -= OnClientSceneState;
}
}
#endregion
#region Actions
public event Action<Room, SceneLoadEndEventArgs> OnServerLoadedScenes;
public event Action<Room, NetworkObject> OnClientCreatedRoom;
public event Action<Room, NetworkObject> OnClientLeftRoom;
public event Action<Room, NetworkObject> OnClientJoinedRoom;
public event Action<Room, NetworkObject> OnClientStarted;
// Events for the client
public event Action<Room> OnRoomCreated;
public event Action<Room> OnRoomDeleted;
public event Action<Room> OnRoomStarted;
public event Action<NetworkObject> OnMemberLeft;
public event Action<NetworkObject> OnMemberStarted;
public event Action<NetworkObject> OnMemberJoined;
public event Action<NetworkObject> OnClientLoggedIn;
#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
#region SignIn
[Client]
public void SignIn()
{
ServerSignIn();
}
[ServerRpc(RequireOwnership = false)]
private void ServerSignIn(NetworkConnection sender = null)
{
// Assign a username to this new connection
bool success =
OnSignIn(sender.ClientId, out string username, out string failedReason);
// Get client instance from that user
ClientInstance.ReturnClientInstance(sender).Username = username;
if (success)
{
TargetSignInSuccess(sender, username);
}
else
{
TargetSignInFailed(sender, failedReason);
}
}
// TODO: Username input options and sanitization
private bool OnSignIn(int clientId, out string username, out string failedReason)
{
username = "Ship " + clientId;
failedReason = "cannot fail yet";
return true;
}
[TargetRpc]
private void TargetSignInSuccess(NetworkConnection conn, string username)
{
OnClientLoggedIn?.Invoke(ClientInstance.ReturnClientInstance(conn).NetworkObject);
Locator.GetService<LobbyManager>().SignInSuccess(username);
}
[TargetRpc]
private void TargetSignInFailed(NetworkConnection conn, string failedReason)
{
Locator.GetService<LobbyManager>().SignInFailed(failedReason);
}
#endregion
#region Create Room
[Client]
public void CreateRoom(string roomName = "")
{
ServerCreateRoom(roomName);
}
[ServerRpc(RequireOwnership = false)]
private void ServerCreateRoom(string roomName, NetworkConnection sender = null)
{
string failedReason = "";
ClientInstance ci = ClientInstance.ReturnClientInstance(sender);
if (ci == null)
{
failedReason = "Unable to find Client Instance for incoming rpc call.";
Log.Error(failedReason);
TargetCreateRoomFailed(sender, failedReason);
return;
}
if (roomName == "")
{
roomName = ci.Username + "'s Room";
}
Room match = ReturnRoom(ci.NetworkObject);
if (match != null)
{
failedReason = "User is already in a room.";
Log.Error(failedReason);
TargetCreateRoomFailed(sender, failedReason);
return;
}
match = ReturnRoom(roomName);
if (match != null)
{
failedReason = "Room was already created.";
TargetCreateRoomFailed(sender, failedReason);
return;
}
// TODO: Manage room player count
Room room = new Room(roomName, "", true, 2);
room.AddMember(ci.NetworkObject);
createdRooms.Add(room);
connectionRooms[sender] = room;
Log.Info($"New room: {roomName} created successfully.");
OnClientCreatedRoom?.Invoke(room, ci.NetworkObject);
/*
RpcUpdateRooms(new Room[] {room});
*/
ObserverRoomChange(room, "Create");
TargetCreateRoomSuccess(sender, room);
}
[TargetRpc]
private void TargetCreateRoomSuccess(NetworkConnection conn, Room room)
{
// Local first object instead
OnMemberJoined?.Invoke(ClientManager.Connection.FirstObject);
Locator.GetService<LobbyManager>().OnCreateRoom(room);
}
[TargetRpc]
private void TargetCreateRoomFailed(NetworkConnection conn, string failedReason)
{
Log.Error(failedReason);
}
#endregion
#region Join Room
[Client]
public void JoinRoom(string roomName)
{
ServerJoinRoom(roomName);
}
[ServerRpc(RequireOwnership = false)]
private void ServerJoinRoom(string roomName, NetworkConnection sender = null)
{
string failedReason = "";
var ci = ClientInstance.ReturnClientInstance(sender);
if (ci == null)
{
failedReason = "Unable to find Client Instance for incoming rpc call.";
Log.Error(failedReason);
TargetJoindRoomFailed(sender, failedReason);
return;
}
Room room = ReturnRoom(roomName);
if (room == null)
{
failedReason = $"No room named: {roomName} was found.";
Log.Error(failedReason);
TargetJoindRoomFailed(sender, failedReason);
return;
}
if (ReturnRoom(ci.NetworkObject) != null)
{
failedReason = "User is already in a room.";
Log.Error(failedReason);
TargetJoindRoomFailed(sender, failedReason);
return;
}
if (room.MemberIds.Count >= room.maxPlayers)
{
failedReason = "The room is already full.";
Log.Error(failedReason);
TargetJoindRoomFailed(sender, failedReason);
return;
}
if (room.isStarted && room.lockOnStart)
{
failedReason = "Room has already started a game.";
Log.Error(failedReason);
TargetJoindRoomFailed(sender, failedReason);
return;
}
room.AddMember(ci.NetworkObject);
connectionRooms[ci.Owner] = room;
OnClientJoinedRoom?.Invoke(room, ci.NetworkObject);
foreach (NetworkObject item in room.MemberIds)
{
TargetMemberJoined(item.Owner, ci.NetworkObject);
if (item.Owner != ci.Owner)
{
TargetMemberJoined(ci.Owner, item);
}
}
TargetJoinRoomSuccess(sender, room);
}
[TargetRpc]
private void TargetJoinRoomSuccess(NetworkConnection conn, Room room)
{
OnMemberJoined?.Invoke(ClientManager.Connection.FirstObject);
Locator.GetService<LobbyManager>().OnJoinRoom(room);
}
[TargetRpc]
private void TargetJoindRoomFailed(NetworkConnection conn, string failedReason)
{
Log.Error(failedReason);
}
#endregion
#region Leave Rooom
[Client]
public void LeaveRoom()
{
ServerLeaveRoom();
}
[ServerRpc(RequireOwnership = false)]
private void ServerLeaveRoom(NetworkConnection sender = null)
{
var ci = ClientInstance.ReturnClientInstance(sender);
Room room = RemoveFromRoom(ci.NetworkObject, false);
if (room == null)
{
TargetLeaveRoomFailed(sender);
return;
}
TargetLeaveRoomSuccess(sender);
}
[TargetRpc]
private void TargetLeaveRoomSuccess(NetworkConnection conn)
{
Locator.GetService<LobbyManager>().OnLeaveRoom();
}
[TargetRpc]
private void TargetLeaveRoomFailed(NetworkConnection conn)
{
Log.Error("Leave room failed.");
}
#endregion
#region Manage Rooms
[Server]
private Room RemoveFromRoom(NetworkObject clientId, bool clientDisconnected)
{
Room room = ReturnRoom(clientId);
if (room == null)
return null;
//Let members know someone left
foreach (NetworkObject item in room.MemberIds)
{
if (clientDisconnected && item == clientId)
continue;
TargetMemberLeft(item.Owner, clientId);
}
//Remove the member from the room
room.RemoveMember(clientId);
connectionRooms.Remove(clientId.Owner);
OnClientLeftRoom?.Invoke(room, clientId);
//If not disconnectiong tell client to unload scenes
if (!clientDisconnected)
{
SceneLookupData[] lookups = SceneLookupData.CreateData(room.Scenes.ToArray());
SceneUnloadData sud = new SceneUnloadData(lookups);
if (lookups.Length > 0)
InstanceFinder.SceneManager.UnloadConnectionScenes(clientId.Owner, sud);
}
//If room is empty remove room
if (room.MemberIds.Count == 0)
{
createdRooms.Remove(room);
ObserverRoomChange(room, "Delete");
}
return room;
}
public Room ReturnRoom(string roomName)
{
return createdRooms.FirstOrDefault
(r => r.name.Equals(roomName, StringComparison.CurrentCultureIgnoreCase));
}
public Room ReturnRoom(NetworkObject clientId)
{
foreach (Room r in createdRooms)
{
if (r.MemberIds.Contains(clientId))
{
return r;
}
}
return null;
}
[TargetRpc]
private void TargetMemberJoined(NetworkConnection conn, NetworkObject member)
{
OnMemberJoined?.Invoke(member);
Log.Debug("Member joined");
}
[TargetRpc]
private void TargetMemberLeft(NetworkConnection conn, NetworkObject member)
{
OnMemberLeft?.Invoke(member);
Log.Debug("Member left");
}
[ObserversRpc]
public void ObserverRoomChange(Room room, string action)
{
if (action == "Create")
{
OnRoomCreated?.Invoke(room);
}
else if (action == "Delete")
{
OnRoomDeleted?.Invoke(room);
}
else if (action == "Started")
{
OnRoomStarted?.Invoke(room);
}
}
#endregion
}

View File

@ -98,6 +98,14 @@ namespace SlimUI.ModernMenu
void Awake()
{
if (gameObject.TryGetComponent(out Camera camera))
{
camera.enabled = false;
}
if (gameObject.TryGetComponent(out AudioListener listener))
{
listener.enabled = false;
}
SceneManager.activeSceneChanged += CameraOnSceneActive;
}
@ -382,6 +390,10 @@ namespace SlimUI.ModernMenu
}
public void Position3()
{
if (!SceneManager.GetSceneByName("OnlineLobby").isLoaded)
{
SceneManager.LoadScene("OnlineLobby", LoadSceneMode.Additive);
}
DisablePlayCampaign();
CameraAnimator.Play("FlyToLobby");
}

View File

@ -20,6 +20,9 @@ EditorBuildSettings:
- enabled: 1
path: Assets/Scenes/FreeFlyArena.unity
guid: 2daa5335e14901d4bbcd312c05395c71
- enabled: 1
path: Assets/Scenes/OnlineLobby.unity
guid: c6e60c70adfdd0d47bfd941e56fab716
m_configObjects:
com.unity.adaptiveperformance.loader_settings: {fileID: 11400000, guid: 4b98f800e99c70140ac675a637d71d3a, type: 2}
com.unity.adaptiveperformance.simulator.provider_settings: {fileID: 11400000, guid: ca0b3f0ddb119254a95ed5dd5346429b, type: 2}