상호작용 시 모달 UI 추가(임시)

기타 디버깅 로그 제거
This commit is contained in:
2026-02-03 21:32:16 +09:00
parent 02f5aa869a
commit 965a4a25aa
22 changed files with 1082 additions and 363 deletions

View File

@@ -105,6 +105,7 @@
<Compile Include="Assets\Scripts\BuildingManager.cs" />
<Compile Include="Assets\Scripts\GhostMaterialTest.cs" />
<Compile Include="Assets\Scripts\BuildingPlacement.cs" />
<Compile Include="Assets\Scripts\InteractableModalManager.cs" />
<Compile Include="Assets\Scripts\MonsterDataComponent.cs" />
<Compile Include="Assets\Scripts\Core.cs" />
<Compile Include="Assets\Scripts\GamePortConfig.cs" />
@@ -121,6 +122,7 @@
<Compile Include="Assets\Scripts\NetworkPlayerController.cs" />
<Compile Include="Assets\Scripts\PlayerInteraction.cs" />
<Compile Include="Assets\Scripts\FogOfWarVisibility.cs" />
<Compile Include="Assets\Scripts\InteractableModal.cs" />
<Compile Include="Assets\Scripts\NetworkResetAndRestart.cs" />
<Compile Include="Assets\Scripts\NetworkDebug.cs" />
<Compile Include="Assets\Data\Scripts\DataClasses\DefaultSettingsData.cs" />

View File

@@ -22,6 +22,7 @@ GameObject:
- component: {fileID: 1698609800605343773}
- component: {fileID: -4348726977448206869}
- component: {fileID: 7148704114816793672}
- component: {fileID: 6581787771557727003}
m_Layer: 9
m_Name: Player
m_TagString: Untagged
@@ -361,6 +362,20 @@ MonoBehaviour:
SwitchTransformSpaceWhenParented: 0
Interpolate: 1
SlerpPosition: 0
--- !u!114 &6581787771557727003
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1314983689436087486}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe6ae668d2ff79344bfdd618dd0d962a, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Northbound.InteractableModalManager
interactableModal: {fileID: 0}
playerInteraction: {fileID: 0}
--- !u!1001 &1445453803682481668
PrefabInstance:
m_ObjectHideFlags: 0

View File

@@ -79,6 +79,11 @@ MonoBehaviour:
resourceName: "\uAD11\uC11D"
rechargeInterval: 1
rechargeAmount: 5
_qualityPercentage:
m_InternalValue: 0
_displayQuality: 0
_displayMaxResources: 100
_displayRechargeAmount: 10
interactionAnimationTrigger: Mining
equipmentData:
socketName: handslot.r
@@ -90,6 +95,8 @@ MonoBehaviour:
detachDelay: 0
gatheringEffectPrefab: {fileID: 0}
effectSpawnPoint: {fileID: 0}
allowWorkerAssignment: 1
allowMultipleWorkers: 0
--- !u!65 &2900844162207268165
BoxCollider:
m_ObjectHideFlags: 0

View File

