네트워크 동기화 문제 해결
몬스터와 크립에 네트워크 관련 컴포넌트가 없는 문제 수정 포탈/캠프와 몬스터/크립 간의 계층 구조 해제 - 네트워크 오브젝트끼리 계층 구조로 둘 수 없음
This commit is contained in:
@@ -80,6 +80,7 @@
|
|||||||
<Compile Include="Assets\Scripts\Worker.cs" />
|
<Compile Include="Assets\Scripts\Worker.cs" />
|
||||||
<Compile Include="Assets\Scripts\WorkerSpawner.cs" />
|
<Compile Include="Assets\Scripts\WorkerSpawner.cs" />
|
||||||
<Compile Include="Assets\Scripts\Resource.cs" />
|
<Compile Include="Assets\Scripts\Resource.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\SimpleNetworkMonitor.cs" />
|
||||||
<Compile Include="Assets\Scripts\AutoTargetSystem.cs" />
|
<Compile Include="Assets\Scripts\AutoTargetSystem.cs" />
|
||||||
<Compile Include="Assets\Scripts\CreepDataComponent.cs" />
|
<Compile Include="Assets\Scripts\CreepDataComponent.cs" />
|
||||||
<Compile Include="Assets\Scripts\BuildingSlotButton.cs" />
|
<Compile Include="Assets\Scripts\BuildingSlotButton.cs" />
|
||||||
@@ -117,6 +118,7 @@
|
|||||||
<Compile Include="Assets\Scripts\FogOfWarSystem.cs" />
|
<Compile Include="Assets\Scripts\FogOfWarSystem.cs" />
|
||||||
<Compile Include="Assets\Data\Scripts\DataClasses\MonsterData.cs" />
|
<Compile Include="Assets\Data\Scripts\DataClasses\MonsterData.cs" />
|
||||||
<Compile Include="Assets\Scripts\NetworkEquipmentSocket.cs" />
|
<Compile Include="Assets\Scripts\NetworkEquipmentSocket.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\NetworkConfigDebugger.cs" />
|
||||||
<Compile Include="Assets\Data\Scripts\DataClasses\TowerData.cs" />
|
<Compile Include="Assets\Data\Scripts\DataClasses\TowerData.cs" />
|
||||||
<Compile Include="Assets\Scripts\IAction.cs" />
|
<Compile Include="Assets\Scripts\IAction.cs" />
|
||||||
<Compile Include="Assets\Scripts\NetworkPlayerController.cs" />
|
<Compile Include="Assets\Scripts\NetworkPlayerController.cs" />
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||||
id: 102
|
id: 102
|
||||||
memo: "Fast(\uBE60\uB984/\uC57D\uD568)"
|
memo: "Fast(\uBE60\uB984/\uC57D\uD568)"
|
||||||
moveSpeed: 13
|
moveSpeed: 11
|
||||||
maxHp: 30
|
maxHp: 30
|
||||||
atkRange: 1
|
atkRange: 1
|
||||||
atkDamage: 2
|
atkDamage: 2
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||||
id: 103
|
id: 103
|
||||||
memo: "Tank(\uB290\uB9BC/\uB2E8\uB2E8)"
|
memo: "Tank(\uB290\uB9BC/\uB2E8\uB2E8)"
|
||||||
moveSpeed: 5
|
moveSpeed: 8
|
||||||
maxHp: 150
|
maxHp: 100
|
||||||
atkRange: 1
|
atkRange: 1
|
||||||
atkDamage: 4
|
atkDamage: 4
|
||||||
atkIntervalSec: 1.5
|
atkIntervalSec: 1.5
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||||
id: 104
|
id: 104
|
||||||
memo: "Ranged(\uC6D0\uAC70\uB9AC/\uC57D\uD568)"
|
memo: "Ranged(\uC6D0\uAC70\uB9AC/\uC57D\uD568)"
|
||||||
moveSpeed: 8
|
moveSpeed: 9
|
||||||
maxHp: 40
|
maxHp: 40
|
||||||
atkRange: 5
|
atkRange: 5
|
||||||
atkDamage: 2
|
atkDamage: 2
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ MonoBehaviour:
|
|||||||
id: 105
|
id: 105
|
||||||
memo: "Elite(\uC18C\uC218 \uC815\uC608)"
|
memo: "Elite(\uC18C\uC218 \uC815\uC608)"
|
||||||
moveSpeed: 10
|
moveSpeed: 10
|
||||||
maxHp: 130
|
maxHp: 90
|
||||||
atkRange: 1
|
atkRange: 1
|
||||||
atkDamage: 7
|
atkDamage: 7
|
||||||
atkIntervalSec: 1.3
|
atkIntervalSec: 1.3
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ GameObject:
|
|||||||
- component: {fileID: 6023907831447366429}
|
- component: {fileID: 6023907831447366429}
|
||||||
- component: {fileID: 8728041163683826261}
|
- component: {fileID: 8728041163683826261}
|
||||||
- component: {fileID: 3928237758911375249}
|
- component: {fileID: 3928237758911375249}
|
||||||
|
- component: {fileID: -2284084906141577046}
|
||||||
|
- component: {fileID: -8703503294977252669}
|
||||||
m_Layer: 11
|
m_Layer: 11
|
||||||
m_Name: CreepTemplate
|
m_Name: CreepTemplate
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -210,3 +212,81 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.CreepDataComponent
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.CreepDataComponent
|
||||||
creepData: {fileID: 0}
|
creepData: {fileID: 0}
|
||||||
autoApplyOnAwake: 1
|
autoApplyOnAwake: 1
|
||||||
|
--- !u!114 &-2284084906141577046
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3810918154428190126}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e8d0727d5ae3244e3b569694d3912374, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkAnimator
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkAnimatorExpanded: 0
|
||||||
|
AuthorityMode: 0
|
||||||
|
m_Animator: {fileID: 6023907831447366429}
|
||||||
|
TransitionStateInfoList: []
|
||||||
|
AnimatorParameterEntries:
|
||||||
|
ParameterEntries:
|
||||||
|
- name: IsMoving
|
||||||
|
NameHash: 120489994
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 4
|
||||||
|
- name: Attack
|
||||||
|
NameHash: 1080829965
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 9
|
||||||
|
- name: Speed
|
||||||
|
NameHash: -823668238
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 1
|
||||||
|
AnimatorParametersExpanded: 0
|
||||||
|
--- !u!114 &-8703503294977252669
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3810918154428190126}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkTransform
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkTransformExpanded: 0
|
||||||
|
AutoOwnerAuthorityTickOffset: 1
|
||||||
|
PositionInterpolationType: 0
|
||||||
|
RotationInterpolationType: 0
|
||||||
|
ScaleInterpolationType: 0
|
||||||
|
PositionLerpSmoothing: 1
|
||||||
|
PositionMaxInterpolationTime: 0.1
|
||||||
|
RotationLerpSmoothing: 1
|
||||||
|
RotationMaxInterpolationTime: 0.1
|
||||||
|
ScaleLerpSmoothing: 1
|
||||||
|
ScaleMaxInterpolationTime: 0.1
|
||||||
|
AuthorityMode: 0
|
||||||
|
TickSyncChildren: 0
|
||||||
|
UseUnreliableDeltas: 0
|
||||||
|
SyncPositionX: 1
|
||||||
|
SyncPositionY: 1
|
||||||
|
SyncPositionZ: 1
|
||||||
|
SyncRotAngleX: 1
|
||||||
|
SyncRotAngleY: 1
|
||||||
|
SyncRotAngleZ: 1
|
||||||
|
SyncScaleX: 1
|
||||||
|
SyncScaleY: 1
|
||||||
|
SyncScaleZ: 1
|
||||||
|
PositionThreshold: 0.001
|
||||||
|
RotAngleThreshold: 0.01
|
||||||
|
ScaleThreshold: 0.01
|
||||||
|
UseQuaternionSynchronization: 0
|
||||||
|
UseQuaternionCompression: 0
|
||||||
|
UseHalfFloatPrecision: 0
|
||||||
|
InLocalSpace: 0
|
||||||
|
SwitchTransformSpaceWhenParented: 0
|
||||||
|
Interpolate: 1
|
||||||
|
SlerpPosition: 0
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ GameObject:
|
|||||||
- component: {fileID: 3710510283885710978}
|
- component: {fileID: 3710510283885710978}
|
||||||
- component: {fileID: 6023907831447366429}
|
- component: {fileID: 6023907831447366429}
|
||||||
- component: {fileID: 8728041163683826261}
|
- component: {fileID: 8728041163683826261}
|
||||||
|
- component: {fileID: 502360995489719830}
|
||||||
|
- component: {fileID: -6991373811087161316}
|
||||||
m_Layer: 11
|
m_Layer: 11
|
||||||
m_Name: MonsterTemplate
|
m_Name: MonsterTemplate
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -81,7 +83,7 @@ MonoBehaviour:
|
|||||||
AlwaysReplicateAsRoot: 0
|
AlwaysReplicateAsRoot: 0
|
||||||
SynchronizeTransform: 1
|
SynchronizeTransform: 1
|
||||||
ActiveSceneSynchronization: 0
|
ActiveSceneSynchronization: 0
|
||||||
SceneMigrationSynchronization: 0
|
SceneMigrationSynchronization: 1
|
||||||
SpawnWithObservers: 1
|
SpawnWithObservers: 1
|
||||||
DontDestroyWithOwner: 0
|
DontDestroyWithOwner: 0
|
||||||
AutoObjectParentSync: 1
|
AutoObjectParentSync: 1
|
||||||
@@ -210,3 +212,81 @@ MonoBehaviour:
|
|||||||
isMovingParam: IsMoving
|
isMovingParam: IsMoving
|
||||||
autoLoadFromMonsterData: 1
|
autoLoadFromMonsterData: 1
|
||||||
debugLogging: 0
|
debugLogging: 0
|
||||||
|
--- !u!114 &502360995489719830
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3810918154428190126}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e8d0727d5ae3244e3b569694d3912374, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkAnimator
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkAnimatorExpanded: 0
|
||||||
|
AuthorityMode: 0
|
||||||
|
m_Animator: {fileID: 6023907831447366429}
|
||||||
|
TransitionStateInfoList: []
|
||||||
|
AnimatorParameterEntries:
|
||||||
|
ParameterEntries:
|
||||||
|
- name: IsMoving
|
||||||
|
NameHash: 120489994
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 4
|
||||||
|
- name: Attack
|
||||||
|
NameHash: 1080829965
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 9
|
||||||
|
- name: Speed
|
||||||
|
NameHash: -823668238
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 1
|
||||||
|
AnimatorParametersExpanded: 0
|
||||||
|
--- !u!114 &-6991373811087161316
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3810918154428190126}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkTransform
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkTransformExpanded: 0
|
||||||
|
AutoOwnerAuthorityTickOffset: 1
|
||||||
|
PositionInterpolationType: 0
|
||||||
|
RotationInterpolationType: 0
|
||||||
|
ScaleInterpolationType: 0
|
||||||
|
PositionLerpSmoothing: 1
|
||||||
|
PositionMaxInterpolationTime: 0.1
|
||||||
|
RotationLerpSmoothing: 1
|
||||||
|
RotationMaxInterpolationTime: 0.1
|
||||||
|
ScaleLerpSmoothing: 1
|
||||||
|
ScaleMaxInterpolationTime: 0.1
|
||||||
|
AuthorityMode: 0
|
||||||
|
TickSyncChildren: 0
|
||||||
|
UseUnreliableDeltas: 0
|
||||||
|
SyncPositionX: 1
|
||||||
|
SyncPositionY: 1
|
||||||
|
SyncPositionZ: 1
|
||||||
|
SyncRotAngleX: 1
|
||||||
|
SyncRotAngleY: 1
|
||||||
|
SyncRotAngleZ: 1
|
||||||
|
SyncScaleX: 1
|
||||||
|
SyncScaleY: 1
|
||||||
|
SyncScaleZ: 1
|
||||||
|
PositionThreshold: 0.001
|
||||||
|
RotAngleThreshold: 0.01
|
||||||
|
ScaleThreshold: 0.01
|
||||||
|
UseQuaternionSynchronization: 0
|
||||||
|
UseQuaternionCompression: 0
|
||||||
|
UseHalfFloatPrecision: 0
|
||||||
|
InLocalSpace: 0
|
||||||
|
SwitchTransformSpaceWhenParented: 0
|
||||||
|
Interpolate: 1
|
||||||
|
SlerpPosition: 0
|
||||||
|
|||||||
@@ -893,6 +893,8 @@ GameObject:
|
|||||||
- component: {fileID: 7284672060047320725}
|
- component: {fileID: 7284672060047320725}
|
||||||
- component: {fileID: 250122487001659295}
|
- component: {fileID: 250122487001659295}
|
||||||
- component: {fileID: 286142144341486567}
|
- component: {fileID: 286142144341486567}
|
||||||
|
- component: {fileID: 3244538489158729247}
|
||||||
|
- component: {fileID: 8403257879686285238}
|
||||||
m_Layer: 11
|
m_Layer: 11
|
||||||
m_Name: Creep1
|
m_Name: Creep1
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -951,7 +953,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
|
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject
|
||||||
GlobalObjectIdHash: 415512315
|
GlobalObjectIdHash: 437508337
|
||||||
InScenePlacedSourceGlobalObjectIdHash: 0
|
InScenePlacedSourceGlobalObjectIdHash: 0
|
||||||
DeferredDespawnTick: 0
|
DeferredDespawnTick: 0
|
||||||
Ownership: 1
|
Ownership: 1
|
||||||
@@ -1018,7 +1020,7 @@ MonoBehaviour:
|
|||||||
ShowTopMostFoldoutHeaderGroup: 1
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
aiType: 2
|
aiType: 2
|
||||||
detectionRange: 15
|
detectionRange: 15
|
||||||
detectionAngle: 120
|
detectionAngle: 360
|
||||||
playerLayer:
|
playerLayer:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Bits: 640
|
m_Bits: 640
|
||||||
@@ -1087,6 +1089,84 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.CreepDataComponent
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.CreepDataComponent
|
||||||
creepData: {fileID: 11400000, guid: 3d9df9cc2ed8c9e4394fa77bc21c47c6, type: 2}
|
creepData: {fileID: 11400000, guid: 3d9df9cc2ed8c9e4394fa77bc21c47c6, type: 2}
|
||||||
autoApplyOnAwake: 1
|
autoApplyOnAwake: 1
|
||||||
|
--- !u!114 &3244538489158729247
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4538112939981844081}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e8d0727d5ae3244e3b569694d3912374, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkAnimator
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkAnimatorExpanded: 0
|
||||||
|
AuthorityMode: 0
|
||||||
|
m_Animator: {fileID: 7284672060047320725}
|
||||||
|
TransitionStateInfoList: []
|
||||||
|
AnimatorParameterEntries:
|
||||||
|
ParameterEntries:
|
||||||
|
- name: IsMoving
|
||||||
|
NameHash: 120489994
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 4
|
||||||
|
- name: Attack
|
||||||
|
NameHash: 1080829965
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 9
|
||||||
|
- name: Speed
|
||||||
|
NameHash: -823668238
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 1
|
||||||
|
AnimatorParametersExpanded: 0
|
||||||
|
--- !u!114 &8403257879686285238
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4538112939981844081}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkTransform
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkTransformExpanded: 0
|
||||||
|
AutoOwnerAuthorityTickOffset: 1
|
||||||
|
PositionInterpolationType: 0
|
||||||
|
RotationInterpolationType: 0
|
||||||
|
ScaleInterpolationType: 0
|
||||||
|
PositionLerpSmoothing: 1
|
||||||
|
PositionMaxInterpolationTime: 0.1
|
||||||
|
RotationLerpSmoothing: 1
|
||||||
|
RotationMaxInterpolationTime: 0.1
|
||||||
|
ScaleLerpSmoothing: 1
|
||||||
|
ScaleMaxInterpolationTime: 0.1
|
||||||
|
AuthorityMode: 0
|
||||||
|
TickSyncChildren: 0
|
||||||
|
UseUnreliableDeltas: 0
|
||||||
|
SyncPositionX: 1
|
||||||
|
SyncPositionY: 1
|
||||||
|
SyncPositionZ: 1
|
||||||
|
SyncRotAngleX: 1
|
||||||
|
SyncRotAngleY: 1
|
||||||
|
SyncRotAngleZ: 1
|
||||||
|
SyncScaleX: 1
|
||||||
|
SyncScaleY: 1
|
||||||
|
SyncScaleZ: 1
|
||||||
|
PositionThreshold: 0.001
|
||||||
|
RotAngleThreshold: 0.01
|
||||||
|
ScaleThreshold: 0.01
|
||||||
|
UseQuaternionSynchronization: 0
|
||||||
|
UseQuaternionCompression: 0
|
||||||
|
UseHalfFloatPrecision: 0
|
||||||
|
InLocalSpace: 0
|
||||||
|
SwitchTransformSpaceWhenParented: 0
|
||||||
|
Interpolate: 1
|
||||||
|
SlerpPosition: 0
|
||||||
--- !u!1 &4827787360031545274
|
--- !u!1 &4827787360031545274
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -1778,8 +1858,7 @@ Transform:
|
|||||||
m_LocalPosition: {x: 5.2087756e-10, y: 0.096125245, z: -0.057499886}
|
m_LocalPosition: {x: 5.2087756e-10, y: 0.096125245, z: -0.057499886}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children: []
|
||||||
- {fileID: 5114414950704533121}
|
|
||||||
m_Father: {fileID: 4062086443240261109}
|
m_Father: {fileID: 4062086443240261109}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &8747750484294987188
|
--- !u!1 &8747750484294987188
|
||||||
@@ -1846,65 +1925,3 @@ Transform:
|
|||||||
- {fileID: 4062086443240261109}
|
- {fileID: 4062086443240261109}
|
||||||
m_Father: {fileID: 2856184476308544689}
|
m_Father: {fileID: 2856184476308544689}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1001 &4715466935021447530
|
|
||||||
PrefabInstance:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Modification:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TransformParent: {fileID: 8423154880772228728}
|
|
||||||
m_Modifications:
|
|
||||||
- target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.x
|
|
||||||
value: -0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.y
|
|
||||||
value: 0.382
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.w
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.x
|
|
||||||
value: 0.00000008146034
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.z
|
|
||||||
value: -0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 919132149155446097, guid: ae56b484bc4355945bd90ed0f6359194, type: 3}
|
|
||||||
propertyPath: m_Name
|
|
||||||
value: scissors
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
m_RemovedComponents: []
|
|
||||||
m_RemovedGameObjects: []
|
|
||||||
m_AddedGameObjects: []
|
|
||||||
m_AddedComponents: []
|
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: ae56b484bc4355945bd90ed0f6359194, type: 3}
|
|
||||||
--- !u!4 &5114414950704533121 stripped
|
|
||||||
Transform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 4715466935021447530}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
|
|||||||
@@ -1227,6 +1227,8 @@ GameObject:
|
|||||||
- component: {fileID: 2482720153194779286}
|
- component: {fileID: 2482720153194779286}
|
||||||
- component: {fileID: 848186611138485392}
|
- component: {fileID: 848186611138485392}
|
||||||
- component: {fileID: 2122709709101229153}
|
- component: {fileID: 2122709709101229153}
|
||||||
|
- component: {fileID: 3030624664380987043}
|
||||||
|
- component: {fileID: 4732197089904823630}
|
||||||
m_Layer: 11
|
m_Layer: 11
|
||||||
m_Name: Monster101
|
m_Name: Monster101
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -1421,6 +1423,84 @@ MonoBehaviour:
|
|||||||
isMovingParam: IsMoving
|
isMovingParam: IsMoving
|
||||||
autoLoadFromMonsterData: 1
|
autoLoadFromMonsterData: 1
|
||||||
debugLogging: 0
|
debugLogging: 0
|
||||||
|
--- !u!114 &3030624664380987043
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7146441246397375875}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e8d0727d5ae3244e3b569694d3912374, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkAnimator
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkAnimatorExpanded: 0
|
||||||
|
AuthorityMode: 0
|
||||||
|
m_Animator: {fileID: 848186611138485392}
|
||||||
|
TransitionStateInfoList: []
|
||||||
|
AnimatorParameterEntries:
|
||||||
|
ParameterEntries:
|
||||||
|
- name: IsMoving
|
||||||
|
NameHash: 120489994
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 4
|
||||||
|
- name: Attack
|
||||||
|
NameHash: 1080829965
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 9
|
||||||
|
- name: Speed
|
||||||
|
NameHash: -823668238
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 1
|
||||||
|
AnimatorParametersExpanded: 0
|
||||||
|
--- !u!114 &4732197089904823630
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7146441246397375875}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkTransform
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkTransformExpanded: 0
|
||||||
|
AutoOwnerAuthorityTickOffset: 1
|
||||||
|
PositionInterpolationType: 0
|
||||||
|
RotationInterpolationType: 0
|
||||||
|
ScaleInterpolationType: 0
|
||||||
|
PositionLerpSmoothing: 1
|
||||||
|
PositionMaxInterpolationTime: 0.1
|
||||||
|
RotationLerpSmoothing: 1
|
||||||
|
RotationMaxInterpolationTime: 0.1
|
||||||
|
ScaleLerpSmoothing: 1
|
||||||
|
ScaleMaxInterpolationTime: 0.1
|
||||||
|
AuthorityMode: 0
|
||||||
|
TickSyncChildren: 0
|
||||||
|
UseUnreliableDeltas: 0
|
||||||
|
SyncPositionX: 1
|
||||||
|
SyncPositionY: 1
|
||||||
|
SyncPositionZ: 1
|
||||||
|
SyncRotAngleX: 1
|
||||||
|
SyncRotAngleY: 1
|
||||||
|
SyncRotAngleZ: 1
|
||||||
|
SyncScaleX: 1
|
||||||
|
SyncScaleY: 1
|
||||||
|
SyncScaleZ: 1
|
||||||
|
PositionThreshold: 0.001
|
||||||
|
RotAngleThreshold: 0.01
|
||||||
|
ScaleThreshold: 0.01
|
||||||
|
UseQuaternionSynchronization: 0
|
||||||
|
UseQuaternionCompression: 0
|
||||||
|
UseHalfFloatPrecision: 0
|
||||||
|
InLocalSpace: 0
|
||||||
|
SwitchTransformSpaceWhenParented: 0
|
||||||
|
Interpolate: 1
|
||||||
|
SlerpPosition: 0
|
||||||
--- !u!1 &7413418609395265939
|
--- !u!1 &7413418609395265939
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -1651,6 +1651,8 @@ GameObject:
|
|||||||
- component: {fileID: 6540479212111277442}
|
- component: {fileID: 6540479212111277442}
|
||||||
- component: {fileID: 4854545504403574706}
|
- component: {fileID: 4854545504403574706}
|
||||||
- component: {fileID: 1645340600662394858}
|
- component: {fileID: 1645340600662394858}
|
||||||
|
- component: {fileID: 3608736889699243384}
|
||||||
|
- component: {fileID: 7711485244743381599}
|
||||||
m_Layer: 11
|
m_Layer: 11
|
||||||
m_Name: Monster102
|
m_Name: Monster102
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -1749,7 +1751,7 @@ NavMeshAgent:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_AgentTypeID: 0
|
m_AgentTypeID: 0
|
||||||
m_Radius: 0.5
|
m_Radius: 0.5
|
||||||
m_Speed: 13
|
m_Speed: 11
|
||||||
m_Acceleration: 8
|
m_Acceleration: 8
|
||||||
avoidancePriority: 50
|
avoidancePriority: 50
|
||||||
m_AngularSpeed: 120
|
m_AngularSpeed: 120
|
||||||
@@ -1788,7 +1790,7 @@ MonoBehaviour:
|
|||||||
attackRange: 1
|
attackRange: 1
|
||||||
attackInterval: 1
|
attackInterval: 1
|
||||||
attackDamage: 2
|
attackDamage: 2
|
||||||
moveSpeed: 13
|
moveSpeed: 11
|
||||||
chaseSpeedMultiplier: 1.5
|
chaseSpeedMultiplier: 1.5
|
||||||
showDebugInfo: 1
|
showDebugInfo: 1
|
||||||
--- !u!114 &6540479212111277442
|
--- !u!114 &6540479212111277442
|
||||||
@@ -1845,3 +1847,81 @@ MonoBehaviour:
|
|||||||
isMovingParam: IsMoving
|
isMovingParam: IsMoving
|
||||||
autoLoadFromMonsterData: 1
|
autoLoadFromMonsterData: 1
|
||||||
debugLogging: 0
|
debugLogging: 0
|
||||||
|
--- !u!114 &3608736889699243384
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 9065146123892903723}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e8d0727d5ae3244e3b569694d3912374, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkAnimator
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkAnimatorExpanded: 0
|
||||||
|
AuthorityMode: 0
|
||||||
|
m_Animator: {fileID: 4854545504403574706}
|
||||||
|
TransitionStateInfoList: []
|
||||||
|
AnimatorParameterEntries:
|
||||||
|
ParameterEntries:
|
||||||
|
- name: IsMoving
|
||||||
|
NameHash: 120489994
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 4
|
||||||
|
- name: Attack
|
||||||
|
NameHash: 1080829965
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 9
|
||||||
|
- name: Speed
|
||||||
|
NameHash: -823668238
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 1
|
||||||
|
AnimatorParametersExpanded: 0
|
||||||
|
--- !u!114 &7711485244743381599
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 9065146123892903723}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkTransform
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkTransformExpanded: 0
|
||||||
|
AutoOwnerAuthorityTickOffset: 1
|
||||||
|
PositionInterpolationType: 0
|
||||||
|
RotationInterpolationType: 0
|
||||||
|
ScaleInterpolationType: 0
|
||||||
|
PositionLerpSmoothing: 1
|
||||||
|
PositionMaxInterpolationTime: 0.1
|
||||||
|
RotationLerpSmoothing: 1
|
||||||
|
RotationMaxInterpolationTime: 0.1
|
||||||
|
ScaleLerpSmoothing: 1
|
||||||
|
ScaleMaxInterpolationTime: 0.1
|
||||||
|
AuthorityMode: 0
|
||||||
|
TickSyncChildren: 0
|
||||||
|
UseUnreliableDeltas: 0
|
||||||
|
SyncPositionX: 1
|
||||||
|
SyncPositionY: 1
|
||||||
|
SyncPositionZ: 1
|
||||||
|
SyncRotAngleX: 1
|
||||||
|
SyncRotAngleY: 1
|
||||||
|
SyncRotAngleZ: 1
|
||||||
|
SyncScaleX: 1
|
||||||
|
SyncScaleY: 1
|
||||||
|
SyncScaleZ: 1
|
||||||
|
PositionThreshold: 0.001
|
||||||
|
RotAngleThreshold: 0.01
|
||||||
|
ScaleThreshold: 0.01
|
||||||
|
UseQuaternionSynchronization: 0
|
||||||
|
UseQuaternionCompression: 0
|
||||||
|
UseHalfFloatPrecision: 0
|
||||||
|
InLocalSpace: 0
|
||||||
|
SwitchTransformSpaceWhenParented: 0
|
||||||
|
Interpolate: 1
|
||||||
|
SlerpPosition: 0
|
||||||
|
|||||||
@@ -573,6 +573,8 @@ GameObject:
|
|||||||
- component: {fileID: 8817410469440881478}
|
- component: {fileID: 8817410469440881478}
|
||||||
- component: {fileID: 4622788731972862423}
|
- component: {fileID: 4622788731972862423}
|
||||||
- component: {fileID: 7440244263211200161}
|
- component: {fileID: 7440244263211200161}
|
||||||
|
- component: {fileID: 1220060486488589814}
|
||||||
|
- component: {fileID: 6824363881054723903}
|
||||||
m_Layer: 11
|
m_Layer: 11
|
||||||
m_Name: Monster103
|
m_Name: Monster103
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -658,7 +660,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
||||||
ShowTopMostFoldoutHeaderGroup: 1
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
enemyTeam: 3
|
enemyTeam: 3
|
||||||
maxHealth: 150
|
maxHealth: 100
|
||||||
damageEffectPrefab: {fileID: 0}
|
damageEffectPrefab: {fileID: 0}
|
||||||
destroyEffectPrefab: {fileID: 0}
|
destroyEffectPrefab: {fileID: 0}
|
||||||
--- !u!195 &7475699343328683952
|
--- !u!195 &7475699343328683952
|
||||||
@@ -671,7 +673,7 @@ NavMeshAgent:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_AgentTypeID: 0
|
m_AgentTypeID: 0
|
||||||
m_Radius: 0.5
|
m_Radius: 0.5
|
||||||
m_Speed: 5
|
m_Speed: 8
|
||||||
m_Acceleration: 8
|
m_Acceleration: 8
|
||||||
avoidancePriority: 50
|
avoidancePriority: 50
|
||||||
m_AngularSpeed: 120
|
m_AngularSpeed: 120
|
||||||
@@ -710,7 +712,7 @@ MonoBehaviour:
|
|||||||
attackRange: 1
|
attackRange: 1
|
||||||
attackInterval: 1.5
|
attackInterval: 1.5
|
||||||
attackDamage: 4
|
attackDamage: 4
|
||||||
moveSpeed: 5
|
moveSpeed: 8
|
||||||
chaseSpeedMultiplier: 1.5
|
chaseSpeedMultiplier: 1.5
|
||||||
showDebugInfo: 1
|
showDebugInfo: 1
|
||||||
--- !u!114 &8817410469440881478
|
--- !u!114 &8817410469440881478
|
||||||
@@ -767,6 +769,84 @@ MonoBehaviour:
|
|||||||
isMovingParam: IsMoving
|
isMovingParam: IsMoving
|
||||||
autoLoadFromMonsterData: 1
|
autoLoadFromMonsterData: 1
|
||||||
debugLogging: 0
|
debugLogging: 0
|
||||||
|
--- !u!114 &1220060486488589814
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2347008446492047424}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e8d0727d5ae3244e3b569694d3912374, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkAnimator
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkAnimatorExpanded: 0
|
||||||
|
AuthorityMode: 0
|
||||||
|
m_Animator: {fileID: 4622788731972862423}
|
||||||
|
TransitionStateInfoList: []
|
||||||
|
AnimatorParameterEntries:
|
||||||
|
ParameterEntries:
|
||||||
|
- name: IsMoving
|
||||||
|
NameHash: 120489994
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 4
|
||||||
|
- name: Attack
|
||||||
|
NameHash: 1080829965
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 9
|
||||||
|
- name: Speed
|
||||||
|
NameHash: -823668238
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 1
|
||||||
|
AnimatorParametersExpanded: 0
|
||||||
|
--- !u!114 &6824363881054723903
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2347008446492047424}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkTransform
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkTransformExpanded: 0
|
||||||
|
AutoOwnerAuthorityTickOffset: 1
|
||||||
|
PositionInterpolationType: 0
|
||||||
|
RotationInterpolationType: 0
|
||||||
|
ScaleInterpolationType: 0
|
||||||
|
PositionLerpSmoothing: 1
|
||||||
|
PositionMaxInterpolationTime: 0.1
|
||||||
|
RotationLerpSmoothing: 1
|
||||||
|
RotationMaxInterpolationTime: 0.1
|
||||||
|
ScaleLerpSmoothing: 1
|
||||||
|
ScaleMaxInterpolationTime: 0.1
|
||||||
|
AuthorityMode: 0
|
||||||
|
TickSyncChildren: 0
|
||||||
|
UseUnreliableDeltas: 0
|
||||||
|
SyncPositionX: 1
|
||||||
|
SyncPositionY: 1
|
||||||
|
SyncPositionZ: 1
|
||||||
|
SyncRotAngleX: 1
|
||||||
|
SyncRotAngleY: 1
|
||||||
|
SyncRotAngleZ: 1
|
||||||
|
SyncScaleX: 1
|
||||||
|
SyncScaleY: 1
|
||||||
|
SyncScaleZ: 1
|
||||||
|
PositionThreshold: 0.001
|
||||||
|
RotAngleThreshold: 0.01
|
||||||
|
ScaleThreshold: 0.01
|
||||||
|
UseQuaternionSynchronization: 0
|
||||||
|
UseQuaternionCompression: 0
|
||||||
|
UseHalfFloatPrecision: 0
|
||||||
|
InLocalSpace: 0
|
||||||
|
SwitchTransformSpaceWhenParented: 0
|
||||||
|
Interpolate: 1
|
||||||
|
SlerpPosition: 0
|
||||||
--- !u!1 &2539709484014259363
|
--- !u!1 &2539709484014259363
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -1006,6 +1006,8 @@ GameObject:
|
|||||||
- component: {fileID: 177302896207380593}
|
- component: {fileID: 177302896207380593}
|
||||||
- component: {fileID: 1862252567762920688}
|
- component: {fileID: 1862252567762920688}
|
||||||
- component: {fileID: 5911536058953673153}
|
- component: {fileID: 5911536058953673153}
|
||||||
|
- component: {fileID: 4108093490310817228}
|
||||||
|
- component: {fileID: 4766373245218749495}
|
||||||
m_Layer: 11
|
m_Layer: 11
|
||||||
m_Name: Monster104
|
m_Name: Monster104
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -1104,7 +1106,7 @@ NavMeshAgent:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_AgentTypeID: 0
|
m_AgentTypeID: 0
|
||||||
m_Radius: 0.5
|
m_Radius: 0.5
|
||||||
m_Speed: 8
|
m_Speed: 9
|
||||||
m_Acceleration: 8
|
m_Acceleration: 8
|
||||||
avoidancePriority: 50
|
avoidancePriority: 50
|
||||||
m_AngularSpeed: 120
|
m_AngularSpeed: 120
|
||||||
@@ -1143,7 +1145,7 @@ MonoBehaviour:
|
|||||||
attackRange: 5
|
attackRange: 5
|
||||||
attackInterval: 1.4
|
attackInterval: 1.4
|
||||||
attackDamage: 2
|
attackDamage: 2
|
||||||
moveSpeed: 8
|
moveSpeed: 9
|
||||||
chaseSpeedMultiplier: 1.5
|
chaseSpeedMultiplier: 1.5
|
||||||
showDebugInfo: 1
|
showDebugInfo: 1
|
||||||
--- !u!114 &177302896207380593
|
--- !u!114 &177302896207380593
|
||||||
@@ -1200,6 +1202,84 @@ MonoBehaviour:
|
|||||||
isMovingParam: IsMoving
|
isMovingParam: IsMoving
|
||||||
autoLoadFromMonsterData: 1
|
autoLoadFromMonsterData: 1
|
||||||
debugLogging: 0
|
debugLogging: 0
|
||||||
|
--- !u!114 &4108093490310817228
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4973514444862586119}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e8d0727d5ae3244e3b569694d3912374, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkAnimator
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkAnimatorExpanded: 0
|
||||||
|
AuthorityMode: 0
|
||||||
|
m_Animator: {fileID: 1862252567762920688}
|
||||||
|
TransitionStateInfoList: []
|
||||||
|
AnimatorParameterEntries:
|
||||||
|
ParameterEntries:
|
||||||
|
- name: IsMoving
|
||||||
|
NameHash: 120489994
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 4
|
||||||
|
- name: Attack
|
||||||
|
NameHash: 1080829965
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 9
|
||||||
|
- name: Speed
|
||||||
|
NameHash: -823668238
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 1
|
||||||
|
AnimatorParametersExpanded: 0
|
||||||
|
--- !u!114 &4766373245218749495
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4973514444862586119}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkTransform
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkTransformExpanded: 0
|
||||||
|
AutoOwnerAuthorityTickOffset: 1
|
||||||
|
PositionInterpolationType: 0
|
||||||
|
RotationInterpolationType: 0
|
||||||
|
ScaleInterpolationType: 0
|
||||||
|
PositionLerpSmoothing: 1
|
||||||
|
PositionMaxInterpolationTime: 0.1
|
||||||
|
RotationLerpSmoothing: 1
|
||||||
|
RotationMaxInterpolationTime: 0.1
|
||||||
|
ScaleLerpSmoothing: 1
|
||||||
|
ScaleMaxInterpolationTime: 0.1
|
||||||
|
AuthorityMode: 0
|
||||||
|
TickSyncChildren: 0
|
||||||
|
UseUnreliableDeltas: 0
|
||||||
|
SyncPositionX: 1
|
||||||
|
SyncPositionY: 1
|
||||||
|
SyncPositionZ: 1
|
||||||
|
SyncRotAngleX: 1
|
||||||
|
SyncRotAngleY: 1
|
||||||
|
SyncRotAngleZ: 1
|
||||||
|
SyncScaleX: 1
|
||||||
|
SyncScaleY: 1
|
||||||
|
SyncScaleZ: 1
|
||||||
|
PositionThreshold: 0.001
|
||||||
|
RotAngleThreshold: 0.01
|
||||||
|
ScaleThreshold: 0.01
|
||||||
|
UseQuaternionSynchronization: 0
|
||||||
|
UseQuaternionCompression: 0
|
||||||
|
UseHalfFloatPrecision: 0
|
||||||
|
InLocalSpace: 0
|
||||||
|
SwitchTransformSpaceWhenParented: 0
|
||||||
|
Interpolate: 1
|
||||||
|
SlerpPosition: 0
|
||||||
--- !u!1 &4997191723076249824
|
--- !u!1 &4997191723076249824
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -1251,6 +1251,8 @@ GameObject:
|
|||||||
- component: {fileID: 324484408599232274}
|
- component: {fileID: 324484408599232274}
|
||||||
- component: {fileID: 7080935390488809924}
|
- component: {fileID: 7080935390488809924}
|
||||||
- component: {fileID: 2411439469101207928}
|
- component: {fileID: 2411439469101207928}
|
||||||
|
- component: {fileID: 5730991426544788936}
|
||||||
|
- component: {fileID: 8640017635750122272}
|
||||||
m_Layer: 11
|
m_Layer: 11
|
||||||
m_Name: Monster105
|
m_Name: Monster105
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -1336,7 +1338,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
||||||
ShowTopMostFoldoutHeaderGroup: 1
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
enemyTeam: 3
|
enemyTeam: 3
|
||||||
maxHealth: 130
|
maxHealth: 90
|
||||||
damageEffectPrefab: {fileID: 0}
|
damageEffectPrefab: {fileID: 0}
|
||||||
destroyEffectPrefab: {fileID: 0}
|
destroyEffectPrefab: {fileID: 0}
|
||||||
--- !u!195 &1255224548206942124
|
--- !u!195 &1255224548206942124
|
||||||
@@ -1445,6 +1447,84 @@ MonoBehaviour:
|
|||||||
isMovingParam: IsMoving
|
isMovingParam: IsMoving
|
||||||
autoLoadFromMonsterData: 1
|
autoLoadFromMonsterData: 1
|
||||||
debugLogging: 0
|
debugLogging: 0
|
||||||
|
--- !u!114 &5730991426544788936
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5710477988932221578}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e8d0727d5ae3244e3b569694d3912374, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkAnimator
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkAnimatorExpanded: 0
|
||||||
|
AuthorityMode: 0
|
||||||
|
m_Animator: {fileID: 7080935390488809924}
|
||||||
|
TransitionStateInfoList: []
|
||||||
|
AnimatorParameterEntries:
|
||||||
|
ParameterEntries:
|
||||||
|
- name: IsMoving
|
||||||
|
NameHash: 120489994
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 4
|
||||||
|
- name: Attack
|
||||||
|
NameHash: 1080829965
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 9
|
||||||
|
- name: Speed
|
||||||
|
NameHash: -823668238
|
||||||
|
Synchronize: 1
|
||||||
|
ParameterType: 1
|
||||||
|
AnimatorParametersExpanded: 0
|
||||||
|
--- !u!114 &8640017635750122272
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5710477988932221578}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkTransform
|
||||||
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
NetworkTransformExpanded: 0
|
||||||
|
AutoOwnerAuthorityTickOffset: 1
|
||||||
|
PositionInterpolationType: 0
|
||||||
|
RotationInterpolationType: 0
|
||||||
|
ScaleInterpolationType: 0
|
||||||
|
PositionLerpSmoothing: 1
|
||||||
|
PositionMaxInterpolationTime: 0.1
|
||||||
|
RotationLerpSmoothing: 1
|
||||||
|
RotationMaxInterpolationTime: 0.1
|
||||||
|
ScaleLerpSmoothing: 1
|
||||||
|
ScaleMaxInterpolationTime: 0.1
|
||||||
|
AuthorityMode: 0
|
||||||
|
TickSyncChildren: 0
|
||||||
|
UseUnreliableDeltas: 0
|
||||||
|
SyncPositionX: 1
|
||||||
|
SyncPositionY: 1
|
||||||
|
SyncPositionZ: 1
|
||||||
|
SyncRotAngleX: 1
|
||||||
|
SyncRotAngleY: 1
|
||||||
|
SyncRotAngleZ: 1
|
||||||
|
SyncScaleX: 1
|
||||||
|
SyncScaleY: 1
|
||||||
|
SyncScaleZ: 1
|
||||||
|
PositionThreshold: 0.001
|
||||||
|
RotAngleThreshold: 0.01
|
||||||
|
ScaleThreshold: 0.01
|
||||||
|
UseQuaternionSynchronization: 0
|
||||||
|
UseQuaternionCompression: 0
|
||||||
|
UseHalfFloatPrecision: 0
|
||||||
|
InLocalSpace: 0
|
||||||
|
SwitchTransformSpaceWhenParented: 0
|
||||||
|
Interpolate: 1
|
||||||
|
SlerpPosition: 0
|
||||||
--- !u!1 &6071706308012469538
|
--- !u!1 &6071706308012469538
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -2829,6 +2829,8 @@ GameObject:
|
|||||||
- component: {fileID: 2053530247}
|
- component: {fileID: 2053530247}
|
||||||
- component: {fileID: 2053530249}
|
- component: {fileID: 2053530249}
|
||||||
- component: {fileID: 2053530250}
|
- component: {fileID: 2053530250}
|
||||||
|
- component: {fileID: 2053530251}
|
||||||
|
- component: {fileID: 2053530252}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: NetworkTester
|
m_Name: NetworkTester
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -2848,8 +2850,8 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 1d695616342b92d449295973fc4cda7e, type: 3}
|
m_Script: {fileID: 11500000, guid: 1d695616342b92d449295973fc4cda7e, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.NetworkManagerQuickTest
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.NetworkManagerQuickTest
|
||||||
runTestOnStart: 1
|
runTestOnStart: 0
|
||||||
showDetailedLogs: 1
|
showDetailedLogs: 0
|
||||||
--- !u!4 &2053530248
|
--- !u!4 &2053530248
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -2893,6 +2895,32 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.PortListenerTestSimultaneous
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.PortListenerTestSimultaneous
|
||||||
testPort: 40445
|
testPort: 40445
|
||||||
autoStartOnEnable: 0
|
autoStartOnEnable: 0
|
||||||
|
--- !u!114 &2053530251
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2053530245}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 977685b2792b7684dbc782d410338a51, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.SimpleNetworkMonitor
|
||||||
|
enableOnStart: 1
|
||||||
|
checkInterval: 2
|
||||||
|
--- !u!114 &2053530252
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2053530245}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8ab98e4f98fbe4e44a4a2f7cb8fe59ca, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.NetworkConfigDebugger
|
||||||
--- !u!1001 &2098115307
|
--- !u!1001 &2098115307
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -3542,15 +3570,15 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 2236804103334722056, guid: e56926eda34629f4fbf3e4c53f0f8bd4, type: 3}
|
- target: {fileID: 2236804103334722056, guid: e56926eda34629f4fbf3e4c53f0f8bd4, type: 3}
|
||||||
propertyPath: m_Size.x
|
propertyPath: m_Size.x
|
||||||
value: 8
|
value: 9
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 2236804103334722056, guid: e56926eda34629f4fbf3e4c53f0f8bd4, type: 3}
|
- target: {fileID: 2236804103334722056, guid: e56926eda34629f4fbf3e4c53f0f8bd4, type: 3}
|
||||||
propertyPath: m_Size.y
|
propertyPath: m_Size.y
|
||||||
value: 8
|
value: 9
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 2236804103334722056, guid: e56926eda34629f4fbf3e4c53f0f8bd4, type: 3}
|
- target: {fileID: 2236804103334722056, guid: e56926eda34629f4fbf3e4c53f0f8bd4, type: 3}
|
||||||
propertyPath: m_Size.z
|
propertyPath: m_Size.z
|
||||||
value: 8
|
value: 9
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5173262576415873253, guid: e56926eda34629f4fbf3e4c53f0f8bd4, type: 3}
|
- target: {fileID: 5173262576415873253, guid: e56926eda34629f4fbf3e4c53f0f8bd4, type: 3}
|
||||||
propertyPath: GlobalObjectIdHash
|
propertyPath: GlobalObjectIdHash
|
||||||
|
|||||||
@@ -190,9 +190,7 @@ namespace Northbound
|
|||||||
networkObj = creep.AddComponent<NetworkObject>();
|
networkObj = creep.AddComponent<NetworkObject>();
|
||||||
}
|
}
|
||||||
|
|
||||||
networkObj.Spawn();
|
networkObj.SpawnWithOwnership(NetworkManager.Singleton.LocalClientId);
|
||||||
|
|
||||||
creep.transform.SetParent(transform);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDrawGizmos()
|
private void OnDrawGizmos()
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ using System.Collections.Generic;
|
|||||||
using Unity.Netcode;
|
using Unity.Netcode;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class EnemyPortal : MonoBehaviour
|
public class EnemyPortal : NetworkBehaviour
|
||||||
{
|
{
|
||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class MonsterEntry
|
public class MonsterEntry
|
||||||
@@ -131,6 +131,8 @@ public class EnemyPortal : MonoBehaviour
|
|||||||
|
|
||||||
private void SpawnEnemy(GameObject prefab)
|
private void SpawnEnemy(GameObject prefab)
|
||||||
{
|
{
|
||||||
|
if (!IsServer) return;
|
||||||
|
|
||||||
GameObject enemy = Instantiate(prefab, transform);
|
GameObject enemy = Instantiate(prefab, transform);
|
||||||
|
|
||||||
if (enemy.GetComponent<FogOfWarVisibility>() == null)
|
if (enemy.GetComponent<FogOfWarVisibility>() == null)
|
||||||
@@ -140,7 +142,7 @@ public class EnemyPortal : MonoBehaviour
|
|||||||
visibility.updateInterval = 0.2f;
|
visibility.updateInterval = 0.2f;
|
||||||
}
|
}
|
||||||
|
|
||||||
enemy.GetComponent<NetworkObject>().Spawn();
|
enemy.GetComponent<NetworkObject>().SpawnWithOwnership(NetworkManager.Singleton.LocalClientId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void IncreaseCost()
|
private void IncreaseCost()
|
||||||
|
|||||||
334
Assets/Scripts/FINAL_SOLUTION_KO.md
Normal file
334
Assets/Scripts/FINAL_SOLUTION_KO.md
Normal file
@@ -0,0 +1,334 @@
|
|||||||
|
# 🎯 최종 진단 및 해결 가이드
|
||||||
|
|
||||||
|
## 📊 현재 상황 분석
|
||||||
|
|
||||||
|
### 성공한 사항
|
||||||
|
- ✅ yougetsignal: 포트 4045 접근 가능 (외부에서 열림)
|
||||||
|
- ✅ 방화벽: 허용 (yougetsignal 성공으로 증명)
|
||||||
|
- ✅ OS 바인딩: 가능 (PortListenerTest 증명)
|
||||||
|
- ✅ NetworkManager: IsServer=True, IsHost=True
|
||||||
|
- ✅ Player Prefab: Player (할당됨)
|
||||||
|
- ✅ Unity Transport: 4045, 0.0.0.0
|
||||||
|
- ✅ 모든 설정: 올바름
|
||||||
|
|
||||||
|
### 문제: 유니티 Netcode가 반복적으로 네트워크를 종료
|
||||||
|
```
|
||||||
|
상황:
|
||||||
|
- 게임 시작 → 호스트 시작됨
|
||||||
|
- 잠시후 (1-30초) → 서버 종료됨
|
||||||
|
- 포트 4045: 외부에서 닫힘
|
||||||
|
- yougetsignal: "closed"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 문제 원인
|
||||||
|
|
||||||
|
### 가장 흔한 가능성 1: AutoHost 간섭
|
||||||
|
```
|
||||||
|
AutoHost가 다음과 같은 행동:
|
||||||
|
- Start()에서 자동으로 StartHost() 호출
|
||||||
|
- NetworkManager가 이미 실행 중이면
|
||||||
|
→ 다시 시도하거나
|
||||||
|
→ 무시하고 넘어감
|
||||||
|
- 하지만 연결 승인 처리 중 오류가 발생하면
|
||||||
|
→ 자동으로 종료하거나
|
||||||
|
→ 포트가 닫힘
|
||||||
|
```
|
||||||
|
|
||||||
|
**해결책:**
|
||||||
|
```
|
||||||
|
씬에서 AutoHost 컴포넌트 제거
|
||||||
|
또는 Enable Auto Host 체크 해제
|
||||||
|
```
|
||||||
|
|
||||||
|
### 가장 흔한 가능성 2: NetworkConnectionHandler 승인 오류
|
||||||
|
```
|
||||||
|
NetworkConnectionHandler.ApprovalCheck()에서:
|
||||||
|
- 스폰 포인트 모두 찾았음
|
||||||
|
- 하지만 승인: response.Approved = true
|
||||||
|
- response.CreatePlayerObject = false
|
||||||
|
- response.Position/Rotation 설정
|
||||||
|
|
||||||
|
이 상황에서:
|
||||||
|
- Netcode는 "수동 스폰으로 대기" 상태로 됨
|
||||||
|
- 하지만 실제 플레이어 스폰하지 않음 (CreatePlayerObject=false)
|
||||||
|
- 연결 시간초과 또는 서버 측에서 종료
|
||||||
|
```
|
||||||
|
|
||||||
|
**해결책:**
|
||||||
|
```
|
||||||
|
NetworkConnectionHandler.ApprovalCheck() 수정:
|
||||||
|
|
||||||
|
response.Approved = true;
|
||||||
|
response.CreatePlayerObject = false;
|
||||||
|
response.PlayerPrefabHash = 0;
|
||||||
|
response.Position = Vector3.zero;
|
||||||
|
response.Rotation = Quaternion.identity;
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
response.Approved = true;
|
||||||
|
response.CreatePlayerObject = true; // 스폰 생성!
|
||||||
|
response.PlayerPrefabHash = NetworkManager.Singleton.NetworkConfig.PlayerPrefab.GetComponent<NetworkObject>().GlobalObjectIdHash;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 가능성 3: 다른 스크립트에서 Shutdown() 호출
|
||||||
|
```
|
||||||
|
AutoHost, 네트워크 관련 스크립트 등에서
|
||||||
|
- 명시적이든 아니든 NetworkManager.Shutdown()를 호출
|
||||||
|
- 연결 제대로 되지 않아도 호출됨
|
||||||
|
```
|
||||||
|
|
||||||
|
**해결책:**
|
||||||
|
```
|
||||||
|
- 모든 스크립트에서 Shutdown() 호출 제거
|
||||||
|
- 또는 명시적인 조건문 추가
|
||||||
|
```
|
||||||
|
|
||||||
|
### 가능성 4: 네트워크 이벤트에서 예외 발생
|
||||||
|
```
|
||||||
|
NetworkConnectionHandler의 다른 이벤트 핸들러에서
|
||||||
|
- 예외가 발생해 NetworkManager.Shutdown() 트리거
|
||||||
|
```
|
||||||
|
|
||||||
|
**해결책:**
|
||||||
|
```
|
||||||
|
try-catch로 래핑 및 로깅 추가
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 해결 단계 (순서대로 수행)
|
||||||
|
|
||||||
|
### 1단계: AutoHost 제거 (가장 중요!)
|
||||||
|
```
|
||||||
|
1. 씬에서 AutoHost 게임오브젝트 찾기
|
||||||
|
2. 제거 (컴포넌트 우클릭 → Remove Component)
|
||||||
|
3. 또는 Enable Auto Host 체크 해제
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2단계: SimpleNetworkMonitor 추가
|
||||||
|
```
|
||||||
|
1. SimpleNetworkMonitor를 씬에 추가
|
||||||
|
2. 플레이하여 5-10초간 관찰
|
||||||
|
3. "Server stopped X times!" 메시지가 나오면
|
||||||
|
→ 이것이 문제 원인 확인!
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3단계: 문제 원인 찾기
|
||||||
|
```
|
||||||
|
Monitor에서 다음을 확인:
|
||||||
|
|
||||||
|
정상적인 경우:
|
||||||
|
- Server started (Count: 1)
|
||||||
|
- 그 후 중지 중단 없음
|
||||||
|
- Server uptime: 계속 증가
|
||||||
|
|
||||||
|
불안정적인 경우 (현재 문제):
|
||||||
|
- Server started (Count: 1)
|
||||||
|
- Server stopped (Count: 1+)
|
||||||
|
- Server started (Count: 2+)
|
||||||
|
- Server stopped (Count: 2+)
|
||||||
|
- 짧은 업타임 (1-30초)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4단계: AutoHost가 원인인지 확인
|
||||||
|
```
|
||||||
|
|
||||||
|
1. AutoHost 제거 후 테스트
|
||||||
|
2. 호스트 시작
|
||||||
|
3. Monitor 관찰
|
||||||
|
4. 포트 열린 상태 확인 (yougetsignal)
|
||||||
|
|
||||||
|
이것으로 해결되면:
|
||||||
|
→ AutoHost가 문제였음!
|
||||||
|
|
||||||
|
해결되지 않으면:
|
||||||
|
→ 다른 원인 찾아야 함
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 팀원과 테스트 방법
|
||||||
|
|
||||||
|
### 호스트 (당신)
|
||||||
|
```
|
||||||
|
1. AutoHost 제거
|
||||||
|
2. SimpleNetworkMonitor 추가
|
||||||
|
3. 호스트 시작
|
||||||
|
4. Monitor에서 "Server uptime" 관찰
|
||||||
|
5. yougetsignal에서 포트 4045 확인
|
||||||
|
6. 팀원에게 퍼블릭 IP 공유
|
||||||
|
```
|
||||||
|
|
||||||
|
### 팀원
|
||||||
|
```
|
||||||
|
1. 에디터에서 클라이언트 모드 시작
|
||||||
|
2. 당신의 퍼블릭 IP 입력: 4045
|
||||||
|
3. "연결" 클릭
|
||||||
|
4. 성공: 플레이어 스폰, 게임 시작! 🎉
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 예상 결과
|
||||||
|
|
||||||
|
### 성공한 경우
|
||||||
|
```
|
||||||
|
Monitor 로그:
|
||||||
|
[SimpleMonitor] Server started (Count: 1)
|
||||||
|
[SimpleMonitor] Server uptime: 10s, 20s, 30s...
|
||||||
|
[SimpleMonitor] Client connected: [팀원 ID]
|
||||||
|
|
||||||
|
팀원:
|
||||||
|
- 접속 성공!
|
||||||
|
- 플레이어 스폰됨
|
||||||
|
- 게임 시작 가능!
|
||||||
|
|
||||||
|
yougetsignal:
|
||||||
|
- Port 4045: open
|
||||||
|
```
|
||||||
|
|
||||||
|
### 실패하는 경우 (현재)
|
||||||
|
```
|
||||||
|
Monitor 로그:
|
||||||
|
[SimpleMonitor] Server started (Count: 1)
|
||||||
|
[SimpleMonitor] Server stopped (Count: 1, Uptime: 5s)
|
||||||
|
[SimpleMonitor] Server started (Count: 2)
|
||||||
|
[SimpleMonitor] Server stopped (Count: 2, Uptime: 8s)
|
||||||
|
|
||||||
|
팀원:
|
||||||
|
- 접속 시도
|
||||||
|
- "Failed to connect" 에러
|
||||||
|
- 포트가 닫힘 있어서 실패
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 필수 조치
|
||||||
|
|
||||||
|
### 1. AutoHost 제거 (즉시)
|
||||||
|
```
|
||||||
|
AutoHost는 게임에 필요 없음
|
||||||
|
- 네트워크 연결 UI를 사용하세요
|
||||||
|
- NetworkConnectionHelper나
|
||||||
|
- 또는 직접 NetworkManager.StartHost()
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 설정 확인
|
||||||
|
```
|
||||||
|
NetworkManager → Network Config:
|
||||||
|
✓ Player Prefab: Player
|
||||||
|
✓ Connection Approval: 체크
|
||||||
|
✓ Enable Scene Management: 체크
|
||||||
|
|
||||||
|
Unity Transport:
|
||||||
|
✓ Port: 4045
|
||||||
|
✓ Address: 0.0.0.0
|
||||||
|
✓ ServerListenAddress: 0.0.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 방화벽 확인
|
||||||
|
```
|
||||||
|
Windows 방화벽:
|
||||||
|
- 포트 4045 허용
|
||||||
|
- Unity Editor 허용
|
||||||
|
- 빌드 실행파일 허용
|
||||||
|
|
||||||
|
라우터:
|
||||||
|
- 포트 포워딩 구성됨
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 테스트 체크리스트
|
||||||
|
|
||||||
|
### 호스트 측
|
||||||
|
- [ ] AutoHost 제거됨
|
||||||
|
- [ ] SimpleNetworkMonitor 추가됨
|
||||||
|
- [ ] 호스트 시작 성공
|
||||||
|
- [ ] 서버 중지 없음 (최소 30초)
|
||||||
|
- [ ] Monitor: "Server uptime: 30s+" 표시
|
||||||
|
- [ ] yougetsignal: "Port 4045 is open"
|
||||||
|
|
||||||
|
### 팀원 측
|
||||||
|
- [ ] 퍼블릭 IP 입력: 4045
|
||||||
|
- [ ] "연결" 클릭
|
||||||
|
- [ ] 접속 성공
|
||||||
|
- [ ] 플레이어 스폰됨
|
||||||
|
- [ ] 게임 시작 가능
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 다음 액션
|
||||||
|
|
||||||
|
### 지금 당장 할 것
|
||||||
|
```
|
||||||
|
1. AutoHost 제거 (씬에서 찾기 → Remove Component)
|
||||||
|
2. 플레이하여 10초간 관찰
|
||||||
|
3. Monitor 로그 확인
|
||||||
|
4. "Server stopped X times!" 보이면
|
||||||
|
→ 이것이 해결해야 할 포인트!
|
||||||
|
```
|
||||||
|
|
||||||
|
### Monitor가 보여주는 것
|
||||||
|
```
|
||||||
|
정상:
|
||||||
|
✓ Server started (Count: 1)
|
||||||
|
✓ Uptime: 계속 증가
|
||||||
|
✓ Client connected: [ID]
|
||||||
|
|
||||||
|
불안정 (현재):
|
||||||
|
✗ Server stopped (Count: 1)
|
||||||
|
✗ Server stopped (Count: 2+)
|
||||||
|
✗ 짧은 업타임
|
||||||
|
✗ Uptime: 5s, 10s, 15s
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 해결 우선순위
|
||||||
|
|
||||||
|
### 1순위: AutoHost 제거 (가장 중요!)
|
||||||
|
- 이것이 가장 흔한 원인
|
||||||
|
- 완전히 제거 필요
|
||||||
|
|
||||||
|
### 2순위: Monitor 관찰
|
||||||
|
- 5-10초 관찰
|
||||||
|
- Server가 안정적인지 확인
|
||||||
|
|
||||||
|
### 3순위: 팀원 테스트
|
||||||
|
- 설정이 안정적이면 테스트
|
||||||
|
- 문제 지속되면 추가 조치
|
||||||
|
|
||||||
|
### 4순위: 네트워크 로그 분석
|
||||||
|
- Console에서 경고/에러 확인
|
||||||
|
- Shutdown()이 언제 호출되는지 파악
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 성공하면 보게 될 것
|
||||||
|
|
||||||
|
```
|
||||||
|
Monitor: Server uptime: 60s+
|
||||||
|
yougetsignal: Port 4045 is open
|
||||||
|
팀원: 접속 성공!
|
||||||
|
게임: 팀원 플레이어 스폰됨, 시작 가능! 🎉
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 참고
|
||||||
|
|
||||||
|
이 가이드의 모든 설정이:
|
||||||
|
- ✅ yougetsignal 성공으로 검증됨 (외부 접근 가능)
|
||||||
|
- ✅ 포트 포워딩 작동 중
|
||||||
|
- ✅ 방화벽 허용
|
||||||
|
- ✅ OS 바인딩 가능
|
||||||
|
|
||||||
|
현재 유일한 문제:
|
||||||
|
- 유니티 Netcode가 반복적으로 서버를 중지
|
||||||
|
- 포트가 1-30초 후 닫힘
|
||||||
|
|
||||||
|
해결책: AutoHost 제거가 이 문제를 해결할 가능성이 가장 높음!
|
||||||
7
Assets/Scripts/FINAL_SOLUTION_KO.md.meta
Normal file
7
Assets/Scripts/FINAL_SOLUTION_KO.md.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cbc87bc6c6ff80843a00d9ca19932155
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -25,21 +25,21 @@ namespace Northbound
|
|||||||
private NetworkVariable<float> _currentTime = new NetworkVariable<float>(
|
private NetworkVariable<float> _currentTime = new NetworkVariable<float>(
|
||||||
0f,
|
0f,
|
||||||
NetworkVariableReadPermission.Everyone,
|
NetworkVariableReadPermission.Everyone,
|
||||||
NetworkVariableWritePermission.Server
|
NetworkVariableWritePermission.Owner
|
||||||
);
|
);
|
||||||
|
|
||||||
// 타이머 실행 중 여부
|
// 타이머 실행 중 여부
|
||||||
private NetworkVariable<bool> _isRunning = new NetworkVariable<bool>(
|
private NetworkVariable<bool> _isRunning = new NetworkVariable<bool>(
|
||||||
false,
|
false,
|
||||||
NetworkVariableReadPermission.Everyone,
|
NetworkVariableReadPermission.Everyone,
|
||||||
NetworkVariableWritePermission.Server
|
NetworkVariableWritePermission.Owner
|
||||||
);
|
);
|
||||||
|
|
||||||
// 현재 사이클 번호
|
// 현재 사이클 번호
|
||||||
private NetworkVariable<int> _cycleCount = new NetworkVariable<int>(
|
private NetworkVariable<int> _cycleCount = new NetworkVariable<int>(
|
||||||
0,
|
0,
|
||||||
NetworkVariableReadPermission.Everyone,
|
NetworkVariableReadPermission.Everyone,
|
||||||
NetworkVariableWritePermission.Server
|
NetworkVariableWritePermission.Owner
|
||||||
);
|
);
|
||||||
|
|
||||||
// 이벤트
|
// 이벤트
|
||||||
@@ -83,7 +83,7 @@ namespace Northbound
|
|||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
if (!IsServer || !_isRunning.Value)
|
if (!IsServer || !IsOwner || !_isRunning.Value)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_currentTime.Value -= Time.deltaTime;
|
_currentTime.Value -= Time.deltaTime;
|
||||||
|
|||||||
@@ -116,7 +116,6 @@ namespace Northbound
|
|||||||
private List<Vector3> _spawnedPositions = new List<Vector3>();
|
private List<Vector3> _spawnedPositions = new List<Vector3>();
|
||||||
private List<Vector3> _creepCampPositions = new List<Vector3>();
|
private List<Vector3> _creepCampPositions = new List<Vector3>();
|
||||||
private List<GameObject> _creepPrefabs = new List<GameObject>();
|
private List<GameObject> _creepPrefabs = new List<GameObject>();
|
||||||
private Transform _objectsParent;
|
|
||||||
|
|
||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class ObstacleEntry
|
public class ObstacleEntry
|
||||||
@@ -188,19 +187,6 @@ namespace Northbound
|
|||||||
|
|
||||||
private void GenerateMap()
|
private void GenerateMap()
|
||||||
{
|
{
|
||||||
if (groupUnderParent)
|
|
||||||
{
|
|
||||||
_objectsParent = new GameObject("Generated Map Objects").transform;
|
|
||||||
_objectsParent.SetParent(transform);
|
|
||||||
|
|
||||||
NetworkObject parentNetworkObj = _objectsParent.gameObject.GetComponent<NetworkObject>();
|
|
||||||
if (parentNetworkObj == null)
|
|
||||||
{
|
|
||||||
parentNetworkObj = _objectsParent.gameObject.AddComponent<NetworkObject>();
|
|
||||||
}
|
|
||||||
parentNetworkObj.Spawn();
|
|
||||||
}
|
|
||||||
|
|
||||||
_spawnedPositions.Clear();
|
_spawnedPositions.Clear();
|
||||||
_creepCampPositions.Clear();
|
_creepCampPositions.Clear();
|
||||||
|
|
||||||
@@ -412,7 +398,7 @@ namespace Northbound
|
|||||||
for (int i = 0; i < _generatedResources.Length; i++)
|
for (int i = 0; i < _generatedResources.Length; i++)
|
||||||
{
|
{
|
||||||
GameObject resourceObj = Instantiate(resourcePrefab, new Vector3(_generatedResources[i].position.x, 1f, _generatedResources[i].position.y), Quaternion.identity);
|
GameObject resourceObj = Instantiate(resourcePrefab, new Vector3(_generatedResources[i].position.x, 1f, _generatedResources[i].position.y), Quaternion.identity);
|
||||||
|
|
||||||
Resource resource = resourceObj.GetComponent<Resource>();
|
Resource resource = resourceObj.GetComponent<Resource>();
|
||||||
if (resource == null)
|
if (resource == null)
|
||||||
{
|
{
|
||||||
@@ -422,15 +408,11 @@ namespace Northbound
|
|||||||
}
|
}
|
||||||
|
|
||||||
resource.InitializeQuality(_generatedResources[i].qualityModifier);
|
resource.InitializeQuality(_generatedResources[i].qualityModifier);
|
||||||
|
|
||||||
NetworkObject networkObj = resourceObj.GetComponent<NetworkObject>();
|
NetworkObject networkObj = resourceObj.GetComponent<NetworkObject>();
|
||||||
if (networkObj != null)
|
if (networkObj != null)
|
||||||
{
|
{
|
||||||
networkObj.Spawn();
|
networkObj.Spawn();
|
||||||
if (groupUnderParent && _objectsParent != null)
|
|
||||||
{
|
|
||||||
resourceObj.transform.SetParent(_objectsParent);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -557,11 +539,6 @@ namespace Northbound
|
|||||||
|
|
||||||
networkObj.Spawn();
|
networkObj.Spawn();
|
||||||
|
|
||||||
if (groupUnderParent && _objectsParent != null)
|
|
||||||
{
|
|
||||||
obstacle.transform.SetParent(_objectsParent);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (obstacle.GetComponent<FogOfWarVisibility>() == null)
|
if (obstacle.GetComponent<FogOfWarVisibility>() == null)
|
||||||
{
|
{
|
||||||
var visibility = obstacle.AddComponent<FogOfWarVisibility>();
|
var visibility = obstacle.AddComponent<FogOfWarVisibility>();
|
||||||
@@ -657,18 +634,7 @@ namespace Northbound
|
|||||||
|
|
||||||
private int CountObstacleType(GameObject prefab)
|
private int CountObstacleType(GameObject prefab)
|
||||||
{
|
{
|
||||||
int count = 0;
|
return 0;
|
||||||
if (_objectsParent != null)
|
|
||||||
{
|
|
||||||
foreach (Transform child in _objectsParent)
|
|
||||||
{
|
|
||||||
if (child.name.StartsWith(prefab.name))
|
|
||||||
{
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -860,6 +826,13 @@ namespace Northbound
|
|||||||
{
|
{
|
||||||
GameObject campObj = Instantiate(creepCampPrefab, position, Quaternion.identity);
|
GameObject campObj = Instantiate(creepCampPrefab, position, Quaternion.identity);
|
||||||
|
|
||||||
|
if (campObj.GetComponent<FogOfWarVisibility>() == null)
|
||||||
|
{
|
||||||
|
var visibility = campObj.AddComponent<FogOfWarVisibility>();
|
||||||
|
visibility.showInExploredAreas = false;
|
||||||
|
visibility.updateInterval = 0.2f;
|
||||||
|
}
|
||||||
|
|
||||||
CreepCamp creepCamp = campObj.GetComponent<CreepCamp>();
|
CreepCamp creepCamp = campObj.GetComponent<CreepCamp>();
|
||||||
if (creepCamp == null)
|
if (creepCamp == null)
|
||||||
{
|
{
|
||||||
@@ -879,18 +852,6 @@ namespace Northbound
|
|||||||
}
|
}
|
||||||
|
|
||||||
networkObj.Spawn();
|
networkObj.Spawn();
|
||||||
|
|
||||||
if (groupUnderParent && _objectsParent != null)
|
|
||||||
{
|
|
||||||
campObj.transform.SetParent(_objectsParent);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (campObj.GetComponent<FogOfWarVisibility>() == null)
|
|
||||||
{
|
|
||||||
var visibility = campObj.AddComponent<FogOfWarVisibility>();
|
|
||||||
visibility.showInExploredAreas = false;
|
|
||||||
visibility.updateInterval = 0.2f;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -912,34 +873,6 @@ namespace Northbound
|
|||||||
|
|
||||||
public void ClearGeneratedObjects()
|
public void ClearGeneratedObjects()
|
||||||
{
|
{
|
||||||
if (_objectsParent != null)
|
|
||||||
{
|
|
||||||
NetworkObject parentNetworkObj = _objectsParent.GetComponent<NetworkObject>();
|
|
||||||
if (parentNetworkObj != null && parentNetworkObj.IsSpawned)
|
|
||||||
{
|
|
||||||
parentNetworkObj.Despawn(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (Transform child in _objectsParent)
|
|
||||||
{
|
|
||||||
NetworkObject networkObj = child.GetComponent<NetworkObject>();
|
|
||||||
if (networkObj != null && networkObj.IsSpawned)
|
|
||||||
{
|
|
||||||
networkObj.Despawn(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Application.isPlaying)
|
|
||||||
{
|
|
||||||
Destroy(_objectsParent.gameObject);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DestroyImmediate(_objectsParent.gameObject);
|
|
||||||
}
|
|
||||||
_objectsParent = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
_spawnedPositions.Clear();
|
_spawnedPositions.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,13 +32,13 @@ namespace Northbound
|
|||||||
private NetworkVariable<float> _networkSpeed = new NetworkVariable<float>(
|
private NetworkVariable<float> _networkSpeed = new NetworkVariable<float>(
|
||||||
0f,
|
0f,
|
||||||
NetworkVariableReadPermission.Everyone,
|
NetworkVariableReadPermission.Everyone,
|
||||||
NetworkVariableWritePermission.Server
|
NetworkVariableWritePermission.Owner
|
||||||
);
|
);
|
||||||
|
|
||||||
private NetworkVariable<bool> _networkIsMoving = new NetworkVariable<bool>(
|
private NetworkVariable<bool> _networkIsMoving = new NetworkVariable<bool>(
|
||||||
false,
|
false,
|
||||||
NetworkVariableReadPermission.Everyone,
|
NetworkVariableReadPermission.Everyone,
|
||||||
NetworkVariableWritePermission.Server
|
NetworkVariableWritePermission.Owner
|
||||||
);
|
);
|
||||||
|
|
||||||
public override void OnNetworkSpawn()
|
public override void OnNetworkSpawn()
|
||||||
@@ -101,7 +101,7 @@ namespace Northbound
|
|||||||
{
|
{
|
||||||
if (!IsSpawned) return;
|
if (!IsSpawned) return;
|
||||||
|
|
||||||
if (IsServer)
|
if (IsServer && IsOwner)
|
||||||
{
|
{
|
||||||
UpdateServerSide();
|
UpdateServerSide();
|
||||||
}
|
}
|
||||||
|
|||||||
67
Assets/Scripts/NetworkConfigDebugger.cs
Normal file
67
Assets/Scripts/NetworkConfigDebugger.cs
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using Unity.Netcode;
|
||||||
|
|
||||||
|
namespace Northbound
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// NetworkConfig의 모든 설정을 로그로 출력하여 서버/클라이언트 차이점을 확인
|
||||||
|
/// </summary>
|
||||||
|
public class NetworkConfigDebugger : MonoBehaviour
|
||||||
|
{
|
||||||
|
[ContextMenu("Log NetworkConfig Details")]
|
||||||
|
public void LogNetworkConfig()
|
||||||
|
{
|
||||||
|
if (NetworkManager.Singleton == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("[NetworkConfigDebugger] NetworkManager not found!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.Log("=== NETWORK CONFIG DEBUGGER ===");
|
||||||
|
|
||||||
|
var config = NetworkManager.Singleton.NetworkConfig;
|
||||||
|
var transport = NetworkManager.Singleton.GetComponent<Unity.Netcode.Transports.UTP.UnityTransport>();
|
||||||
|
|
||||||
|
Debug.Log("<color=cyan>Basic Config:</color>");
|
||||||
|
Debug.Log($" ProtocolVersion: {config.ProtocolVersion}");
|
||||||
|
Debug.Log($" TickRate: {config.TickRate}");
|
||||||
|
Debug.Log($" ClientConnectionBufferTimeout: {config.ClientConnectionBufferTimeout}");
|
||||||
|
Debug.Log($" EnsureNetworkVariableLengthSafety: {config.EnsureNetworkVariableLengthSafety}");
|
||||||
|
|
||||||
|
Debug.Log("<color=cyan>Connection Settings:</color>");
|
||||||
|
Debug.Log($" ConnectionApproval: {config.ConnectionApproval}");
|
||||||
|
Debug.Log($" EnableSceneManagement: {config.EnableSceneManagement}");
|
||||||
|
Debug.Log($" EnableNetworkLogs: {config.EnableNetworkLogs}");
|
||||||
|
|
||||||
|
Debug.Log("<color=cyan>Spawn Settings:</color>");
|
||||||
|
Debug.Log($" ForceSamePrefabs: {config.ForceSamePrefabs}");
|
||||||
|
Debug.Log($" RecycleNetworkIds: {config.RecycleNetworkIds}");
|
||||||
|
Debug.Log($" PlayerPrefab: {config.PlayerPrefab?.name ?? "NULL"}");
|
||||||
|
|
||||||
|
Debug.Log("<color=cyan>NetworkPrefabs ({config.Prefabs.Prefabs.Count}):</color>");
|
||||||
|
foreach (var prefab in config.Prefabs.Prefabs)
|
||||||
|
{
|
||||||
|
Debug.Log($" - {prefab.Prefab.name} (Hash: {prefab.Prefab.GetHashCode()})");
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.Log("<color=cyan>Transport:</color>");
|
||||||
|
if (transport != null)
|
||||||
|
{
|
||||||
|
Debug.Log($" Address: {transport.ConnectionData.Address}");
|
||||||
|
Debug.Log($" Port: {transport.ConnectionData.Port}");
|
||||||
|
Debug.Log($" ServerData: {transport.ConnectionData.ServerListenAddress}:{transport.ConnectionData.Port}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogError(" Transport not found!");
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.Log("================================");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
Invoke(nameof(LogNetworkConfig), 1f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/NetworkConfigDebugger.cs.meta
Normal file
2
Assets/Scripts/NetworkConfigDebugger.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8ab98e4f98fbe4e44a4a2f7cb8fe59ca
|
||||||
115
Assets/Scripts/SimpleNetworkMonitor.cs
Normal file
115
Assets/Scripts/SimpleNetworkMonitor.cs
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using Unity.Netcode;
|
||||||
|
|
||||||
|
namespace Northbound
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Simple monitor for network restarts
|
||||||
|
/// Detects if Unity Netcode is shutting down repeatedly
|
||||||
|
/// </summary>
|
||||||
|
public class SimpleNetworkMonitor : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("Settings")]
|
||||||
|
[SerializeField] private bool enableOnStart = true;
|
||||||
|
[SerializeField] private float checkInterval = 2f;
|
||||||
|
|
||||||
|
private NetworkManager _networkManager;
|
||||||
|
private float _lastCheckTime;
|
||||||
|
private int _serverStopCount = 0;
|
||||||
|
private int _serverStartCount = 0;
|
||||||
|
private float _lastServerStartTime = 0f;
|
||||||
|
private int _eventsLogged = 0;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
if (enableOnStart)
|
||||||
|
{
|
||||||
|
_networkManager = NetworkManager.Singleton;
|
||||||
|
Debug.Log("[SimpleMonitor] Simple Network Monitor started");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (_networkManager == null)
|
||||||
|
{
|
||||||
|
_networkManager = NetworkManager.Singleton;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Time.time - _lastCheckTime >= checkInterval)
|
||||||
|
{
|
||||||
|
_lastCheckTime = Time.time;
|
||||||
|
CheckNetworkStatus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckNetworkStatus()
|
||||||
|
{
|
||||||
|
if (_networkManager == null)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("[SimpleMonitor] NetworkManager not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isServer = _networkManager.IsServer;
|
||||||
|
bool isClient = _networkManager.IsClient;
|
||||||
|
bool isHost = _networkManager.IsHost;
|
||||||
|
|
||||||
|
if (isServer && !isClient && _eventsLogged < 3)
|
||||||
|
{
|
||||||
|
_serverStartCount++;
|
||||||
|
_lastServerStartTime = Time.time;
|
||||||
|
Debug.Log("[SimpleMonitor] Server started (Count: " + _serverStartCount + ")");
|
||||||
|
_eventsLogged++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isServer && !isClient && _lastServerStartTime > 0f && _eventsLogged < 50)
|
||||||
|
{
|
||||||
|
float uptime = Time.time - _lastServerStartTime;
|
||||||
|
_serverStopCount++;
|
||||||
|
Debug.LogWarning("[SimpleMonitor] Server stopped (Count: " + _serverStopCount + ", Uptime: " + uptime.ToString("F1") + "s)");
|
||||||
|
_eventsLogged++;
|
||||||
|
|
||||||
|
if (_serverStopCount >= 3)
|
||||||
|
{
|
||||||
|
Debug.LogError("[SimpleMonitor] SERVER STOPPED " + _serverStopCount + " TIMES!");
|
||||||
|
Debug.LogError("[SimpleMonitor] This is why port closes!");
|
||||||
|
Debug.LogError("[SimpleMonitor] Something is calling NetworkManager.Shutdown()");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isServer && _serverStartCount > 0)
|
||||||
|
{
|
||||||
|
if (_eventsLogged % 10 == 0)
|
||||||
|
{
|
||||||
|
float uptime = Time.time - _lastServerStartTime;
|
||||||
|
Debug.Log("[SimpleMonitor] Server uptime: " + uptime.ToString("F1") + "s");
|
||||||
|
_eventsLogged++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[ContextMenu("Reset Counters")]
|
||||||
|
public void ResetCounters()
|
||||||
|
{
|
||||||
|
_serverStopCount = 0;
|
||||||
|
_serverStartCount = 0;
|
||||||
|
_lastServerStartTime = 0f;
|
||||||
|
_eventsLogged = 0;
|
||||||
|
Debug.Log("[SimpleMonitor] Counters reset");
|
||||||
|
}
|
||||||
|
|
||||||
|
[ContextMenu("Show Stats")]
|
||||||
|
public void ShowStats()
|
||||||
|
{
|
||||||
|
Debug.Log("=== SIMPLE MONITOR STATS ===");
|
||||||
|
Debug.Log("Server Stops: " + _serverStopCount);
|
||||||
|
Debug.Log("Server Starts: " + _serverStartCount);
|
||||||
|
Debug.Log("NetworkManager:");
|
||||||
|
Debug.Log(" IsServer: " + (_networkManager != null ? _networkManager.IsServer.ToString() : "null"));
|
||||||
|
Debug.Log(" IsClient: " + (_networkManager != null ? _networkManager.IsClient.ToString() : "null"));
|
||||||
|
Debug.Log(" IsHost: " + (_networkManager != null ? _networkManager.IsHost.ToString() : "null"));
|
||||||
|
Debug.Log("============================");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/SimpleNetworkMonitor.cs.meta
Normal file
2
Assets/Scripts/SimpleNetworkMonitor.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 977685b2792b7684dbc782d410338a51
|
||||||
Reference in New Issue
Block a user