@@ -501,7 +501,7 @@ RectTransform:
m_Children:
- {fileID: 1053830688}
- {fileID: 1458057163}
m_Father: {fileID: 0}
m_Father: {fileID: 860732961}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -1194,6 +1194,50 @@ Transform:
m_Children: []
m_Father: {fileID: 576429380}
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!114 &790917424 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7839034454177399683, guid: 274613c415998a647a86a5e09950ce41, type: 3}
m_PrefabInstance: {fileID: 3224371285579271499}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
--- !u!1 &860732960
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 860732961}
m_Layer: 0
m_Name: UI
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &860732961
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 860732960}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -33.26864, y: 1.82041, z: -94}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 457600247}
- {fileID: 1527786189}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &908127335
GameObject:
m_ObjectHideFlags: 0
@@ -1735,6 +1779,32 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 11e3760dda2c0164abf759c18d918893, type: 3}
--- !u!1 &1077899659 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6332587651613424585, guid: 274613c415998a647a86a5e09950ce41, type: 3}
m_PrefabInstance: {fileID: 3224371285579271499}
m_PrefabAsset: {fileID: 0}
--- !u!224 &1077899660 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
m_PrefabInstance: {fileID: 3224371285579271499}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1077899665
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1077899659}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7008c42d5ce774d4d894f45b8a80a590, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Northbound.InteractableModal
modalPanel: {fileID: 1077899659}
keyText: {fileID: 1714106255}
interactText: {fileID: 790917424}
defaultKey: E
--- !u!4 &1135136907 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3247786716306397435, guid: f395fcc064a3a834ba957327f1387c19, type: 3}
@@ -2294,6 +2364,108 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1458057162}
m_CullTransparentMesh: 1
--- !u!1 &1527786185
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1527786189}
- component: {fileID: 1527786188}
- component: {fileID: 1527786187}
- component: {fileID: 1527786186}
m_Layer: 5
m_Name: InteractableModalCanvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1527786186
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1527786185}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.GraphicRaycaster
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &1527786187
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1527786185}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.CanvasScaler
m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 1920, y: 1080}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &1527786188
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1527786185}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 25
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!224 &1527786189
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1527786185}
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: 1077899660}
m_Father: {fileID: 860732961}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!1001 &1536695129
PrefabInstance:
m_ObjectHideFlags: 0
@@ -2489,6 +2661,17 @@ Transform:
m_Children: []
m_Father: {fileID: 640318137}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1714106255 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 3239286098141521726, guid: 274613c415998a647a86a5e09950ce41, type: 3}
m_PrefabInstance: {fileID: 3224371285579271499}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
--- !u!1 &1859567749
GameObject:
m_ObjectHideFlags: 0
@@ -3193,6 +3376,138 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 348c7681306990746bb7cab7a386be1e, type: 3}
--- !u!1001 &3224371285579271499
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 1527786189}
m_Modifications:
- target: {fileID: 1325989084779099817, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1325989084779099817, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1325989084779099817, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1325989084779099817, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2331150165244547235, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2331150165244547235, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2331150165244547235, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2331150165244547235, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchorMax.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchorMax.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchorMin.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchorMin.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_SizeDelta.x
value: 200
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_SizeDelta.y
value: 50
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4412526746668541195, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6332587651613424585, guid: 274613c415998a647a86a5e09950ce41, type: 3}
propertyPath: m_Name
value: ModalPanel
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 6332587651613424585, guid: 274613c415998a647a86a5e09950ce41, type: 3}
insertIndex: -1
addedObject: {fileID: 1077899665}
m_SourcePrefab: {fileID: 100100000, guid: 274613c415998a647a86a5e09950ce41, type: 3}
--- !u!1001 &4786254629656932894
PrefabInstance:
m_ObjectHideFlags: 0
@@ -3376,6 +3691,6 @@ SceneRoots:
- {fileID: 1433142232}
- {fileID: 1036857644}
- {fileID: 2053530248}
- {fileID: 457600247}
- {fileID: 640318137}
- {fileID: 576429380}
- {fileID: 860732961}

View File

@@ -104,15 +104,8 @@ namespace Northbound
{
int slotIndex = i; // 클로저 캡처를 위한 로컬 변수
_quickslotActions[i].performed += ctx => OnQuickslotPressed(slotIndex);
// Debug.Log($"[BuildingQuickslotUI] QuickSlot{i + 1} 액션 바인딩 성공");
}
else
{
Debug.LogWarning($"[BuildingQuickslotUI] QuickSlot{i + 1} 액션이 null입니다. Input Actions 에셋을 확인하세요.");
}
}
Debug.Log($"[BuildingQuickslotUI] {_quickslotActions.Length}개의 퀵슬롯 액션 초기화됨 (최대 8개 키 바인딩)");
}
/// <summary>
@@ -201,8 +194,6 @@ namespace Northbound
{
CreateSlot(buildings[i], i);
}
Debug.Log($"[BuildingQuickslotUI] {slotButtons.Count}개의 건물 슬롯 생성됨");
}
/// <summary>
@@ -248,8 +239,6 @@ namespace Northbound
{
SelectBuilding(0);
}
Debug.Log("[BuildingQuickslotUI] 건설 퀵슬롯 표시됨");
}
/// <summary>
@@ -279,8 +268,6 @@ namespace Northbound
if (slot != null)
slot.SetSelected(false);
}
Debug.Log("[BuildingQuickslotUI] 건설 퀵슬롯 숨김");
}
/// <summary>
@@ -309,8 +296,6 @@ namespace Northbound
// Description Panel 업데이트
UpdateDescriptionPanel();
Debug.Log($"[BuildingQuickslotUI] 건물 선택됨: {slotButtons[index].GetBuildingName()} (인덱스: {index})");
}
/// <summary>

View File

@@ -66,7 +66,6 @@ namespace Northbound
private void OnHealthChanged(int previousValue, int newValue)
{
Debug.Log($"<color=red>[Core] 코어 체력 변경: {previousValue} → {newValue} ({newValue}/{maxHealth})</color>");
}
#region ITeamMember Implementation
@@ -94,8 +93,6 @@ namespace Northbound
int actualDamage = Mathf.Min(damage, _currentHealth.Value);
_currentHealth.Value -= actualDamage;
Debug.Log($"<color=red>[Core] 코어가 {actualDamage} 데미지를 받았습니다! 남은 체력: {_currentHealth.Value}/{maxHealth}</color>");
// 데미지 이펙트
ShowDamageEffectClientRpc();
@@ -110,8 +107,6 @@ namespace Northbound
{
if (!IsServer) return;
Debug.Log($"<color=red>[Core] 코어가 파괴되었습니다! 게임 오버!</color>");
// 파괴 이펙트
ShowDestroyEffectClientRpc();
@@ -165,8 +160,6 @@ namespace Northbound
int previousAmount = _totalResources.Value;
_totalResources.Value -= amount;
Debug.Log($"<color=yellow>[Core] {amount} 자원 소비. 남은 자원: {_totalResources.Value}/{maxStorageCapacity}</color>");
}
/// <summary>
@@ -185,8 +178,6 @@ namespace Northbound
if (amount > 0)
{
_totalResources.Value += amount;
Debug.Log($"<color=green>[Core] {amount} 자원 추가. 총 자원: {_totalResources.Value}" +
(unlimitedStorage ? "" : $"/{maxStorageCapacity}") + "</color>");
}
}
@@ -230,11 +221,11 @@ namespace Northbound
{
if (unlimitedStorage)
{
return "[E] 자원 보관 (무제한)";
return "[E] Deposit (No Limit)";
}
else
{
return $"[E] 자원 보관 ({_totalResources.Value}/{maxStorageCapacity})";
return $"[E] Deposit ({_totalResources.Value}/{maxStorageCapacity})";
}
}
@@ -269,7 +260,6 @@ namespace Northbound
int playerResourceAmount = resourceManager.GetPlayerResourceAmount(playerId);
if (playerResourceAmount <= 0)
{
Debug.Log($"플레이어 {playerId}가 건낼 자원이 없습니다.");
return;
}
@@ -292,7 +282,6 @@ namespace Northbound
if (depositAmount <= 0)
{
Debug.Log($"코어의 저장 공간이 부족합니다.");
return;
}
@@ -300,9 +289,6 @@ namespace Northbound
UpdatePlayerResourcesClientRpc(playerId);
_totalResources.Value += depositAmount;
Debug.Log($"<color=green>[Core] 플레이어 {playerId}가 {depositAmount} 자원을 건넸습니다. 코어 총 자원: {_totalResources.Value}" +
(unlimitedStorage ? "" : $"/{maxStorageCapacity}") + "</color>");
ShowDepositEffectClientRpc();
}

View File

@@ -56,7 +56,6 @@ namespace Northbound
}
float remainingCost = campCostBudget * campStrength;
Debug.Log($"[CreepCamp] Cost budget: {campCostBudget} x {campStrength:F2} = {remainingCost:F2}");
int spawnedCount = 0;

View File

@@ -0,0 +1,90 @@
using TMPro;
using UnityEngine;
namespace Northbound
{
public class InteractableModal : MonoBehaviour
{
[Header("UI References")]
[SerializeField] private GameObject modalPanel;
[SerializeField] private TextMeshProUGUI keyText;
[SerializeField] private TextMeshProUGUI interactText;
[Header("Settings")]
[SerializeField] private string defaultKey = "E";
private IInteractable _currentInteractable;
private Canvas _parentCanvas;
private void Awake()
{
_parentCanvas = GetComponentInParent<Canvas>();
}
private void Start()
{
if (modalPanel != null)
{
modalPanel.SetActive(false);
}
}
public void ShowModal(IInteractable interactable)
{
if (interactable == null)
{
HideModal();
return;
}
_currentInteractable = interactable;
if (modalPanel != null)
{
modalPanel.SetActive(true);
UpdateModalContent();
}
}
public void HideModal()
{
_currentInteractable = null;
if (modalPanel != null)
{
modalPanel.SetActive(false);
}
}
public void UpdateModalContent()
{
if (_currentInteractable == null)
return;
if (keyText != null)
{
keyText.text = defaultKey;
}
if (interactText != null)
{
string prompt = _currentInteractable.GetInteractionPrompt();
interactText.text = ExtractInteractText(prompt);
}
}
private string ExtractInteractText(string prompt)
{
if (string.IsNullOrEmpty(prompt))
return string.Empty;
int startIndex = prompt.IndexOf(']');
if (startIndex >= 0 && startIndex + 1 < prompt.Length)
{
return prompt.Substring(startIndex + 1).Trim();
}
return prompt;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 7008c42d5ce774d4d894f45b8a80a590

View File

@@ -0,0 +1,96 @@
using UnityEngine;
namespace Northbound
{
public class InteractableModalManager : MonoBehaviour
{
[Header("UI Reference")]
public InteractableModal interactableModal;
[Header("References")]
[SerializeField] private PlayerInteraction playerInteraction;
private IInteractable _currentInteractable;
private void Awake()
{
if (playerInteraction == null)
{
playerInteraction = GetComponent<PlayerInteraction>();
}
if (interactableModal == null)
{
interactableModal = FindObjectOfType<InteractableModal>();
}
}
private void Start()
{
if (interactableModal != null)
{
interactableModal.HideModal();
}
}
private void Update()
{
if (playerInteraction == null)
return;
IInteractable detectedInteractable = GetDetectedInteractable();
if (detectedInteractable != _currentInteractable)
{
_currentInteractable = detectedInteractable;
if (_currentInteractable != null)
{
ShowModal(_currentInteractable);
}
else
{
HideModal();
}
}
else if (_currentInteractable != null)
{
UpdateModalContent();
}
}
private IInteractable GetDetectedInteractable()
{
var field = playerInteraction.GetType().GetField("_currentInteractable", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
if (field != null)
{
return field.GetValue(playerInteraction) as IInteractable;
}
return null;
}
private void ShowModal(IInteractable interactable)
{
if (interactableModal != null)
{
interactableModal.ShowModal(interactable);
}
}
private void HideModal()
{
if (interactableModal != null)
{
interactableModal.HideModal();
}
}
private void UpdateModalContent()
{
if (interactableModal != null)
{
interactableModal.UpdateModalContent();
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: fe6ae668d2ff79344bfdd618dd0d962a

View File

@@ -211,8 +211,6 @@ namespace Northbound
}
GenerateCreepCamps();
Debug.Log($"[MapGenerator] Map generation complete!");
}
#region Resource Generation
@@ -233,7 +231,6 @@ namespace Northbound
{
_generatedResources = resources;
success = true;
Debug.Log($"[MapGenerator] Successfully generated resources on attempt {attempt + 1}");
break;
}
else
@@ -401,8 +398,6 @@ namespace Northbound
{
_generatedResources[i].finalProduction *= _globalProductionMultiplier;
}
Debug.Log($"[MapGenerator] Resource fallback layout generated. Global multiplier: {_globalProductionMultiplier:F2}");
}
private void SpawnResources()
@@ -452,15 +447,12 @@ namespace Northbound
{
if (obstacles.Count == 0)
{
Debug.Log("[MapGenerator] No obstacles configured, skipping obstacle generation.");
return;
}
int totalSpawned = 0;
int targetCount = Mathf.RoundToInt(maxTotalObstacles * obstacleDensity);
Debug.Log($"[MapGenerator] Starting obstacle generation. Target: {targetCount}, Density: {obstacleDensity}");
foreach (var obstacle in obstacles)
{
if (obstacle.prefab == null)
@@ -475,7 +467,6 @@ namespace Northbound
if (TrySpawnObstacle(obstacle))
{
totalSpawned++;
Debug.Log($"[MapGenerator] Spawned min required obstacle: {obstacle.prefab.name}");
}
}
}
@@ -513,8 +504,6 @@ namespace Northbound
consecutiveFailures++;
}
}
Debug.Log($"[MapGenerator] Spawned {totalSpawned} obstacles (target: {targetCount}). Consecutive failures: {consecutiveFailures}");
}
private bool TrySpawnObstacle(ObstacleEntry obstacleEntry)
@@ -697,7 +686,7 @@ namespace Northbound
return;
}
Debug.Log($"[MapGenerator] Starting creep camp generation. Resources: {_generatedResources.Length}, Additional camps: {additionalCreepCampCount}");
int totalCampsSpawned = 0;
@@ -707,7 +696,6 @@ namespace Northbound
if (campPosition != Vector3.zero)
{
float strength = CalculateCampStrength(_generatedResources[i].position.y, isResourceCamp: true);
Debug.Log($"[MapGenerator] Spawning resource camp {i + 1} for resource at {_generatedResources[i].position}, position: {campPosition}, strength: {strength:F2} (with bonus)");
SpawnCreepCamp(campPosition, strength);
_creepCampPositions.Add(campPosition);
totalCampsSpawned++;
@@ -721,29 +709,22 @@ namespace Northbound
if (campPosition != Vector3.zero)
{
float strength = CalculateCampStrength(campPosition.z, isResourceCamp: false);
Debug.Log($"[MapGenerator] Spawning additional camp {i + 1}, position: {campPosition}, strength: {strength:F2}");
SpawnCreepCamp(campPosition, strength);
_creepCampPositions.Add(campPosition);
additionalSpawned++;
}
}
Debug.Log($"[MapGenerator] Spawned {totalCampsSpawned} resource-based camps and {additionalSpawned} additional camps. Total: {totalCampsSpawned + additionalSpawned}");
}
private void LoadCreepPrefabs()
{
Debug.Log($"[MapGenerator] LoadCreepPrefabs called, current count: {_creepPrefabs.Count}");
if (_creepPrefabs.Count > 0)
{
Debug.Log($"[MapGenerator] Skipping load, already have {_creepPrefabs.Count} prefabs");
return;
}
#if UNITY_EDITOR
string[] prefabGuids = UnityEditor.AssetDatabase.FindAssets("t:Prefab", new[] { "Assets/Prefabs/Creep" });
Debug.Log($"[MapGenerator] Found {prefabGuids.Length} prefabs in Assets/Prefabs/Creep/");
_creepPrefabs.Clear();
foreach (string guid in prefabGuids)
@@ -754,18 +735,13 @@ namespace Northbound
if (prefab != null && prefab.GetComponent<CreepDataComponent>() != null)
{
_creepPrefabs.Add(prefab);
Debug.Log($"[MapGenerator] Added creep prefab: {prefab.name}");
}
}
#else
Debug.LogWarning("[MapGenerator] Creep prefabs not loaded in build. Please assign creep prefabs manually in Inspector.");
#endif
if (_creepPrefabs.Count > 0)
{
Debug.Log($"[MapGenerator] Loaded {_creepPrefabs.Count} creep prefabs from Assets/Prefabs/Creep/");
}
else
if (_creepPrefabs.Count == 0)
{
Debug.LogWarning("[MapGenerator] No creep prefabs loaded!");
}

View File

@@ -81,7 +81,6 @@ namespace Northbound
{
if (!_currentInteractable.CanInteract(OwnerClientId))
{
Debug.Log("[PlayerInteraction] Interactable no longer valid - ending interaction");
EndInteraction();
}
}
@@ -202,7 +201,6 @@ namespace Northbound
_interactionTimeoutCoroutine = null;
}
_isInteracting = false;
Debug.Log($"[PlayerInteraction] Owner {OwnerClientId} - 상호작용 완료");
}
// ========================================

View File

@@ -253,7 +253,6 @@ namespace Northbound
[Rpc(SendTo.Server, InvokePermission = RpcInvokePermission.Everyone)]
private void AssignOrGatherResourceServerRpc(ulong playerId, ulong resourceId)
{
Debug.Log($"[Resource] AssignOrGatherResourceServerRpc called - PlayerID: {playerId}, ResourceID: {resourceId}");
bool workerAssigned = false;
@@ -264,11 +263,8 @@ namespace Northbound
if (assignedWorker != null)
{
Debug.Log($"[Resource] Worker found server-side - OwnerPlayerId: {assignedWorker.OwnerPlayerId}, CurrentState: {(int)assignedWorker.CurrentState}");
if ((int)assignedWorker.CurrentState == 1) // 1 = Following
{
Debug.Log($"[Resource] ✓ Assigning worker to resource!");
assignedWorker.AssignMiningTargetServerRpc(resourceId);
workerAssigned = true;
@@ -279,10 +275,6 @@ namespace Northbound
Debug.LogWarning($"[Resource] Worker not in Following state! State: {(int)assignedWorker.CurrentState}");
}
}
else
{
Debug.Log($"[Resource] No worker found for player {playerId} in Following state");
}
}
if (!workerAssigned)
@@ -354,9 +346,9 @@ namespace Northbound
public string GetInteractionPrompt()
{
if (_currentResources.Value <= 0)
return "자원 충전 중...";
return "Recharging...";
return $"[E] {resourceName} 채집 ({_currentResources.Value}/{ActualMaxResources})";
return $"[E] {resourceName} Mining ({_currentResources.Value}/{ActualMaxResources})";
}
public string GetInteractionAnimation()
@@ -376,8 +368,6 @@ namespace Northbound
private Worker FindWorkerForPlayer(ulong playerId)
{
Debug.Log($"[Resource] FindWorkerForPlayer called - Looking for worker assigned to player {playerId}");
if (NetworkManager.Singleton == null || NetworkManager.Singleton.SpawnManager == null)
{
Debug.LogWarning($"[Resource] FindWorkerForPlayer - NetworkManager or SpawnManager is null");
@@ -396,18 +386,15 @@ namespace Northbound
if (worker != null)
{
workersFound++;
Debug.Log($"[Resource] FindWorkerForPlayer - Found worker: {worker.gameObject.name}, OwnerPlayerId: {worker.OwnerPlayerId}, State: {(int)worker.CurrentState}");
// Use worker's internal OwnerPlayerId, NOT NetworkObject.OwnerClientId!
if (worker.OwnerPlayerId == playerId && (int)worker.CurrentState == 1) // 1 = Following
{
Debug.Log($"[Resource] FindWorkerForPlayer - ✓ Found worker: {worker.gameObject.name} for player {playerId}");
return worker;
}
}
}
Debug.LogWarning($"[Resource] FindWorkerForPlayer - Checked {objectsChecked} objects, found {workersFound} workers, no matching worker in Following state!");
return null;
}
}

View File

@@ -77,7 +77,6 @@ namespace Northbound
if (collectedAmount <= 0)
{
Debug.Log($"플레이어 {playerId}의 인벤토리가 가득 찼습니다.");
_isCollected = false;
return;
}
@@ -85,8 +84,6 @@ namespace Northbound
resourceManager.AddResource(playerId, collectedAmount);
UpdatePlayerResourcesClientRpc(playerId);
Debug.Log($"플레이어 {playerId}가 {collectedAmount} {resourceName}을(를) 획득했습니다.");
ShowPickupEffectClientRpc();
Invoke(nameof(DestroyPickup), 0.1f);
}
@@ -129,7 +126,7 @@ namespace Northbound
public string GetInteractionPrompt()
{
return $"[E] {resourceName} 획득 (+{resourceAmount})";
return $"[E] {resourceName} Get (+{resourceAmount})";
}
public string GetInteractionAnimation()

View File

@@ -113,7 +113,6 @@ namespace Northbound
if (cores.Length > 0)
{
_core = cores[0];
Debug.Log($"[Worker] 코어 찾음: {_core.name}");
}
}
@@ -466,9 +465,9 @@ namespace Northbound
{
var coreResourceManager = CoreResourceManager.Instance;
if (coreResourceManager != null && !coreResourceManager.CanAfford(recruitmentCost))
return $"자원 부족 (필요: {recruitmentCost})";
return $"Resource Required: {recruitmentCost})";
return $"[E] 워커 채용 - 비용: {recruitmentCost}";
return $"[E] Recruit Worker: {recruitmentCost}";
}
else if (NetworkManager.Singleton != null && _ownerPlayerId.Value == NetworkManager.Singleton.LocalClientId)
{
@@ -480,9 +479,9 @@ namespace Northbound
WorkerState.WaitingForResource => "자원 대기 중",
_ => "대기 중"
};
return $"워커 (가방: {_currentBagResources.Value}/{maxBagCapacity}) - {stateText}";
return $"Worker (Bag: {_currentBagResources.Value}/{maxBagCapacity}) - {stateText}";
}
return "다른 플레이어의 워커";
return "Not My Worker";
}
public string GetInteractionAnimation()

View File

@@ -44,7 +44,6 @@ namespace Northbound
private void OnWorkerCountChanged(int previousValue, int newValue)
{
Debug.Log($"[WorkerSpawner] 워커 수 변경: {previousValue} → {newValue}");
}
#region IInteractable Implementation
@@ -129,8 +128,6 @@ namespace Northbound
ShowSpawnEffectClientRpc(spawnPosition);
Debug.Log($"[WorkerSpawner] Worker spawned (server-owned) and assigned to player {playerId} (Total: {_workerCount.Value}/{maxWorkers})");
ScheduleWorkerAssignment(playerId, workerNetObj.NetworkObjectId);
}
@@ -179,7 +176,6 @@ namespace Northbound
if (worker != null)
{
playerInteraction.assignedWorker = worker;
Debug.Log($"[WorkerSpawner] Worker assigned to player {playerId}'s PlayerInteraction");
}
}
}
@@ -199,15 +195,15 @@ namespace Northbound
public string GetInteractionPrompt()
{
if (_workerCount.Value >= maxWorkers)
return $"워커 수 최대 ({_workerCount.Value}/{maxWorkers})";
return $"Worker ({_workerCount.Value}/{maxWorkers})";
float cooldownRemaining = Mathf.Max(0, spawnCooldown - (Time.time - _lastSpawnTime));
if (cooldownRemaining > 0)
return $"워커 생성 대기 중 ({cooldownRemaining:F1}s)";
return $"Waiting Worker... ({cooldownRemaining:F1}s)";
var coreResourceManager = CoreResourceManager.Instance;
if (coreResourceManager != null && !coreResourceManager.CanAfford(recruitmentCost))
return $"자원 부족 (필요: {recruitmentCost})";
return $"Resource Required: {recruitmentCost})";
return $"{interactionPrompt} ({_workerCount.Value}/{maxWorkers}) - 비용: {recruitmentCost}";
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,111 @@
# Interactable Modal UI Setup Guide
## Overview
Simple modal UI that displays key and interaction text when the player is within interaction range of an object.
## Files Created
- `Assets/Scripts/InteractableModal.cs` - The modal UI component (simplified)
- `Assets/Scripts/InteractableModalManager.cs` - Manages showing/hiding the modal
## Unity Setup Instructions
### 1. Create the Modal UI Prefab
#### Step 1: Create Canvas
1. Right-click in Hierarchy → UI → Canvas
2. Name it "InteractableModalCanvas"
3. Set Canvas Scaler to "Scale With Screen Size"
4. Set Reference Resolution to 1920x1080
#### Step 2: Create Modal Panel
1. Right-click on Canvas → UI → Panel
2. Name it "ModalPanel"
3. Set Panel size (e.g., 200x60)
4. Set background image (use panel-transparent-border-015.png from Assets/UI/)
5. Set background color with alpha (e.g., dark gray with 0.8 alpha)
#### Step 3: Add Text Elements
Under ModalPanel, create:
**Key Text:**
- UI → TextMeshPro - Text
- Name: "KeyText"
- Position: Left side of panel
- Font size: 32
- Text: "E"
- Alignment: Center
- Color: Yellow or Orange
**Interact Text:**
- UI → TextMeshPro - Text
- Name: "InteractText"
- Position: Right side of panel
- Font size: 24
- Text: "채광하기"
- Alignment: Left
- Color: White
#### Step 4: Add InteractableModal Component
1. Add `InteractableModal` script to ModalPanel (or parent GameObject)
2. Assign references in Inspector:
- ModalPanel: The ModalPanel GameObject
- KeyText: The KeyText TMP component
- InteractText: The InteractText TMP component
- Default Key: "E" (or your interaction key)
### 2. Setup on Player Object
#### Step 1: Add InteractableModalManager
1. Select your Player prefab
2. Add `InteractableModalManager` component
3. Assign references:
- InteractableModal: Reference to the modal GameObject
- PlayerInteraction: Reference to PlayerInteraction component (should auto-find)
## Usage
The modal will automatically:
1. Show when an interactable object (Resource, Building) is detected within range
2. Display the key (default: "E") and interaction text
3. Hide when no interactable is in range
## Example Display
When looking at a Resource:
- Key: "E"
- Text: "광석 채집"
When looking at a Building:
- Key: "E"
- Text: "건물 상호작용"
## Customization
### Change Key Text
Modify `defaultKey` in Inspector or change `keyText.text` in code.
### Change Style
Modify the TextMeshPro components:
- Font size
- Colors
- Bold/Italic
- Shadow/Outline
### Change Panel Size
Adjust the ModalPanel RectTransform size and background.
## Troubleshooting
**Modal not showing:**
- Check if PlayerInteraction is detecting objects (debug ray should appear)
- Verify InteractableModalManager is attached to player
- Check if modal references are assigned in Inspector
- Ensure modal starts as hidden (activeSelf = false in Start())
**Text not updating:**
- Ensure IInteractable.GetInteractionPrompt() returns proper format: "[E] Text"
- Check if _currentInteractable is being set in InteractableModal
**Layout issues:**
- Check RectTransform anchors and pivots
- Verify Panel is properly positioned on Canvas

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 20c1bf7cf8d809748b8e94e1b29bae2f
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

396
Assets/UI/ModalPanel.prefab Normal file
View File

@@ -0,0 +1,396 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &6332587651613424585
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4412526746668541195}
- component: {fileID: 5249278849108589228}
- component: {fileID: 8537118442092966596}
- component: {fileID: 5999301040810221468}
- component: {fileID: 8584080402260311703}
m_Layer: 5
m_Name: ModalPanel
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4412526746668541195
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6332587651613424585}
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: 2331150165244547235}
- {fileID: 1325989084779099817}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 200, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5249278849108589228
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6332587651613424585}
m_CullTransparentMesh: 1
--- !u!114 &8537118442092966596
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6332587651613424585}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
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_Sprite: {fileID: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &5999301040810221468
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6332587651613424585}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Shadow
m_EffectColor: {r: 0, g: 0, b: 0, a: 1}
m_EffectDistance: {x: 5, y: -5}
m_UseGraphicAlpha: 1
--- !u!114 &8584080402260311703
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6332587651613424585}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.HorizontalLayoutGroup
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 0
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!1 &7018508494734430405
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2331150165244547235}
- component: {fileID: 4201130398530889058}
- component: {fileID: 3239286098141521726}
m_Layer: 5
m_Name: KeyText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2331150165244547235
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7018508494734430405}
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: 4412526746668541195}
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: 50, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4201130398530889058
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7018508494734430405}
m_CullTransparentMesh: 1
--- !u!114 &3239286098141521726
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7018508494734430405}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
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: E
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, 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: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 1
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_characterHorizontalScale: 1
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 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 &7261205041914064396
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1325989084779099817}
- component: {fileID: 6131174805353524192}
- component: {fileID: 7839034454177399683}
m_Layer: 5
m_Name: InteractText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1325989084779099817
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7261205041914064396}
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: 4412526746668541195}
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: 150, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6131174805353524192
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7261205041914064396}
m_CullTransparentMesh: 1
--- !u!114 &7839034454177399683
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7261205041914064396}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
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: Mining
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, 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: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_characterHorizontalScale: 1
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 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: 274613c415998a647a86a5e09950ce41
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: