Merge branch 'main' into DO-4-AI-Controller

This commit is contained in:
Sehyeon 2025-03-21 11:27:13 +09:00
commit a59fce7048
64 changed files with 4701 additions and 20252 deletions

13
.idea/.idea.Main/.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,13 @@
# 디폴트 무시된 파일
/shelf/
/workspace.xml
# Rider에서 무시된 파일
/contentModel.xml
/projectSettingsUpdater.xml
/modules.xml
/.idea.Main.iml
# 에디터 기반 HTTP 클라이언트 요청
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

8
.idea/.idea.Main/.idea/indexLayout.xml generated Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

6
.idea/.idea.Main/.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@ -178,7 +178,6 @@ GameObject:
m_Component:
- component: {fileID: 271965289}
- component: {fileID: 271965290}
- component: {fileID: 271965292}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged
@ -471,6 +470,231 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1545261105
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 1867732347}
m_Modifications:
- target: {fileID: 180756268084732627, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 180756268084732627, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 180756268084732627, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 180756268084732627, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 713532354933724924, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 713532354933724924, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
value: 1
objectReference: {fileID: 0}
- target: {fileID: 713532354933724924, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
value:
objectReference: {fileID: 1545261107}
- target: {fileID: 713532354933724924, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState
value: 2
objectReference: {fileID: 0}
- target: {fileID: 713532354933724924, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
value: OnClickGameStart
objectReference: {fileID: 0}
- target: {fileID: 713532354933724924, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
value: MainPanelController, Assembly-CSharp
objectReference: {fileID: 0}
- target: {fileID: 713532354933724924, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
value: UnityEngine.Object, UnityEngine
objectReference: {fileID: 0}
- target: {fileID: 4282069284025755619, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4733773333797619672, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4733773333797619672, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4733773333797619672, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4733773333797619672, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5033979732381400892, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5033979732381400892, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5033979732381400892, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5033979732381400892, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMax.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8446481687955831510, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8446481687955831510, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8446481687955831510, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8446481687955831510, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8564394481744056992, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_Name
value: Main Panel
objectReference: {fileID: 0}
- target: {fileID: 8768541925252566370, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8768541925252566370, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8768541925252566370, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8768541925252566370, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
--- !u!224 &1545261106 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 6110152713294678410, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
m_PrefabInstance: {fileID: 1545261105}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1545261107 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7488082087611091670, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
m_PrefabInstance: {fileID: 1545261105}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b4dc3fd9e59f47df80e344680d1b9803, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1867732343
GameObject:
m_ObjectHideFlags: 0
@ -548,7 +772,7 @@ Canvas:
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 25
m_AdditionalShaderChannelsFlag: 0
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0

View File

@ -19,6 +19,12 @@ public class AdManager : MonoBehaviour
// 보상형 전면 광고 로드
public void LoadRewardedInterstitialAd()
{
if (rewardedInterstitialAd != null)
{
rewardedInterstitialAd.Destroy(); // 기존 광고 객체 해제
rewardedInterstitialAd = null;
}
AdRequest request = new AdRequest();
RewardedInterstitialAd.Load(adUnitId, request,
@ -30,7 +36,6 @@ public class AdManager : MonoBehaviour
return;
}
Debug.Log("보상형 전면 광고 로드 성공");
rewardedInterstitialAd = ad;
// 광고 종료 이벤트 설정
@ -39,14 +44,14 @@ public class AdManager : MonoBehaviour
}
// 보상형 전면 광고 실행
public void ShowRewardedInterstitialAd()
public void ShowRewardedInterstitialAd(CanvasGroup shopPanel)
{
if (rewardedInterstitialAd != null && rewardedInterstitialAd.CanShowAd())
{
rewardedInterstitialAd.Show((Reward reward) => //서버에서 500코인을 고정으로 반환하기 때문에 reward는 사용하지 않음.
{
// 코인 지급 로직
GrantReward();
GrantReward(shopPanel);
});
}
else
@ -58,20 +63,19 @@ public class AdManager : MonoBehaviour
// 광고 닫힘 이벤트 처리
private void HandleAdClosed()
{
Debug.Log("보상형 전면 광고 닫힘, 새로운 광고 로드.");
LoadRewardedInterstitialAd(); // 광고가 닫힌 후 다시 로드
}
// 코인 지급 함수
private void GrantReward()
private void GrantReward(CanvasGroup shopPanel)
{
NetworkManager.Instance.WatchAdForCoins((coinsAdded) =>
{
// UI 업데이트
GameManager.Instance.panelManager.UpdateCoinsPanelUI(coinsAdded);
GameManager.Instance.panelManager.UpdateCoinsPanelUI(coinsAdded, shopPanel);
}, () =>
{
Debug.Log("광고 시청 후 코인 추가 실패!");
Debug.Log("광고 시청 후 코인 추가 실패");
});
}
}

View File

@ -1,46 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &8786799901643631561
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7455536569977767830}
- component: {fileID: 2424336103342601865}
m_Layer: 0
m_Name: Admob
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7455536569977767830
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8786799901643631561}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2424336103342601865
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8786799901643631561}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 644acbaf5d5791242b26c1b1b0a0ceeb, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

@ -413,8 +413,8 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: c06da2c324d0fee43b8b1998cf9fcd09, type: 3}
m_Type: 1
m_Sprite: {fileID: 21300000, guid: 05a670e614d7817429ee256ceb7efbe6, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4

View File

@ -34,8 +34,8 @@ RectTransform:
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: -25, y: 0}
m_SizeDelta: {x: 200, y: 100}
m_AnchoredPosition: {x: 0.5, y: 0}
m_SizeDelta: {x: 250, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8644449565768019552
CanvasRenderer:
@ -168,8 +168,8 @@ RectTransform:
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: 176.9, y: 0}
m_SizeDelta: {x: 200, y: 100}
m_AnchoredPosition: {x: 200, y: 0}
m_SizeDelta: {x: 160, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7968533753814083057
CanvasRenderer:
@ -356,6 +356,7 @@ GameObject:
- component: {fileID: 5750108967662755581}
- component: {fileID: 6941609111617388457}
- component: {fileID: -8178793116256795857}
- component: {fileID: 1941271810694746857}
m_Layer: 5
m_Name: ShopScrollItem
m_TagString: Untagged
@ -413,8 +414,8 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: c06da2c324d0fee43b8b1998cf9fcd09, type: 3}
m_Type: 1
m_Sprite: {fileID: 21300000, guid: 05a670e614d7817429ee256ceb7efbe6, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
@ -491,5 +492,15 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 4d28917ad20c19e428cbf98ba5609e69, type: 3}
m_Name:
m_EditorClassIdentifier:
profileSprites:
- {fileID: 21300000, guid: 307bff9630735f342852f28b1cd5d300, type: 3}
--- !u!114 &1941271810694746857
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7605012172595602668}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 644acbaf5d5791242b26c1b1b0a0ceeb, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

@ -350,7 +350,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: -392, y: -56.72364}
m_AnchoredPosition: {x: -392, y: -5.317383}
m_SizeDelta: {x: 784, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!114 &2389273839879143832

View File

@ -294,12 +294,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 03aef985a8b802a409630fdcab7be09b, type: 3}
m_Name:
m_EditorClassIdentifier:
settingsPanel: {fileID: 2861881646994438329, guid: ea820246b5075c54d9f614291ca41c5d, type: 3}
confirmPanel: {fileID: 8145365568262946399, guid: 76f1fe6b5243faf4f9b8caee7312d336, type: 3}
rankingPanel: {fileID: 154459105952450598, guid: bf4bb18aa323fe748b3eb1d537503596, type: 3}
shopPanel: {fileID: 8190964574954487140, guid: eb257b0a685b2254f860f294ce8cba54, type: 3}
giboPanel: {fileID: 3090474328172188941, guid: c63914e01332f8d479ada92325335e41, type: 3}
_canvas: {fileID: 6741227126671320411}
--- !u!222 &71273024816384741
CanvasRenderer:
m_ObjectHideFlags: 0
@ -347,63 +341,6 @@ MonoBehaviour:
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!1001 &523594383261405864
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8786799901643631561, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_Name
value: Admob
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
--- !u!1 &658145525140724706
GameObject:
m_ObjectHideFlags: 0
@ -1747,4 +1684,3 @@ SceneRoots:
- {fileID: 656468223}
- {fileID: 937655098394579964}
- {fileID: 1842188762}
- {fileID: 523594383261405864}

View File

@ -16,8 +16,8 @@ public class MainPanelButtonController : MonoBehaviour
{
ShopItem shopItem = new ShopItem
{
Name = "코인500개 ",
Price = "광고"
name = "광고) 코인500개 ",
price = 0
};
shopItems.Add(shopItem);
}
@ -25,13 +25,12 @@ public class MainPanelButtonController : MonoBehaviour
{
ShopItem shopItem = new ShopItem
{
Name = "코인"+i*1000+"개 ",
Price = (i * 1000)+ "원"
name = i*1000+"개 ",
price = i * 1000
};
shopItems.Add(shopItem);
}
}
GameManager.Instance.panelManager.OpenShopPanel(shopItems);
}
@ -39,4 +38,9 @@ public class MainPanelButtonController : MonoBehaviour
{
GameManager.Instance.panelManager.OpenReplayPanel();
}
//public void OpenRankingPanelClick()
//{
//GameManager.Instance.panelManager.OnRankingPanelClick();
//}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: c9598d78723880e4f8026beb096f28c4
guid: 93bfed50167472f489a27f0518070ed5
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@ -248,17 +248,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 35a4c6d5d3a97b444b968e68ec8bb9f7, type: 3}
m_Name:
m_EditorClassIdentifier:
mainPanel: {fileID: 8564394481744056992, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
signinPanel: {fileID: 925522282249935710, guid: e14c9b2925f0ddb4192af743e5cc166a, type: 3}
signupPanel: {fileID: 3181524094944658765, guid: 8827fe7caa3145e40b1369cc42f8697d, type: 3}
settingsPanel: {fileID: 2861881646994438329, guid: ea820246b5075c54d9f614291ca41c5d, type: 3}
confirmPanel: {fileID: 8145365568262946399, guid: 76f1fe6b5243faf4f9b8caee7312d336, type: 3}
rankingPanel: {fileID: 154459105952450598, guid: bf4bb18aa323fe748b3eb1d537503596, type: 3}
shopPanel: {fileID: 8190964574954487140, guid: eb257b0a685b2254f860f294ce8cba54, type: 3}
giboPanel: {fileID: 3090474328172188941, guid: c63914e01332f8d479ada92325335e41, type: 3}
loadingPanel: {fileID: 1942997847427067673, guid: 634a60576b4855940a97d1e7447b9fcc, type: 3}
mainBgm: {fileID: 8300000, guid: 1d9c7fb20aa822c48933d00b6bd6a757, type: 3}
profileSprites: []
panelManagerPrefab: {fileID: 3475740041361426276, guid: 085ca07ca90c92545b2594bd13412701, type: 3}
audioManagerPrefab: {fileID: 2946408323859178723, guid: e829818dce39a5d4383e061111bed871, type: 3}
--- !u!224 &183715513
RectTransform:
m_ObjectHideFlags: 0
@ -346,63 +337,52 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &634833532
PrefabInstance:
--- !u!1 &1280076947
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1280076949}
- component: {fileID: 1280076948}
m_Layer: 0
m_Name: MainPanelManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1280076948
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1280076947}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0696b08f74b24325a7b378405f6170af, type: 3}
m_Name:
m_EditorClassIdentifier:
loadingPanelController: {fileID: 1454248679793356470, guid: 634a60576b4855940a97d1e7447b9fcc, type: 3}
mainPanelController: {fileID: 7488082087611091670, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
--- !u!4 &1280076949
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1280076947}
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8786799901643631561, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_Name
value: Admob
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1340395578
GameObject:
m_ObjectHideFlags: 0
@ -604,4 +584,4 @@ SceneRoots:
- {fileID: 183715513}
- {fileID: 1340395582}
- {fileID: 521295933}
- {fileID: 634833532}
- {fileID: 1280076949}

View File

@ -1,682 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 500
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 2
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 0
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 3
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
buildHeightMesh: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1001 &150251232
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 759297939}
m_Modifications:
- target: {fileID: 180756268084732627, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 180756268084732627, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 180756268084732627, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 180756268084732627, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 837160915965981132, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
value: OnclickRecordButton
objectReference: {fileID: 0}
- target: {fileID: 1316706425349991338, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: replayPanel
value:
objectReference: {fileID: 3090474328172188941, guid: c63914e01332f8d479ada92325335e41, type: 3}
- target: {fileID: 4282069284025755619, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4733773333797619672, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4733773333797619672, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4733773333797619672, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4733773333797619672, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5033979732381400892, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5033979732381400892, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5033979732381400892, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5033979732381400892, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMax.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8446481687955831510, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8446481687955831510, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8446481687955831510, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8446481687955831510, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8564394481744056992, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_Name
value: Main Panel Test LIN
objectReference: {fileID: 0}
- target: {fileID: 8768541925252566370, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8768541925252566370, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8768541925252566370, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8768541925252566370, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
--- !u!1 &519420028
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 519420032}
- component: {fileID: 519420031}
- component: {fileID: 519420029}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &519420029
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 519420028}
m_Enabled: 1
--- !u!20 &519420031
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 519420028}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_Iso: 200
m_ShutterSpeed: 0.005
m_Aperture: 16
m_FocusDistance: 10
m_FocalLength: 50
m_BladeCount: 5
m_Curvature: {x: 2, y: 11}
m_BarrelClipping: 0.25
m_Anamorphism: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 1
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 0
m_HDR: 1
m_AllowMSAA: 0
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 0
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &519420032
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 519420028}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &759297935
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 759297939}
- component: {fileID: 759297938}
- component: {fileID: 759297937}
- component: {fileID: 759297936}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &759297936
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 759297935}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &759297937
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 759297935}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &759297938
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 759297935}
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 &759297939
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 759297935}
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: 972014384}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!224 &972014384 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 6110152713294678410, guid: 6f42a47846f21b044b1cda32a9516609, type: 3}
m_PrefabInstance: {fileID: 150251232}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1017982169
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1017982171}
- component: {fileID: 1017982172}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1017982171
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1017982169}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1017982172
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1017982169}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: da4e7b6c90ef1dd49a95d0f1716dedc7, type: 3}
m_Name:
m_EditorClassIdentifier:
signinPanel: {fileID: 925522282249935710, guid: e14c9b2925f0ddb4192af743e5cc166a, type: 3}
signupPanel: {fileID: 3181524094944658765, guid: 8827fe7caa3145e40b1369cc42f8697d, type: 3}
canvas: {fileID: 759297938}
profileSprites: []
--- !u!1 &1231053598
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1231053601}
- component: {fileID: 1231053600}
- component: {fileID: 1231053599}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1231053599
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1231053598}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
m_Name:
m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &1231053600
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1231053598}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 10
--- !u!4 &1231053601
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1231053598}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1464921194
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1464921196}
- component: {fileID: 1464921195}
m_Layer: 0
m_Name: StoneController
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1464921195
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1464921194}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8f82a74d5e1f8de44af5f574b2934a95, type: 3}
m_Name:
m_EditorClassIdentifier:
stones: []
--- !u!4 &1464921196
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1464921194}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 540, y: 960, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 519420032}
- {fileID: 1017982171}
- {fileID: 759297939}
- {fileID: 1231053601}
- {fileID: 1464921196}

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -1,290 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 256
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 1
m_PVRDenoiserTypeDirect: 1
m_PVRDenoiserTypeIndirect: 1
m_PVRDenoiserTypeAO: 1
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 3
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
buildHeightMesh: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &1100315178
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1100315181}
- component: {fileID: 1100315180}
- component: {fileID: 1100315179}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1100315179
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1100315178}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
m_Name:
m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &1100315180
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1100315178}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 10
--- !u!4 &1100315181
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1100315178}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1603784401
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1603784404}
- component: {fileID: 1603784403}
- component: {fileID: 1603784402}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &1603784402
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1603784401}
m_Enabled: 1
--- !u!20 &1603784403
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1603784401}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_Iso: 200
m_ShutterSpeed: 0.005
m_Aperture: 16
m_FocusDistance: 10
m_FocalLength: 50
m_BladeCount: 5
m_Curvature: {x: 2, y: 11}
m_BarrelClipping: 0.25
m_Anamorphism: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 1
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &1603784404
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1603784401}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 1603784404}
- {fileID: 1100315181}

View File

@ -1,150 +0,0 @@
using UnityEngine;
using UnityEngine.SceneManagement;
using System.Collections;
using System.Collections.Generic;
public class GameManagerTestLIN : Singleton<GameManagerTestLIN>
{
[SerializeField] private GameObject signinPanel;
[SerializeField] private GameObject signupPanel;
[SerializeField] private Canvas canvas;
private UserManager _userManager; // UserManager 인스턴스 관리
private Enums.GameType _gameType;
private GameLogic _gameLogic;
private StoneController _stoneController;
private Canvas _canvas;
public Sprite[] profileSprites; //패널에서 사용할 테스트 배열
private void Awake()
{
// UserManager가 없으면 생성
if (UserManager.Instance == null)
{
GameObject userManagerObj = new GameObject("UserManager");
_userManager = userManagerObj.AddComponent<UserManager>();
//TODO: 게임 내에서 기보 타입 적용하기
_gameType = Enums.GameType.Replay;
}
}
private void Start()
{
Debug.Log(UserManager.Instance.Nickname);
//TODO: 기보 타입으로 들어왔을 때 데이터 로드 테스트 수정할것
ReplayManager.Instance.InitReplayBoard(ReplayManager.Instance.LoadReplayDatas()[9]);
//게임 씬에서 확인하기 위한 임시 코드
}
private void TryAutoSignin()
{
NetworkManager.Instance.GetInfo((userInfo) =>
{
Debug.Log("자동 로그인 성공");
UpdateMainPanelUI();
// ScoreData.SetScore(userInfo.score);
// OpenConfirmPanel(userInfo.nickname + "님 로그인 성공하였습니다.", () => { });
}, () =>
{
Debug.Log("자동 로그인 실패");
// 로그인 화면
OpenSigninPanel();
});
}
private void UpdateMainPanelUI()
{
MainPanelController mainPanel = FindObjectOfType<MainPanelController>();
if (mainPanel != null)
{
mainPanel.UpdateUserInfo();
}
}
public void OpenSigninPanel()
{
if (canvas != null)
{
var signinPanelObject = Instantiate(signinPanel, canvas.transform);
}
}
public void OpenSignupPanel()
{
if (canvas != null)
{
var signupPanelObject = Instantiate(signupPanel, canvas.transform);
}
}
public void OnClickConfirmButton()
{
_gameLogic.SetNewBoardValue(_gameLogic.currentTurn, _gameLogic.selectedRow,_gameLogic.selectedCol);
}
public void OnClickReplayNextButton()
{
Move nextMove = ReplayManager.Instance.GetNextMove();
if (nextMove != null)
{
if (nextMove.stoneType.Equals(Enums.StoneType.Black.ToString()))
{
_gameLogic.SetNewBoardValue(Enums.PlayerType.PlayerA, nextMove.columnIndex, nextMove.rowIndex);
}
else if (nextMove.stoneType.Equals(Enums.StoneType.White.ToString()))
{
_gameLogic.SetNewBoardValue(Enums.PlayerType.PlayerB, nextMove.columnIndex, nextMove.rowIndex);
}
ReplayManager.Instance.PushMove(nextMove);
}
}
public void OnClickReplayUndoButton()
{
Move targetMove = ReplayManager.Instance.PopMove();
if (targetMove != null)
{
if (targetMove.stoneType.Equals(Enums.StoneType.Black.ToString()))
{
_gameLogic.SetNewBoardValue(Enums.PlayerType.PlayerA, targetMove.columnIndex, targetMove.rowIndex);
}
else if (targetMove.stoneType.Equals(Enums.StoneType.White.ToString()))
{
_gameLogic.SetNewBoardValue(Enums.PlayerType.PlayerB, targetMove.columnIndex, targetMove.rowIndex);
}
ReplayManager.Instance.PushUndoMove(targetMove);
//TODO: 화면상에서 돌 치우기
}
}
private void ChangeToGameScene(Enums.GameType gameType)
{
_gameType = gameType;
SceneManager.LoadScene("Game");
}
protected override void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
if (scene.name == "Game")
{
_stoneController = GameObject.FindObjectOfType<StoneController>();
_stoneController.InitStones();
_gameLogic = new GameLogic(_stoneController, _gameType);
}
else if (scene.name == "Replay")
{
_stoneController = GameObject.FindObjectOfType<StoneController>();
_stoneController.InitStones();
_gameLogic = new GameLogic(_stoneController, Enums.GameType.Replay);
}
_canvas = GameObject.Find("Canvas").GetComponent<Canvas>();
}
}

View File

@ -1,40 +0,0 @@
using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class MainPanelControllerTestLIN : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI nicknameText;
[SerializeField] private TextMeshProUGUI ratingText;
[SerializeField] private Button signOutButton;
[SerializeField] private GameObject replayPanel;
public void UpdateUserInfo()
{
if (UserManager.Instance == null) return;
nicknameText.text = UserManager.Instance.Nickname;
ratingText.text = $"{UserManager.Instance.Rating}급";
}
public void OnSignOutClick()
{
NetworkManager.Instance.SignOut(() =>
{
Debug.Log("로그아웃 성공");
// 로그인 화면
GameManager.Instance.panelManager.OpenSigninPanel();
}, () =>
{
Debug.Log("로그아웃 실패");
// OpenConfirmPanel("로그아웃 되었습니다.", () => { });
});
}
public void OnclickRecordButton()
{
Instantiate(replayPanel, GetComponent<Transform>());
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 67ce17de423b0644bb099f5272a48faf
timeCreated: 1741848912

View File

@ -6020,6 +6020,50 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 9726acf6f82a3644ba31eda5ef496991, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &820078853
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 820078855}
- component: {fileID: 820078854}
m_Layer: 0
m_Name: OmokAI
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &820078854
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 820078853}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 576baa0fe98d40608bf48109ba5ed788, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!4 &820078855
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 820078853}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 540, y: 1760, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &831992430
PrefabInstance:
m_ObjectHideFlags: 0
@ -8175,6 +8219,8 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 1118625358}
- component: {fileID: 1118625360}
- component: {fileID: 1118625359}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged
@ -8197,6 +8243,116 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1118625359
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1118625357}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 35a4c6d5d3a97b444b968e68ec8bb9f7, type: 3}
m_Name:
m_EditorClassIdentifier:
panelManagerPrefab: {fileID: 3475740041361426276, guid: 085ca07ca90c92545b2594bd13412701, type: 3}
audioManagerPrefab: {fileID: 2946408323859178723, guid: e829818dce39a5d4383e061111bed871, type: 3}
--- !u!82 &1118625360
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1118625357}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!1001 &1121996003
PrefabInstance:
m_ObjectHideFlags: 0
@ -17421,7 +17577,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7155909258766834886, guid: b1a31da84076a534cae7cb20a7913a93, type: 3}
propertyPath: m_Name
value: '[Canvas] Game UI'
value: Canvas
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
@ -17438,3 +17594,4 @@ SceneRoots:
- {fileID: 307507522}
- {fileID: 1632066875}
- {fileID: 1118625358}
- {fileID: 820078855}

View File

@ -1,5 +1,6 @@
fileFormatVersion: 2
guid: 88b1093ef5e1f3b4db329a67d13e8920
guid: ab181dd2d256816418fb8c9451e5114a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:

View File

@ -56,6 +56,7 @@ MonoBehaviour:
coinsRemoveAudioClip: {fileID: 8300000, guid: 585a9de0fb7ee4163af5c559ba5b2364, type: 3}
coinsAddAudioClip: {fileID: 8300000, guid: 1ec44182fa76a4b3eb1459c0a6d9a8ab, type: 3}
coinsEmptyAudioClip: {fileID: 8300000, guid: 908a78cb991984977bea42916bed8684, type: 3}
ShopPanel: {fileID: 8190964574954487140, guid: eb257b0a685b2254f860f294ce8cba54, type: 3}
--- !u!82 &5499754916380040505
AudioSource:
m_ObjectHideFlags: 0

View File

@ -0,0 +1,957 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1858212639388121281
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8740302936727227434}
- component: {fileID: 2911450618660204948}
- component: {fileID: 2729261171078307673}
- component: {fileID: 4465141290128179683}
m_Layer: 5
m_Name: Viewport
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8740302936727227434
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1858212639388121281}
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: 227489081374553986}
m_Father: {fileID: 1188344226235047902}
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: 1}
--- !u!222 &2911450618660204948
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1858212639388121281}
m_CullTransparentMesh: 1
--- !u!114 &2729261171078307673
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1858212639388121281}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 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: 10917, guid: 0000000000000000f000000000000000, type: 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 &4465141290128179683
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1858212639388121281}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_ShowMaskGraphic: 1
--- !u!1 &2602607401298266001
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7490092893895923112}
- component: {fileID: 6169341149558268219}
- component: {fileID: 3721233377363418243}
- component: {fileID: 5371985941544601491}
m_Layer: 5
m_Name: BackButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7490092893895923112
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2602607401298266001}
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: 8762241190862130675}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 40, y: -40}
m_SizeDelta: {x: 73, y: 72}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6169341149558268219
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2602607401298266001}
m_CullTransparentMesh: 1
--- !u!114 &3721233377363418243
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2602607401298266001}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 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: 21300000, guid: 2f19224efc36c9b49978cafd03ede1bb, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &5371985941544601491
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2602607401298266001}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 3721233377363418243}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 1589736077307570888}
m_TargetAssemblyTypeName: LeaderBoardController, Assembly-CSharp
m_MethodName: OnBackButtonClicked
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &2785421385886275932
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1188344226235047902}
- component: {fileID: 824343901473742242}
- component: {fileID: 5935536530219116604}
- component: {fileID: 5597239689940996301}
m_Layer: 5
m_Name: Scroll View
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1188344226235047902
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2785421385886275932}
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: 8740302936727227434}
- {fileID: 2084150948806744478}
m_Father: {fileID: 8762241190862130675}
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: -112.84912}
m_SizeDelta: {x: 1080, y: 1694.3018}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &824343901473742242
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2785421385886275932}
m_CullTransparentMesh: 1
--- !u!114 &5935536530219116604
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2785421385886275932}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.392}
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: 10917, guid: 0000000000000000f000000000000000, type: 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 &5597239689940996301
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2785421385886275932}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Content: {fileID: 227489081374553986}
m_Horizontal: 0
m_Vertical: 1
m_MovementType: 1
m_Elasticity: 0.1
m_Inertia: 1
m_DecelerationRate: 0.135
m_ScrollSensitivity: 100
m_Viewport: {fileID: 8740302936727227434}
m_HorizontalScrollbar: {fileID: 0}
m_VerticalScrollbar: {fileID: 3478506922544614059}
m_HorizontalScrollbarVisibility: 2
m_VerticalScrollbarVisibility: 2
m_HorizontalScrollbarSpacing: -3
m_VerticalScrollbarSpacing: -15
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []
--- !u!1 &3181524094944658765
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8762241190862130675}
- component: {fileID: 4993086751705209787}
- component: {fileID: 1589736077307570888}
m_Layer: 5
m_Name: LeaderboardPanel
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8762241190862130675
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3181524094944658765}
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: 1077369489077175616}
- {fileID: 2617138196515233625}
- {fileID: 1188344226235047902}
- {fileID: 7490092893895923112}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4993086751705209787
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3181524094944658765}
m_CullTransparentMesh: 1
--- !u!114 &1589736077307570888
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3181524094944658765}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 22c0a17498af7724eb5d30a3c4842cd6, type: 3}
m_Name:
m_EditorClassIdentifier:
rankingPrefab: {fileID: 6168169319149270731, guid: 124ba02c0639b9d47ac579bba38ca366, type: 3}
content: {fileID: 227489081374553986}
MainPanel: {fileID: 8564394481744056992, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
leaderboardPanel: {fileID: 3181524094944658765}
verticalScrollbar: {fileID: 3478506922544614059}
--- !u!1 &3442993592452086091
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6426375569495705012}
- component: {fileID: 4414425374122294416}
- component: {fileID: 1267745435525440738}
m_Layer: 5
m_Name: GameObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6426375569495705012
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3442993592452086091}
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: 1077369489077175616}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4414425374122294416
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3442993592452086091}
m_CullTransparentMesh: 1
--- !u!114 &1267745435525440738
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3442993592452086091}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 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: 21300000, guid: a99fa85777f9a5b4d86b859277707544, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &3568653418969612126
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 227489081374553986}
- component: {fileID: 6416582684501908282}
- component: {fileID: 2816695216852066709}
m_Layer: 5
m_Name: Content
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &227489081374553986
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3568653418969612126}
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: 8740302936727227434}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: 0.000034332275}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!114 &6416582684501908282
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3568653418969612126}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 100
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 50
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!114 &2816695216852066709
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3568653418969612126}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 1
m_VerticalFit: 2
--- !u!1 &4202334049855500581
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7474148160458665859}
- component: {fileID: 4694224218495704662}
- component: {fileID: 1512016701637479686}
m_Layer: 5
m_Name: Handle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7474148160458665859
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4202334049855500581}
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: 7306518210413313676}
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.5, y: 0.5}
--- !u!222 &4694224218495704662
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4202334049855500581}
m_CullTransparentMesh: 1
--- !u!114 &1512016701637479686
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4202334049855500581}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 0.2847969, b: 0, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 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!1 &5452094549188284008
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2084150948806744478}
- component: {fileID: 3478506922544614059}
- component: {fileID: 6301460630123320729}
- component: {fileID: 1849839432792571899}
m_Layer: 5
m_Name: Scrollbar Vertical
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2084150948806744478
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5452094549188284008}
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: 7306518210413313676}
m_Father: {fileID: 1188344226235047902}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 20, y: 0}
m_Pivot: {x: 1, y: 1}
--- !u!114 &3478506922544614059
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5452094549188284008}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 0.28627452, b: 0, a: 1}
m_HighlightedColor: {r: 1, g: 0, b: 0, a: 1}
m_PressedColor: {r: 0.93710685, g: 0.33299702, b: 0.33299702, a: 1}
m_SelectedColor: {r: 0.8409424, g: 0.9685534, b: 0.57564956, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 1512016701637479686}
m_HandleRect: {fileID: 7474148160458665859}
m_Direction: 2
m_Value: 0
m_Size: 1
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []
--- !u!222 &6301460630123320729
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5452094549188284008}
m_CullTransparentMesh: 1
--- !u!114 &1849839432792571899
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5452094549188284008}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.59607846}
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!1 &6747908716986530392
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7306518210413313676}
m_Layer: 5
m_Name: Sliding Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7306518210413313676
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6747908716986530392}
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: 7474148160458665859}
m_Father: {fileID: 2084150948806744478}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &7787380462476439032
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1077369489077175616}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1077369489077175616
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7787380462476439032}
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: 6426375569495705012}
m_Father: {fileID: 8762241190862130675}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &8628303920766820772
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2617138196515233625}
- component: {fileID: 5432856254510042803}
- component: {fileID: 3937315107675367904}
m_Layer: 5
m_Name: Title Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2617138196515233625
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8628303920766820772}
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: 8762241190862130675}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -115}
m_SizeDelta: {x: 0, y: 50}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &5432856254510042803
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8628303920766820772}
m_CullTransparentMesh: 1
--- !u!114 &3937315107675367904
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8628303920766820772}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Ranking
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 85a19688db53c77469fc4406b01045da, type: 2}
m_sharedMaterial: {fileID: -2477908578676791210, guid: 85a19688db53c77469fc4406b01045da, 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: 100
m_fontSizeBase: 100
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_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: c401513426cb83c4e8759c73d8be4c3a
guid: 1260c2be24f60c547af05635e06e0441
PrefabImporter:
externalObjects: {}
userData:

View File

@ -120,7 +120,19 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 3015309825845733259}
m_OnClick:
m_PersistentCalls:
m_Calls: []
m_Calls:
- m_Target: {fileID: 7488082087611091670}
m_TargetAssemblyTypeName: MainPanelController, Assembly-CSharp
m_MethodName: OnLeaderboardButtonClick
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &683375887058748135
GameObject:
m_ObjectHideFlags: 0
@ -375,7 +387,19 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 6468719718473664808}
m_OnClick:
m_PersistentCalls:
m_Calls: []
m_Calls:
- m_Target: {fileID: 0}
m_TargetAssemblyTypeName: PanelManager, Assembly-CSharp
m_MethodName: OpenSettingsPanel
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &1637449823560643887
GameObject:
m_ObjectHideFlags: 0
@ -386,7 +410,7 @@ GameObject:
m_Component:
- component: {fileID: 2720476515686469179}
- component: {fileID: 7796730417217941349}
- component: {fileID: 8890768496808647529}
- component: {fileID: 5873276942444222861}
m_Layer: 5
m_Name: Buttons
m_TagString: Untagged
@ -444,7 +468,7 @@ MonoBehaviour:
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!114 &8890768496808647529
--- !u!114 &5873276942444222861
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@ -453,7 +477,7 @@ MonoBehaviour:
m_GameObject: {fileID: 1637449823560643887}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c9598d78723880e4f8026beb096f28c4, type: 3}
m_Script: {fileID: 11500000, guid: 93bfed50167472f489a27f0518070ed5, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &2440131775796007731
@ -845,7 +869,7 @@ MonoBehaviour:
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 8890768496808647529}
- m_Target: {fileID: 5873276942444222861}
m_TargetAssemblyTypeName: MainPanelButtonController, Assembly-CSharp
m_MethodName: OnShopPanelClick
m_Mode: 1
@ -1093,7 +1117,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "16\uAE09"
m_text: "18\uAE09"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 85a19688db53c77469fc4406b01045da, type: 2}
m_sharedMaterial: {fileID: -2477908578676791210, guid: 85a19688db53c77469fc4406b01045da, type: 2}
@ -1283,9 +1307,9 @@ MonoBehaviour:
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 8890768496808647529}
m_TargetAssemblyTypeName: MainPanelButtonController, Assembly-CSharp
m_MethodName: OpenReplayPanelClick
- m_Target: {fileID: 0}
m_TargetAssemblyTypeName: PanelManager, Assembly-CSharp
m_MethodName: OpenReplayPanel
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
@ -1690,7 +1714,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\uD14C\uC2A4\uD2B801"
m_text: "\uBC15\uC77C\uD658"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 85a19688db53c77469fc4406b01045da, type: 2}
m_sharedMaterial: {fileID: -2477908578676791210, guid: 85a19688db53c77469fc4406b01045da, type: 2}
@ -1934,6 +1958,7 @@ MonoBehaviour:
profileImages:
- {fileID: 4381601883819518242}
- {fileID: 6837262359343561592}
rankingButton: {fileID: 202560210887412943}
--- !u!1 &9186617826613474881
GameObject:
m_ObjectHideFlags: 0

View File

@ -545,7 +545,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: -392, y: -2.9951172}
m_AnchoredPosition: {x: -392, y: -0.0053710938}
m_SizeDelta: {x: 784, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!114 &5526954107552917871

View File

@ -102,7 +102,7 @@ GameObject:
- component: {fileID: 4433003410674354461}
- component: {fileID: 7284996522760678143}
- component: {fileID: 9008029491930858052}
- component: {fileID: 5051480494068645349}
- component: {fileID: 1799015040358630920}
m_Layer: 5
m_Name: Replay Panel
m_TagString: Untagged
@ -180,7 +180,7 @@ CanvasGroup:
m_Interactable: 1
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!114 &5051480494068645349
--- !u!114 &1799015040358630920
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@ -189,13 +189,12 @@ MonoBehaviour:
m_GameObject: {fileID: 3090474328172188941}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dd8226d0f420f6e45b27896f8c57b9c1, type: 3}
m_Script: {fileID: 11500000, guid: 43d3a140ef05b96439c226fb3de1178e, type: 3}
m_Name:
m_EditorClassIdentifier:
panelRectTransform: {fileID: 1819504122199746525}
scrollItemPrefab: {fileID: 7605012172595602668, guid: bef1de10a3cc5834a95a8689a2de2bb7, type: 3}
content: {fileID: 7514948643227889924}
replayCellPrefab: {fileID: 6381393519116383223, guid: e4d9ccbb1a6d7b1408923e47b6e7b690, type: 3}
--- !u!1 &3668037476601755215
GameObject:
m_ObjectHideFlags: 0
@ -316,7 +315,7 @@ MonoBehaviour:
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 5051480494068645349}
- m_Target: {fileID: 0}
m_TargetAssemblyTypeName: ScrollPanelController, Assembly-CSharp
m_MethodName: OnClickCloseButton
m_Mode: 1

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 3f72acd812737e54da767a0a48b4a60d
DefaultImporter:
guid: 124ba02c0639b9d47ac579bba38ca366
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:

View File

@ -122,6 +122,107 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &390032766
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 390032770}
- component: {fileID: 390032769}
- component: {fileID: 390032768}
- component: {fileID: 390032767}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &390032767
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 390032766}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &390032768
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 390032766}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &390032769
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 390032766}
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: 0
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!224 &390032770
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 390032766}
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: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!1 &519420028
GameObject:
m_ObjectHideFlags: 0
@ -214,6 +315,74 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &900927548
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 900927551}
- component: {fileID: 900927550}
- component: {fileID: 900927549}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &900927549
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 900927548}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
m_Name:
m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &900927550
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 900927548}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 10
--- !u!4 &900927551
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 900927548}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1017982169
GameObject:
m_ObjectHideFlags: 0
@ -223,7 +392,8 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 1017982171}
- component: {fileID: 1017982170}
- component: {fileID: 1017982173}
- component: {fileID: 1017982172}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged
@ -231,22 +401,6 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1017982170
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1017982169}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b945f44e6cbf420a9f40dc21b5f2e365, type: 3}
m_Name:
m_EditorClassIdentifier:
signinPanel: {fileID: 925522282249935710, guid: e14c9b2925f0ddb4192af743e5cc166a, type: 3}
signupPanel: {fileID: 3181524094944658765, guid: 8827fe7caa3145e40b1369cc42f8697d, type: 3}
canvas: {fileID: 0}
_userManager: {fileID: 0}
--- !u!4 &1017982171
Transform:
m_ObjectHideFlags: 0
@ -262,9 +416,168 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1017982172
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1017982169}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 35a4c6d5d3a97b444b968e68ec8bb9f7, type: 3}
m_Name:
m_EditorClassIdentifier:
panelManagerPrefab: {fileID: 3475740041361426276, guid: 085ca07ca90c92545b2594bd13412701, type: 3}
audioManagerPrefab: {fileID: 2946408323859178723, guid: e829818dce39a5d4383e061111bed871, type: 3}
--- !u!82 &1017982173
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1017982169}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!1 &1472647225
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1472647227}
- component: {fileID: 1472647226}
m_Layer: 0
m_Name: MainPanelManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1472647226
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1472647225}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0696b08f74b24325a7b378405f6170af, type: 3}
m_Name:
m_EditorClassIdentifier:
loadingPanelController: {fileID: 1454248679793356470, guid: 634a60576b4855940a97d1e7447b9fcc, type: 3}
mainPanelController: {fileID: 7488082087611091670, guid: e1835a90a4d722a4b99be61179de8789, type: 3}
--- !u!4 &1472647227
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1472647225}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 519420032}
- {fileID: 1017982171}
- {fileID: 390032770}
- {fileID: 900927551}
- {fileID: 1472647227}

View File

@ -5198,6 +5198,7 @@ GameObject:
m_Component:
- component: {fileID: 679766978}
- component: {fileID: 679766977}
- component: {fileID: 679766979}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged
@ -5217,16 +5218,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 35a4c6d5d3a97b444b968e68ec8bb9f7, type: 3}
m_Name:
m_EditorClassIdentifier:
mainPanel: {fileID: 0}
signinPanel: {fileID: 0}
signupPanel: {fileID: 0}
settingsPanel: {fileID: 0}
confirmPanel: {fileID: 8145365568262946399, guid: 76f1fe6b5243faf4f9b8caee7312d336, type: 3}
rankingPanel: {fileID: 0}
shopPanel: {fileID: 0}
giboPanel: {fileID: 0}
canvas: {fileID: 2704399793934511678}
profileSprites: []
panelManagerPrefab: {fileID: 3475740041361426276, guid: 085ca07ca90c92545b2594bd13412701, type: 3}
audioManagerPrefab: {fileID: 2946408323859178723, guid: e829818dce39a5d4383e061111bed871, type: 3}
--- !u!4 &679766978
Transform:
m_ObjectHideFlags: 0
@ -5242,6 +5235,102 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!82 &679766979
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 679766976}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!1001 &681290285
PrefabInstance:
m_ObjectHideFlags: 0
@ -18687,7 +18776,19 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 3806122117153528265}
m_OnClick:
m_PersistentCalls:
m_Calls: []
m_Calls:
- m_Target: {fileID: 6113787613455091454}
m_TargetAssemblyTypeName: ReplayController, Assembly-CSharp
m_MethodName: OnclickExitButton
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &2180157736468784195
GameObject:
m_ObjectHideFlags: 0
@ -18825,7 +18926,7 @@ GameObject:
- component: {fileID: 182763848042457448}
- component: {fileID: 5649645114534718557}
m_Layer: 5
m_Name: Player Name Text
m_Name: PlayerB Name Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@ -18944,7 +19045,7 @@ GameObject:
- component: {fileID: 1750532428139497284}
- component: {fileID: 4888719462519445862}
m_Layer: 5
m_Name: Player Name Text
m_Name: PlayerA Name Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@ -19364,6 +19465,10 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: bda9793c3fea2104199340f907378533, type: 3}
m_Name:
m_EditorClassIdentifier:
playerANicknameText: {fileID: 4888719462519445862}
playerBNicknameText: {fileID: 5649645114534718557}
playerAImage: {fileID: 8274101518570821972}
playerBImage: {fileID: 1516328598779423605}
--- !u!224 &6390176559513736999
RectTransform:
m_ObjectHideFlags: 0

View File

@ -2,6 +2,7 @@ using System;
using UnityEngine;
using DG.Tweening;
using TMPro;
using UnityEngine.EventSystems;
using UnityEngine.Serialization;
using UnityEngine.UI;
@ -14,7 +15,7 @@ public class CoinsPanelController : MonoBehaviour
[SerializeField] private AudioClip coinsRemoveAudioClip;
[SerializeField] private AudioClip coinsAddAudioClip;
[SerializeField] private AudioClip coinsEmptyAudioClip;
private Color _coinsColor;
private AudioSource _audioSource;
private int _coinsCount;
@ -66,7 +67,7 @@ public class CoinsPanelController : MonoBehaviour
if (isAdd)
{
var currentHeartCount = coinsCountText.text;
coinsCountText.text = (int.Parse(currentHeartCount) + 100).ToString();
coinsCountText.text = (int.Parse(currentHeartCount) + 500).ToString();
// 코인 텍스트 100씩 증가
}
else
@ -93,13 +94,15 @@ public class CoinsPanelController : MonoBehaviour
/// 코인 추가 함수
/// </summary>
/// <param name="coinsCount"> 추가할 코인 수량</param>
/// <param name="shopPanel">상점 패널 캔버스 그룹</param>
/// <param name="action">애니메이션 종료 후 동작 EX) 코인 수량 변경</param>
public void AddCoins(int coinsCount, Action action)
public void AddCoins(int coinsCount, CanvasGroup shopPanel,Action action)
{
shopPanel.blocksRaycasts = false; //코인 중복 추가 방지 코드
Sequence sequence = DOTween.Sequence();
// i += a 반복 횟수 조절, 100개 단위로 상승 차감 시 100으로 설정
for (int i = 0; i < coinsCount; i+=100)
for (int i = 0; i < coinsCount; i+=500)
{
sequence.AppendCallback(() =>
{
@ -115,6 +118,10 @@ public class CoinsPanelController : MonoBehaviour
});
sequence.AppendInterval(0.5f);
}
sequence.OnComplete(() =>
{
shopPanel.blocksRaycasts = true; //구매 후 클릭 활성화
});
}
public void EmptyCoins()

View File

@ -3,4 +3,8 @@
public const string ServerURL = "http://localhost:3000";
public const string GameServerURL = "ws://localhost:3000";
public const int BoardSize = 15;
public const int ReplayMaxRecordSize = 10;
public const int WIN_COUNT = 5;
//무승부 확인을 위한 최소 착수 수
public const int MinCountForDrawCheck = 150;
}

View File

@ -4,6 +4,6 @@ using UnityEngine;
public class ShopItem
{
public string Name;
public string Price;
public string name;
public int price;
}

View File

@ -12,10 +12,10 @@ public abstract class BasePlayerState
public void ProcessMove(GameLogic gameLogic, Enums.PlayerType playerType, int row, int col)
{
gameLogic.fioTimer.PauseTimer();
gameLogic.SetNewBoardValue(playerType, row, col);
gameLogic.CountStoneCounter();
if (gameLogic.CheckGameWin(playerType, row, col))
{
@ -24,10 +24,23 @@ public abstract class BasePlayerState
}
else
{
//TODO: 무승부 확인
HandleNextTurn(gameLogic);
if (gameLogic.TotalStoneCounter >= Constants.MinCountForDrawCheck)
{
if (gameLogic.CheckGameDraw())
{
GameManager.Instance.panelManager.OpenConfirmPanel($"Game Over: Draw",() =>{});
gameLogic.EndGame();
}
else
{
HandleNextTurn(gameLogic);
}
}
else
{
HandleNextTurn(gameLogic);
}
}
}
}
@ -85,7 +98,6 @@ public class AIState: BasePlayerState
public override void OnEnter(GameLogic gameLogic)
{
gameLogic.fioTimer.StartTimer();
//TODO: AI이식
OmokAI.Instance.StartBestMoveSearch(gameLogic.GetBoard(), (bestMove) =>
{
if(bestMove.HasValue)
@ -137,17 +149,23 @@ public class GameLogic : MonoBehaviour
public StoneController stoneController;
public Enums.PlayerType currentTurn;
public Enums.GameType gameType;
//총 착수된 돌 카운터
public int _totalStoneCounter;
public int TotalStoneCounter{get{return _totalStoneCounter;}}
public BasePlayerState firstPlayerState;
public BasePlayerState secondPlayerState;
private BasePlayerState _currentPlayerState;
//타이머
public FioTimer fioTimer;
private const int WIN_COUNT = 5;
//선택된 좌표
public int selectedRow;
public int selectedCol;
//마지막 배치된 좌표
private int _lastRow;
private int _lastCol;
#region Renju Members
// 렌주룰 금수 검사기
private RenjuForbiddenMoveDetector _forbiddenDetector;
@ -156,9 +174,6 @@ public class GameLogic : MonoBehaviour
private List<Vector2Int> _forbiddenMoves = new List<Vector2Int>();
#endregion
private int _lastRow;
private int _lastCol;
private static int[][] _directions = new int[][]
{
new int[] {1, 0}, // 수직
@ -173,6 +188,7 @@ public class GameLogic : MonoBehaviour
_board = new Enums.PlayerType[15, 15];
this.stoneController = stoneController;
this.gameType = gameType;
_totalStoneCounter = 0;
selectedRow = -1;
selectedCol = -1;
@ -209,7 +225,6 @@ public class GameLogic : MonoBehaviour
//TODO: 기보 매니저에게 플레이어 닉네임 넘겨주기
ReplayManager.Instance.InitReplayData("PlayerA","nicknameB");
switch (gameType)
{
@ -226,10 +241,10 @@ public class GameLogic : MonoBehaviour
break;
}
}
public Enums.PlayerType[,] GetBoard()
//돌 카운터 증가 함수
public void CountStoneCounter()
{
return _board;
_totalStoneCounter++;
}
//착수 버튼 클릭시 호출되는 함수
@ -331,7 +346,7 @@ public class GameLogic : MonoBehaviour
public void EndGame()
{
SetState(null);
//TODO: 게임 종료 후 행동 구현
}
//승리 확인 함수
@ -342,7 +357,7 @@ public class GameLogic : MonoBehaviour
var (count, _) = CountStones(_board, row, col, dir, player);
// 자기 자신 포함하여 5개 이상일 시 true 반환
if (count + 1 >= WIN_COUNT)
if (count + 1 >= Constants.WIN_COUNT)
return true;
}
@ -388,7 +403,56 @@ public class GameLogic : MonoBehaviour
return (count, openEnds);
}
#region Renju Rule Detector
public Enums.PlayerType[,] GetBoard()
{
return _board;
}
//무승부 확인
public bool CheckGameDraw()
{
if (CheckIsFull(_board)) return true; // 빈 칸이 없으면 무승부
bool playerAHasChance = CheckFiveChance(_board, Enums.PlayerType.PlayerA);
bool playerBHasChance = CheckFiveChance(_board, Enums.PlayerType.PlayerB);
return !(playerAHasChance || playerBHasChance); // 둘 다 기회가 없으면 무승부
}
//연속되는 5개가 만들어질 기회가 있는지 판단
private bool CheckFiveChance(Enums.PlayerType[,] board, Enums.PlayerType player)
{
var tempBoard = (Enums.PlayerType[,])board.Clone();
int size = board.GetLength(0);
for (int row = 0; row < size; row++)
{
for (int col = 0; col < size; col++)
{
if (tempBoard[row, col] != Enums.PlayerType.None) continue;
tempBoard[row, col] = player;
foreach (var dir in _directions)
{
var (count, _) = CountStones(tempBoard, row, col, dir, player);
// 자기 자신 포함하여 5개 이상일 시 true 반환
if (count + 1 >= Constants.WIN_COUNT) return true;
}
}
}
return false;
}
//보드가 꽉 찼는지 확인
private static bool CheckIsFull(Enums.PlayerType[,] board)
{
int size = board.GetLength(0);
for (int row = 0; row < size; row++)
{
for (int col = 0; col < size; col++)
{
if (board[row, col] == Enums.PlayerType.None) return false;
}
}
return true;
}
#region Renju Rule Detector
// 금수 위치 업데이트 및 표시
private void UpdateForbiddenMoves()
{

View File

@ -31,10 +31,10 @@ public class GameManager : Singleton<GameManager>
//게임 씬에서 확인하기 위한 임시 코드
// _canvas = canvas.GetComponent<Canvas>();
// _stoneController = GameObject.FindObjectOfType<StoneController>();
// _stoneController.InitStones();
// var fioTimer = FindObjectOfType<FioTimer>();
// _gameLogic = new GameLogic(_stoneController, _gameType, fioTimer);
_stoneController = GameObject.FindObjectOfType<StoneController>();
_stoneController.InitStones();
var fioTimer = FindObjectOfType<FioTimer>();
_gameLogic = new GameLogic(_stoneController, _gameType, fioTimer);
}
private void InitPanels()
@ -51,7 +51,6 @@ public class GameManager : Singleton<GameManager>
}
else
{
Debug.Log("착수 위치를 선택 해주세요");
//TODO: 착수할 위치를 선택하라는 동작
}
}
@ -75,12 +74,6 @@ public class GameManager : Singleton<GameManager>
var fioTimer = FindObjectOfType<FioTimer>();
_gameLogic = new GameLogic(_stoneController, _gameType, fioTimer);
}
else if (scene.name == "Replay")
{
_stoneController = GameObject.FindObjectOfType<StoneController>();
_stoneController.InitStones();
_gameLogic = new GameLogic(_stoneController, Enums.GameType.Replay);
}
}
//임시 재시작 재대결
public void RetryGame()
@ -90,39 +83,4 @@ public class GameManager : Singleton<GameManager>
_gameLogic.SetState(_gameLogic.firstPlayerState);
}
#region ReplayControll
public void ReplayNext(Move nextMove )
{
// 보드에 돌을 설정하기 위해 gameLogic의 SetNewBoardValue호출
if (nextMove.stoneType.Equals(Enums.StoneType.Black.ToString()))
{
_gameLogic.SetNewBoardValue(Enums.PlayerType.PlayerA, nextMove.columnIndex, nextMove.rowIndex);
}
else if (nextMove.stoneType.Equals(Enums.StoneType.White.ToString()))
{
_gameLogic.SetNewBoardValue(Enums.PlayerType.PlayerB, nextMove.columnIndex, nextMove.rowIndex);
}
// 돌이 놓인 내역을 ReplayManager에도 반영
ReplayManager.Instance.PushMove(nextMove);
}
public void ReplayUndo(Move targetMove)
{
if (targetMove.stoneType.Equals(Enums.StoneType.Black.ToString()))
{
_gameLogic.SetNewBoardValue(Enums.PlayerType.PlayerA, targetMove.columnIndex, targetMove.rowIndex);
}
else if (targetMove.stoneType.Equals(Enums.StoneType.White.ToString()))
{
_gameLogic.SetNewBoardValue(Enums.PlayerType.PlayerB, targetMove.columnIndex, targetMove.rowIndex);
}
ReplayManager.Instance.PushUndoMove(targetMove);
//TODO: 화면상에서 돌 치우기
}
#endregion
}

View File

@ -10,6 +10,7 @@ public class MainPanelController : MonoBehaviour
[SerializeField] private TextMeshProUGUI ratingText;
[SerializeField] private Button signOutButton;
[SerializeField] private GameObject[] profileImages;
[SerializeField] private Button rankingButton;
private int _selectedImageIndex;
@ -72,6 +73,11 @@ public class MainPanelController : MonoBehaviour
});
}
public void OnLeaderboardButtonClick()
{
GameManager.Instance.panelManager.OpenRankingPanel(); // GameManager를 통해 리더보드 열기
}
//대국 시작 버튼 클릭
public void OnClickGameStart()
{

View File

@ -47,6 +47,8 @@ public class NetworkManager : Singleton<NetworkManager>
else
{
var result = www.downloadHandler.text;
success?.Invoke();
// 회원가입 성공 팝업 표시
GameManager.Instance.panelManager.OpenConfirmPanel("회원 가입이 완료 되었습니다.", () =>
{
@ -374,20 +376,29 @@ public class NetworkManager : Singleton<NetworkManager>
}
}
//코인 구매 함수
public void PurchaseCoins(Action<int> success, Action failure)
/// <summary>
/// 코인 구매 함수
/// </summary>
/// <param name="amount">충전양</param>
/// <param name="paymentId">결제ID(??)</param>
/// <param name="paymentType">결제타입(카드,구글페이)</param>
/// <param name="success"></param>
/// <param name="failure"></param>
public void PurchaseCoins(int amount, string paymentId, string paymentType, Action<int> success, Action failure)
{
StartCoroutine(PurchaseCoinsCoroutine(success, failure));
StartCoroutine(PurchaseCoinsCoroutine(amount, paymentId, paymentType, success, failure));
}
private IEnumerator PurchaseCoinsCoroutine(Action<int> success, Action failure)
private IEnumerator PurchaseCoinsCoroutine(int amount, string paymentId, string paymentType, Action<int> success, Action failure)
{
string jsonString = "{\"adCompleted\": true}"; //테스트를 위해 ture로 설정
byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonString);
string url = Constants.ServerURL + "/coins/purchase"; // 서버 엔드포인트
PurchaseData purchaseData = new PurchaseData(amount, paymentId, paymentType);
string jsonString = JsonUtility.ToJson(purchaseData);
using (UnityWebRequest www =
new UnityWebRequest(Constants.ServerURL + "/coins/recharge/ad", UnityWebRequest.kHttpVerbPOST))
using (UnityWebRequest www = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST))
{
byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonString);
www.uploadHandler = new UploadHandlerRaw(bodyRaw);
www.downloadHandler = new DownloadHandlerBuffer();
www.SetRequestHeader("Content-Type", "application/json");
@ -406,26 +417,29 @@ public class NetworkManager : Singleton<NetworkManager>
yield return www.SendWebRequest();
if (www.result == UnityWebRequest.Result.ConnectionError ||
www.result == UnityWebRequest.Result.ProtocolError)
if (www.result == UnityWebRequest.Result.ConnectionError || www.result == UnityWebRequest.Result.ProtocolError)
{
Debug.Log("광고 시청 후 코인 충전 실패: " + www.error);
Debug.LogError("결제 요청 실패: " + www.error);
failure?.Invoke();
}
else
{
var result = www.downloadHandler.text;
var rechargeResult = JsonUtility.FromJson<CoinsAdResult>(result);
var purchaseResult = JsonUtility.FromJson<CoinsPurchaseResult>(result);
if (rechargeResult.result == "SUCCESS")
if (purchaseResult.result == "SUCCESS")
{
Debug.Log("광고 시청으로 코인 충전 완료: " + rechargeResult.recharged);
Debug.Log($"결제 완료 {purchaseResult.purchased} 코인 충전됨, 현재 코인: {purchaseResult.currentCoins}");
// 유저 데이터 갱신
UserManager.Instance.SetCoinsInfo();
success?.Invoke(rechargeResult.recharged);
// 최신 코인 개수를 성공 콜백으로 전달
success?.Invoke(purchaseResult.purchased);
}
else
{
Debug.Log("광고 시청 후 충전 실패: " + rechargeResult.result);
Debug.LogError("결제 후 코인 충전 실패: " + purchaseResult.result);
failure?.Invoke();
}
}

View File

@ -0,0 +1,31 @@
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class ScoreCellController : MonoBehaviour
{
[SerializeField] private Image profileImage;
[SerializeField] private TMP_Text nicknameText;
[SerializeField] private TMP_Text scoreText;
[SerializeField] private TMP_Text winRateText;
[SerializeField] private TMP_Text winText;
[SerializeField] private TMP_Text loseText;
[SerializeField] private List<Sprite> profileSprites;
public void SetCellInfo(ScoreInfo item)
{
nicknameText.text = item.nickname;
scoreText.text = item.score.ToString();
winRateText.text = item.winRate.ToString("F2");
winText.text = item.win.ToString();
loseText.text = item.lose.ToString();
if (profileImage != null && item.imageIndex != null)
{
profileImage.sprite = profileSprites[item.imageIndex]; // 프로필 이미지 (Sprite 할당)
}
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: dd8226d0f420f6e45b27896f8c57b9c1
guid: f2f69892cc9e75e43a699627c577b4a5
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@ -0,0 +1,11 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Serialization;
[Serializable]
public class ScoreListWrapper
{
public List<ScoreInfo> leaderboardDatas; // 여러 개의 ScoreInfo를 담을 리스트
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: da4e7b6c90ef1dd49a95d0f1716dedc7
guid: 873dbba9a01f08c409db64d4e90c3017
MonoImporter:
externalObjects: {}
serializedVersion: 2
@ -8,4 +8,4 @@ MonoImporter:
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
assetBundleVariant:

View File

@ -25,6 +25,11 @@ public struct ScoreInfo
public string email;
public string nickname;
public int score;
public float winRate;
public int win;
public int lose;
public int totalGames;
public int imageIndex;
}
[Serializable]
@ -55,14 +60,13 @@ public class SigninPanelController : MonoBehaviour
NetworkManager.Instance.Signin(signinData, (signinResult) =>
{
if (mainPanel == null) mainPanel = FindObjectOfType<MainPanelManager>();
Destroy(gameObject);
// 유저 정보 저장
UserManager.Instance.SetUserInfo(signinResult);
// 메인 패널 정보 갱신
mainPanel.UpdateMainPanelUI(GameManager.Instance.panelManager.OpenMainPanel);
Destroy(gameObject);
}, result =>
{
if (result == 0)

View File

@ -20,6 +20,19 @@ public class CoinsInfoResult
public int coins;
}
/// <summary>
/// 코인 구매 응답 클래스
/// </summary>
public class CoinsPurchaseResult
{
public string result;
public string message;
public int purchased; // 충전된 코인량
public int currentCoins; // 현재 보유 코인량
}
/// <summary>
/// 광고 시청 응답 클래스
/// </summary>
public class CoinsAdResult
{
public string result;
@ -28,6 +41,25 @@ public class CoinsAdResult
public int currentCoins; // 현재 보유 코인량
}
/// <summary>
/// 코인 구매 요청 데이터 클래스
/// </summary>
public class PurchaseData
{
public int amount;
public string paymentId;
public string paymentType;
public PurchaseData(int amount, string paymentId, string paymentType)
{
this.amount = amount;
this.paymentId = paymentId;
this.paymentType = paymentType;
}
}
public class UserManager : Singleton<UserManager>
{
public string UserId { get; private set; }

View File

@ -1,9 +1,20 @@
public class ForbiddenDetectorBase
{
/// <summary>
/// 흑색 돌
/// </summary>
private protected Enums.PlayerType Black = Enums.PlayerType.PlayerA;
/// <summary>
/// 빈칸
/// </summary>
private protected Enums.PlayerType Space = Enums.PlayerType.None;
// 8방향을 나타내는 델타 배열 (가로, 세로, 대각선 방향)
/// <summary>
/// 흰색 돌, 렌주룰 내에선 벽으로도 활용
/// </summary>
private protected Enums.PlayerType White = Enums.PlayerType.PlayerB;
/// <summary>
/// 8방향을 나타내는 델타 배열 (가로, 세로, 대각선 방향)
/// </summary>
private protected readonly int[,] Directions = new int[8, 2]
{
{ 1, 0 }, // 오른쪽
@ -16,11 +27,13 @@
{ 1, -1 } // 오른쪽 위
};
// 방향 쌍을 정의 (반대 방향끼리 쌍을 이룸)
// 0-4: 가로 방향 쌍 (동-서)
// 1-5: 대각선 방향 쌍 (남동-북서)
// 2-6: 세로 방향 쌍 (남-북)
// 3-7: 대각선 방향 쌍 (남서-북동)
/// <summary>
/// 방향 쌍을 정의 (반대 방향끼리 쌍을 이룸)
/// 0-4: 가로 방향 쌍 (동-서)
/// 1-5: 대각선 방향 쌍 (남동-북서)
/// 2-6: 세로 방향 쌍 (남-북)
/// 3-7: 대각선 방향 쌍 (남서-북동)
/// </summary>
private protected readonly int[,] DirectionPairs = { { 0, 4 }, { 1, 5 }, { 2, 6 }, { 3, 7 } };
// 15*15 보드 사이즈

View File

@ -30,12 +30,9 @@ public class RenjuDoubleFourDetector: ForbiddenDetectorBase
/// </summary>
private bool CheckDoubleFour(Enums.PlayerType[,] board, int row, int col)
{
// 각각 두개의 라인에서 쌍사를 형성하는 경우
if (FindDoubleLineFour(board, row, col)) return true;
// true : 일직선으로 쌍사가 만들어지는 특수 패턴
// false : 모든 경우에도 쌍사가 만들어지지 않음
return FindSingleLineDoubleFour(board, row, col);
return FindDoubleLineFour(board, row, col) || // 각각 두개의 라인에서 쌍사를 형성하는 경우
FindSingleLineDoubleFour(board, row, col); // 일직선으로 쌍사가 만들어지는 특수 패턴
}
private bool FindDoubleLineFour(Enums.PlayerType[,] board, int row, int col)
@ -136,7 +133,7 @@ public class RenjuDoubleFourDetector: ForbiddenDetectorBase
}
else
{
linePattern[centerIndex + i] = Space; // 범위 밖은 빈칸으로 처리
linePattern[centerIndex + i] = White; // 범위 밖은 백돌로 처리
}
}
@ -152,7 +149,7 @@ public class RenjuDoubleFourDetector: ForbiddenDetectorBase
}
else
{
linePattern[centerIndex - i] = Space; // 범위 밖은 빈칸으로 처리
linePattern[centerIndex - i] = White; // 범위 밖은 백돌로 처리
}
}
@ -181,7 +178,7 @@ public class RenjuDoubleFourDetector: ForbiddenDetectorBase
}
}
// 정확히 4개의 돌이 있고, 1개의 빈칸이 있으면 4로 판정
// 4개의 돌이 있고, 1개의 빈칸이 있으면 4로 판정
// (현재 위치는 흑으로 이미 설정되어 있음)
if (stoneCount == 4)
{

View File

@ -1,3 +1,11 @@
fileFormatVersion: 2
guid: 0daf1f2b8cbe4b19adc0e42db7a15991
timeCreated: 1742270734
fileFormatVersion: 2
guid: f997e95272e950240a6e9e2f8a99fdfa
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +1,25 @@
using System.Collections.Generic;
using UnityEngine;
public class RenjuDoubleThreeDetector: ForbiddenDetectorBase
/// <summary>
/// 렌주 쌍삼(3-3) 금수 판정을 위한 개선된 클래스
/// 렌주 국제 규칙 9.3에 따라 쌍삼의 예외 상황까지 정확히 판별
/// </summary>
public class RenjuDoubleThreeDetector : ForbiddenDetectorBase
{
// 열린 3 패턴 정보를 저장하는 구조체
private struct OpenThreeInfo
{
public int direction; // 방향 인덱스
public List<Vector2Int> emptyPositions; // 빈 좌표들 (4를 만들 수 있는 위치)
public OpenThreeInfo(int dir)
{
direction = dir;
emptyPositions = new List<Vector2Int>();
}
}
/// <summary>
/// 쌍삼(3-3) 여부를 검사합니다.
/// </summary>
@ -15,12 +32,635 @@ public class RenjuDoubleThreeDetector: ForbiddenDetectorBase
// 임시로 돌 배치
board[row, col] = Black;
// 쌍삼 검사
// bool isThreeThree = CheckThreeThree(board, row, col);
// 쌍삼 기본 검사 (열린 3이 2개 이상인지)
List<OpenThreeInfo> openThrees = FindAllOpenThrees(board, row, col);
// 원래 상태로 되돌림
board[row, col] = Space;
// 열린 3이 2개 미만이면 쌍삼이 아님
if (openThrees.Count < 2)
return false;
// 렌주 규칙 9.3에 따른 예외 케이스 확인
return !CheckDoubleThreeExceptions(board, row, col, openThrees);
}
/// <summary>
/// 모든 방향에서 열린 3을 찾아 반환합니다.
/// </summary>
private List<OpenThreeInfo> FindAllOpenThrees(Enums.PlayerType[,] board, int row, int col)
{
List<OpenThreeInfo> openThrees = new List<OpenThreeInfo>();
// 4개의 방향 쌍에 대해 검사 (대각선 및 직선 포함)
for (int i = 0; i < 4; i++)
{
int dir1 = DirectionPairs[i, 0];
int dir2 = DirectionPairs[i, 1];
// 열린 3 정보 획득
OpenThreeInfo threeInfo = new OpenThreeInfo(i);
if (FindOpenThreeInDirection(board, row, col, dir1, dir2, ref threeInfo))
{
openThrees.Add(threeInfo);
}
}
return openThrees;
}
/// <summary>
/// 특정 방향에서 열린 3을 찾고 관련 정보를 채웁니다.
/// </summary>
private bool FindOpenThreeInDirection(Enums.PlayerType[,] board, int row, int col, int dir1, int dir2, ref OpenThreeInfo threeInfo)
{
// 라인 패턴 추출
Enums.PlayerType[] linePattern = ExtractLinePattern(board, row, col, dir1, dir2);
int centerIndex = 5; // 중앙 인덱스 (현재 위치)
// 연속된 열린 3 또는 한 칸 떨어진 열린 3 확인
if (FindConsecutiveOpenThree(linePattern, centerIndex, ref threeInfo, row, col, dir1, dir2) ||
FindGappedOpenThree(linePattern, centerIndex, ref threeInfo, row, col, dir1, dir2))
{
// 열린 3이 발견됨
return true;
}
return false;
}
/// <summary>
/// 라인 패턴을 추출합니다.
/// </summary>
private Enums.PlayerType[] ExtractLinePattern(Enums.PlayerType[,] board, int row, int col, int dir1, int dir2)
{
Enums.PlayerType[] linePattern = new Enums.PlayerType[11];
int centerIndex = 5; // 중앙 인덱스 (현재 위치)
// 현재 위치 설정
linePattern[centerIndex] = Black;
// dir1 방향으로 패턴 채우기
for (int i = 1; i <= 5; i++)
{
int newRow = row + Directions[dir1, 0] * i;
int newCol = col + Directions[dir1, 1] * i;
if (IsInBounds(newRow, newCol))
{
linePattern[centerIndex + i] = board[newRow, newCol];
}
else
{
linePattern[centerIndex + i] = White; // 범위 밖은 벽으로 처리하여 일관성 유지
}
}
// dir2 방향으로 패턴 채우기
for (int i = 1; i <= 5; i++)
{
int newRow = row + Directions[dir2, 0] * i;
int newCol = col + Directions[dir2, 1] * i;
if (IsInBounds(newRow, newCol))
{
linePattern[centerIndex - i] = board[newRow, newCol];
}
else
{
linePattern[centerIndex - i] = White; // 범위 밖은 벽으로 처리하여 일관성 유지
}
}
return linePattern;
}
/// <summary>
/// 연속된 열린 3 패턴을 찾고 관련 정보를 채웁니다.
/// </summary>
private bool FindConsecutiveOpenThree(Enums.PlayerType[] linePattern, int centerIndex, ref OpenThreeInfo threeInfo, int row, int col, int dir1, int dir2)
{
// 연속된 3개의 돌 패턴 (●●●)
for (int start = centerIndex - 2; start <= centerIndex; start++)
{
// 범위 체크
if (start < 0 || start + 2 >= linePattern.Length)
{
continue;
}
// 3개의 연속된 돌 확인
bool isConsecutiveThree = true;
for (int i = 0; i < 3; i++)
{
if (linePattern[start + i] != Black)
{
isConsecutiveThree = false;
break;
}
}
if (isConsecutiveThree)
{
// 양쪽이 모두 열려있는지 확인
bool isLeftOpen = (start - 1 >= 0) && (linePattern[start - 1] == Space);
bool isRightOpen = (start + 3 < linePattern.Length) && (linePattern[start + 3] == Space);
// 양쪽이 모두 열려있으면 열린 3
if (isLeftOpen && isRightOpen)
{
// 추가 검증: 더 확장해서 열려있는지 확인
bool isExtendedLeftOpen = IsExtendedOpen(linePattern, start - 1, -1);
bool isExtendedRightOpen = IsExtendedOpen(linePattern, start + 3, 1);
if (isExtendedLeftOpen && isExtendedRightOpen)
{
// 4를 만들 수 있는 위치 저장
if (isLeftOpen)
{
int leftRow = row + Directions[dir2, 0] * (centerIndex - (start - 1));
int leftCol = col + Directions[dir2, 1] * (centerIndex - (start - 1));
if (IsInBounds(leftRow, leftCol))
{
threeInfo.emptyPositions.Add(new Vector2Int(leftCol, leftRow));
}
}
if (isRightOpen)
{
int rightRow = row + Directions[dir1, 0] * ((start + 3) - centerIndex);
int rightCol = col + Directions[dir1, 1] * ((start + 3) - centerIndex);
if (IsInBounds(rightRow, rightCol))
{
threeInfo.emptyPositions.Add(new Vector2Int(rightCol, rightRow));
}
}
return true;
}
}
}
}
return false;
}
/// <summary>
/// 한 칸 떨어진 열린 3 패턴을 찾고 관련 정보를 채웁니다.
/// </summary>
private bool FindGappedOpenThree(Enums.PlayerType[] linePattern, int centerIndex, ref OpenThreeInfo threeInfo, int row, int col, int dir1, int dir2)
{
// 한 칸 떨어진 패턴 확인 (●●○● 또는 ●○●●)
for (int start = Mathf.Max(0, centerIndex - 3); start <= Mathf.Min(linePattern.Length - 4, centerIndex); start++)
{
// 패턴 내에 돌과 빈칸 개수 확인
int stoneCount = 0;
int gapCount = 0;
int gapPosition = -1;
for (int i = 0; i < 4; i++)
{
if (linePattern[start + i] == Black)
{
stoneCount++;
}
else if (linePattern[start + i] == Space)
{
gapCount++;
gapPosition = start + i;
}
else
{
// 상대 돌이나 벽이 있으면 패턴이 깨짐
stoneCount = 0;
break;
}
}
// 3개의 돌과 1개의 빈칸으로 구성된 패턴
if (stoneCount == 3 && gapCount == 1)
{
// 양쪽이 모두 열려있는지 확인
bool isLeftOpen = (start - 1 >= 0) && (linePattern[start - 1] == Space);
bool isRightOpen = (start + 4 < linePattern.Length) && (linePattern[start + 4] == Space);
// 한쪽이라도 열려있으면 잠재적 열린 3
if (isLeftOpen || isRightOpen)
{
// 빈칸에 돌을 놓았을 때 열린 4가 되는지 확인
if (CheckIfCreatesOpenFour(linePattern, gapPosition))
{
// 4를 만들 수 있는 위치 저장 (빈칸 위치)
int gapRow = row;
int gapCol = col;
// 빈칸의 보드 좌표 계산
int offset = gapPosition - centerIndex;
if (offset > 0)
{
gapRow += Directions[dir1, 0] * offset;
gapCol += Directions[dir1, 1] * offset;
}
else if (offset < 0)
{
gapRow += Directions[dir2, 0] * (-offset);
gapCol += Directions[dir2, 1] * (-offset);
}
if (IsInBounds(gapRow, gapCol))
{
threeInfo.emptyPositions.Add(new Vector2Int(gapCol, gapRow));
}
// 장목이 되는지 확인 (장목이 되면 열린 3이 아님)
if (CheckIfCreatesOverline(linePattern, gapPosition))
{
return false;
}
return true;
}
}
}
}
return false;
}
/// <summary>
/// 특정 방향으로 추가로 열려있는지 확인합니다.
/// </summary>
private bool IsExtendedOpen(Enums.PlayerType[] linePattern, int startPos, int direction)
{
// 한 칸 더 확장해서 확인
int nextPos = startPos + direction;
if (nextPos >= 0 && nextPos < linePattern.Length)
{
// 다음 칸이 상대 돌이나 벽이면 확장 불가
if (linePattern[nextPos] == White)
{
return false;
}
}
else
{
// 범위를 벗어나면 확장 불가
return false;
}
return true;
}
/// <summary>
/// 빈칸에 돌을 놓았을 때 열린 4가 되는지 확인합니다.
/// </summary>
private bool CheckIfCreatesOpenFour(Enums.PlayerType[] linePattern, int position)
{
// 시뮬레이션: 빈칸에 돌을 놓아봄
Enums.PlayerType[] testPattern = new Enums.PlayerType[linePattern.Length];
System.Array.Copy(linePattern, testPattern, linePattern.Length);
testPattern[position] = Black;
// 놓은 위치를 포함해 연속된 4가 있는지 확인
for (int start = Mathf.Max(0, position - 3); start <= position; start++)
{
// 범위 체크
if (start + 3 >= testPattern.Length)
{
continue;
}
// 4개의 연속된 돌 확인
bool isConsecutiveFour = true;
for (int i = 0; i < 4; i++)
{
if (testPattern[start + i] != Black)
{
isConsecutiveFour = false;
break;
}
}
if (isConsecutiveFour)
{
// 양쪽이 모두 열려있는지 확인 (열린 4)
bool isLeftOpen = (start - 1 >= 0) && (testPattern[start - 1] == Space);
bool isRightOpen = (start + 4 < testPattern.Length) && (testPattern[start + 4] == Space);
if (isLeftOpen || isRightOpen)
{
return true; // 열린 4나 반열린 4가 됨
}
}
}
return false;
}
/// <summary>
/// 빈칸에 돌을 놓았을 때 장목(6목 이상)이 되는지 확인합니다.
/// </summary>
private bool CheckIfCreatesOverline(Enums.PlayerType[] linePattern, int position)
{
// 시뮬레이션: 빈칸에 돌을 놓아봄
Enums.PlayerType[] testPattern = new Enums.PlayerType[linePattern.Length];
System.Array.Copy(linePattern, testPattern, linePattern.Length);
testPattern[position] = Black;
// 놓은 위치 주변의 최대 연속 돌 수 계산
int maxLength = 1; // 놓은 돌 포함
// 오른쪽 방향 연속 돌 세기
for (int i = position + 1; i < testPattern.Length && testPattern[i] == Black; i++)
{
maxLength++;
}
// 왼쪽 방향 연속 돌 세기
for (int i = position - 1; i >= 0 && testPattern[i] == Black; i--)
{
maxLength++;
}
// 6목 이상이면 장목
return maxLength >= 6;
}
/// <summary>
/// 렌주 규칙 9.3에 따른 쌍삼 예외 케이스를 확인합니다.
/// </summary>
private bool CheckDoubleThreeExceptions(Enums.PlayerType[,] board, int row, int col, List<OpenThreeInfo> openThrees)
{
// 예외 케이스 1: 하나의 삼만 열린 사가 될 수 있는 경우 (9.3 a항)
bool canFormOpenFourWithoutDoubleFour = CheckExceptionCanFormOneFour(board, row, col, openThrees);
// 예외 케이스 2: 9.3 b항 (복잡한 연쇄 체크)
bool isMeetExceptionB = CheckExceptionB(board, row, col, openThrees);
// 어느 하나라도 예외 조건을 만족하면 쌍삼이 아님
return canFormOpenFourWithoutDoubleFour || isMeetExceptionB;
}
/// <summary>
/// 예외 케이스 1: 하나의 삼만 열린 사가 될 수 있고 쌍사가 형성되지 않는 경우 (9.3 a항)
/// </summary>
private bool CheckExceptionCanFormOneFour(Enums.PlayerType[,] board, int row, int col, List<OpenThreeInfo> openThrees)
{
int canFormFourCount = 0;
// 각 열린 3에 대해, 4를 만들 수 있는지 확인
foreach (var threeInfo in openThrees)
{
foreach (var emptyPos in threeInfo.emptyPositions)
{
// 빈 위치에 돌을 놓았을 때 열린 4가 되는지 확인
board[emptyPos.y, emptyPos.x] = Black;
// 쌍사가 형성되는지 확인
bool formsDoubleFour = CheckDoubleFour(board, emptyPos.y, emptyPos.x);
// 원래 상태로 복원
board[emptyPos.y, emptyPos.x] = Space;
// 쌍사 없이 4를 만들 수 있으면 카운트 증가
if (!formsDoubleFour)
{
canFormFourCount++;
// 디버깅
// Debug.Log($"Can form four at ({emptyPos.x}, {emptyPos.y}) without double four");
}
}
}
// 하나의 삼만 쌍사 없이 4로 만들 수 있는 경우
return canFormFourCount == 1;
}
/// <summary>
/// 예외 케이스 2: 9.3 b항의 복잡한 연쇄 체크
/// </summary>
private bool CheckExceptionB(Enums.PlayerType[,] board, int row, int col, List<OpenThreeInfo> openThrees)
{
// 이 부분은 매우 복잡한 렌주 규칙 9.3 b항을 구현해야 합니다.
// 기본적인 구현만 제공하며, 필요에 따라 확장 가능합니다.
// 각 열린 3에 대해, 4를 만들 때 다른 쌍삼이 형성되는지 확인
foreach (var threeInfo in openThrees)
{
bool canFormFourWithoutChainDoubleThree = false;
foreach (var emptyPos in threeInfo.emptyPositions)
{
// 빈 위치에 돌을 놓았을 때
board[emptyPos.y, emptyPos.x] = Black;
// 다른 쌍삼이 형성되는지 확인 (연쇄 체크)
bool formsOtherDoubleThree = false;
// 다른 모든 빈 위치에 대해 쌍삼 체크
for (int r = 0; r < BoardSize; r++)
{
for (int c = 0; c < BoardSize; c++)
{
if (board[r, c] == Space)
{
// 임시로 돌 배치하여 쌍삼 체크
board[r, c] = Black;
bool isDoubleThree = CheckSimpleDoubleThree(board, r, c);
board[r, c] = Space;
if (isDoubleThree)
{
formsOtherDoubleThree = true;
break;
}
}
}
if (formsOtherDoubleThree) break;
}
// 원래 상태로 복원
board[emptyPos.y, emptyPos.x] = Space;
// 연쇄 쌍삼이 형성되지 않으면 예외 조건 만족
if (!formsOtherDoubleThree)
{
canFormFourWithoutChainDoubleThree = true;
break;
}
}
// 하나의 삼이라도 연쇄 쌍삼 없이 4를 만들 수 있으면 예외 조건 만족
if (canFormFourWithoutChainDoubleThree)
{
return true;
}
}
return false;
}
/// <summary>
/// 단순 쌍삼 체크 (연쇄 검사용, 재귀 호출 방지)
/// </summary>
private bool CheckSimpleDoubleThree(Enums.PlayerType[,] board, int row, int col)
{
int openThreeCount = 0;
// 4개의 방향 쌍에 대해 검사
for (int i = 0; i < 4; i++)
{
int dir1 = DirectionPairs[i, 0];
int dir2 = DirectionPairs[i, 1];
// 간단한 열린 3 체크
if (CheckSimpleOpenThree(board, row, col, dir1, dir2))
{
openThreeCount++;
if (openThreeCount >= 2)
{
return true;
}
}
}
return false;
}
/// <summary>
/// 단순 열린 3 체크 (연쇄 검사용)
/// </summary>
private bool CheckSimpleOpenThree(Enums.PlayerType[,] board, int row, int col, int dir1, int dir2)
{
Enums.PlayerType[] linePattern = ExtractLinePattern(board, row, col, dir1, dir2);
int centerIndex = 5;
// 연속된 열린 3 패턴 체크
for (int start = centerIndex - 2; start <= centerIndex; start++)
{
if (start < 0 || start + 2 >= linePattern.Length)
{
continue;
}
bool isConsecutiveThree = true;
for (int i = 0; i < 3; i++)
{
if (linePattern[start + i] != Black)
{
isConsecutiveThree = false;
break;
}
}
if (isConsecutiveThree)
{
bool isLeftOpen = (start - 1 >= 0) && (linePattern[start - 1] == Space);
bool isRightOpen = (start + 3 < linePattern.Length) && (linePattern[start + 3] == Space);
if (isLeftOpen && isRightOpen)
{
return true;
}
}
}
// 한 칸 떨어진 열린 3 패턴 체크 (간단 구현)
for (int start = centerIndex - 3; start <= centerIndex; start++)
{
if (start < 0 || start + 3 >= linePattern.Length)
{
continue;
}
int stoneCount = 0;
int gapCount = 0;
for (int i = 0; i < 4; i++)
{
if (linePattern[start + i] == Black)
{
stoneCount++;
}
else if (linePattern[start + i] == Space)
{
gapCount++;
}
else
{
stoneCount = 0;
break;
}
}
if (stoneCount == 3 && gapCount == 1)
{
return true;
}
}
return false;
}
/// <summary>
/// 쌍사 여부를 확인합니다 (예외 처리용)
/// </summary>
private bool CheckDoubleFour(Enums.PlayerType[,] board, int row, int col)
{
int fourCount = 0;
// 4개의 방향 쌍에 대해 검사
for (int i = 0; i < 4; i++)
{
int dir1 = DirectionPairs[i, 0];
int dir2 = DirectionPairs[i, 1];
if (CheckFourInDirection(board, row, col, dir1, dir2))
{
fourCount++;
if (fourCount >= 2)
{
return true;
}
}
}
return false;
}
/// <summary>
/// 특정 방향에서 4가 형성되는지 확인합니다.
/// </summary>
private bool CheckFourInDirection(Enums.PlayerType[,] board, int row, int col, int dir1, int dir2)
{
Enums.PlayerType[] linePattern = ExtractLinePattern(board, row, col, dir1, dir2);
int centerIndex = 5;
// 윈도우 슬라이딩으로 연속된 4를 검사
for (int start = 0; start <= 7; start++)
{
// 현재 위치가 이 윈도우에 포함되는지 확인
bool currentPositionInWindow = (start <= centerIndex && centerIndex < start + 4);
if (!currentPositionInWindow) continue;
// 윈도우 내의 돌 개수 세기
int stoneCount = 0;
for (int i = 0; i < 4; i++)
{
if (linePattern[start + i] == Black)
{
stoneCount++;
}
}
// 4개의 돌이 있으면 4로 판정
if (stoneCount == 4)
{
return true;
}
}
return false;
}
}

View File

@ -1,11 +1,14 @@
using System.Collections.Generic;
using System.Text;
using UnityEngine;
public class RenjuForbiddenMoveDetector
public class RenjuForbiddenMoveDetector : ForbiddenDetectorBase
{
// 렌주 룰 금수 감지기 생성
private RenjuRuleChecker _ruleChecker = new RenjuRuleChecker();
private RenjuOverlineDetector _overlineDetactor = new();
private RenjuDoubleFourDetector _doubleFourDetactor = new();
private RenjuDoubleThreeDetector _doubleThreeDetector = new();
/// <summary>
/// 렌주 룰로 금수 리스트를 반환하는 함수
@ -14,6 +17,120 @@ public class RenjuForbiddenMoveDetector
/// <returns>금수 좌표를 담은 리스트</returns>
public List<Vector2Int> RenjuForbiddenMove(Enums.PlayerType[,] board)
{
return _ruleChecker.GetForbiddenMoves(board);
var forbiddenCount = 0;
List<Vector2Int> forbiddenMoves = new();
List<Vector2Int> tempForbiddenMoves = new();
for (int row = 0; row < BoardSize; row++)
{
for (int col = 0; col < BoardSize; col++)
{
// ** 비어 있지 않으면 검사할 필요 없음 **
if (!IsEmptyPosition(board, row, col)) continue;
// 장목 검사
if (_overlineDetactor.IsOverline(board, row, col))
{
forbiddenCount++;
Debug.Log("장목 금수 좌표 X축 : " + row + ", Y축 : " + col);
forbiddenMoves.Add(new Vector2Int(row, col));
continue;
}
// 4-4 검사
if (_doubleFourDetactor.IsDoubleFour(board, row, col))
{
forbiddenCount++;
Debug.Log("사사 금수 좌표 X축 : " + row + ", Y축 : " + col);
forbiddenMoves.Add(new Vector2Int(row, col));
continue;
}
if(forbiddenCount > 0) continue;
// 3-3 검사
if (_doubleThreeDetector.IsDoubleThree(board, row, col))
{
tempForbiddenMoves.Add(new Vector2Int(row, col));
// if (!SimulateDoubleFour(tempBoard))
// {
// Debug.Log("삼삼 금수 좌표 X축 : " + row + ", Y축 : " + col);
// forbiddenMoves.Add(new Vector2Int(row, col));
// }
}
}
}
foreach (var pos in tempForbiddenMoves)
{
board[pos.x, pos.y] = Black;
if (!SimulateDoubleFour(board)&& !SimulateOverline(board))
{
Debug.Log("X: "+pos.x + "Y: "+ pos.y);
forbiddenMoves.Add(new Vector2Int(pos.x, pos.y));
}
}
Debug.Log(DebugBoard(board));
return forbiddenMoves;
}
}
private bool SimulateDoubleFour(Enums.PlayerType[,] board)
{
for (int row = 0; row < BoardSize; row++)
{
for (int col = 0; col < BoardSize; col++)
{
if (_doubleFourDetactor.IsDoubleFour(board, row, col))
return true;
}
}
return false;
}
private bool SimulateOverline(Enums.PlayerType[,] board)
{
for (int row = 0; row < BoardSize; row++)
{
for (int col = 0; col < BoardSize; col++)
{
if (_overlineDetactor.IsOverline(board, row, col))
{
return true;
}
}
}
return false;
}
/// <summary>
/// 보드 상태를 시각적으로 출력하는 디버깅 함수
/// </summary>
/// <param name="board">현재 보드 상태</param>
/// <returns>보드의 시각적 표현 문자열</returns>
private string DebugBoard(Enums.PlayerType[,] board)
{
StringBuilder sb = new StringBuilder();
for (int row = 0; row < BoardSize; row++)
{
for (int col = 0; col < BoardSize; col++)
{
sb.Append(board[row, col] switch
{
Enums.PlayerType.None => "□",
Enums.PlayerType.PlayerA => "●",
Enums.PlayerType.PlayerB => "○",
_ => "?"
});
}
sb.AppendLine(); // 줄바꿈 추가
}
return sb.ToString();
}
}

View File

@ -1,3 +1,11 @@
fileFormatVersion: 2
guid: 8618553c3e244abdb040fb7378dd4b65
timeCreated: 1741939566
fileFormatVersion: 2
guid: 4440d621b56f2ce459d819497911892b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,51 +0,0 @@
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 렌주 규칙의 모든 금수 규칙(3-3, 4-4, 장목)을 검사하는 통합 클래스
/// </summary>
public class RenjuRuleChecker: ForbiddenDetectorBase
{
private RenjuOverlineDetector _overlineDetactor = new();
private RenjuDoubleFourDetector _doubleFourDetactor = new();
private RenjuDoubleThreeDetector _doubleThreeDetector = new();
public List<Vector2Int> GetForbiddenMoves(Enums.PlayerType[,] board)
{
List<Vector2Int> forbiddenMoves = new();
for (int row = 0; row < BoardSize; row++)
{
for (int col = 0; col < BoardSize; col++)
{
// ** 비어 있지 않으면 검사할 필요 없음 **
if (!IsEmptyPosition(board, row, col)) continue;
// 장목 검사
if (_overlineDetactor.IsOverline(board, row, col))
{
Debug.Log("장목 금수 좌표 X축 : " + row + ", Y축 : " + col);
forbiddenMoves.Add(new Vector2Int(row, col));
continue;
}
// 4-4 검사
if (_doubleFourDetactor.IsDoubleFour(board, row, col))
{
Debug.Log("사사 금수 좌표 X축 : " + row + ", Y축 : " + col);
forbiddenMoves.Add(new Vector2Int(row, col));
continue;
}
// 3-3 검사
if (_doubleThreeDetector.IsDoubleThree(board, row, col))
{
Debug.Log("삼삼 금수 좌표 X축 : " + row + ", Y축 : " + col);
forbiddenMoves.Add(new Vector2Int(row, col));
}
}
}
return forbiddenMoves;
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 083e8b9070ed407b8744d4cacd0d53dc
timeCreated: 1742256498

View File

@ -1,30 +1,39 @@
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class ReplayController : MonoBehaviour
{
void Awake()
[SerializeField] private TMP_Text playerANicknameText;
[SerializeField] private TMP_Text playerBNicknameText;
[SerializeField] private Image playerAImage;
[SerializeField] private Image playerBImage;
void Start()
{
//TODO: 리플레이매니저 데이터로 화면 초기화
InitReplayUI();
//TODO: 프로필 이미지 불러오기
}
public void OnclickExitButton()
{
//TODO: 메인씬으로 다시 넘어갈 때 호출해야하는 함수 등등이 있을지....
SceneManager.LoadScene("Main-Jay");
}
public void OnclickFirstButton()
{
ReplayManager.Instance.ReplayFirst();
}
public void OnclickUndoButton()
{
Move targetMove = ReplayManager.Instance.PopMove();
Move targetMove = ReplayManager.Instance.PopPlacedMove();
if (targetMove != null)
{
GameManager.Instance.ReplayUndo(targetMove);
ReplayManager.Instance.ReplayUndo(targetMove);
}
}
@ -33,14 +42,19 @@ public class ReplayController : MonoBehaviour
Move nextMove = ReplayManager.Instance.GetNextMove();
if (nextMove != null)
{
GameManager.Instance.ReplayNext(nextMove);
ReplayManager.Instance.ReplayNext(nextMove);
}
}
public void OnClickFinishButton()
{
ReplayManager.Instance.ReplayFinish();
}
public void InitReplayUI()
{
playerANicknameText.text = ReplayManager.Instance.GetPlayerANickname();
playerBNicknameText.text = ReplayManager.Instance.GetPlayerBNickname();
}
}

View File

@ -42,6 +42,8 @@ public class ReplayManager : Singleton<ReplayManager>
private Stack<Move> _undoStack;
private int _moveIndex;
private GameLogic _gameLogic;
private StoneController _stoneController;
public void InitReplayBoard(ReplayRecord replayRecord)
{
@ -70,7 +72,7 @@ public class ReplayManager : Singleton<ReplayManager>
_placedStoneStack.Push(storedMove);
}
public Move PopMove()
public Move PopPlacedMove()
{
if (_placedStoneStack.Count == 0)
return null;
@ -78,7 +80,7 @@ public class ReplayManager : Singleton<ReplayManager>
return move;
}
public void PushUndoMove(Move storedMove)
private void PushUndoMove(Move storedMove)
{
_undoStack.Push(storedMove);
}
@ -165,13 +167,14 @@ public class ReplayManager : Singleton<ReplayManager>
return records;
}
// 최대 저장 개수만큼 기보데이터가 저장, 유지되도록 하는 함수
private void RecordCountChecker()
{
try
{
string path = Application.persistentDataPath;
var files = Directory.GetFiles(path, "*.json");
if (files.Length <= 10)
if (files.Length <= Constants.ReplayMaxRecordSize)
return;
File.Delete(files[0]);
RecordCountChecker();
@ -182,36 +185,74 @@ public class ReplayManager : Singleton<ReplayManager>
}
}
// 기보 데이터 하나를 선택해서 매니저에 저장(씬 이동 후 데이터 활용을 위해)
public void SetReplayData(ReplayRecord replayRecord)
{
_selectedReplayRecord = replayRecord;
}
#region ReplayController에서
public void ReplayNext(Move nextMove)
{
// 보드에 돌을 설정하기 위해 gameLogic의 SetNewBoardValue호출
if (nextMove.stoneType.Equals(Enums.StoneType.Black.ToString()))
{
_gameLogic.SetNewBoardValue(Enums.PlayerType.PlayerA, nextMove.columnIndex, nextMove.rowIndex);
}
else if (nextMove.stoneType.Equals(Enums.StoneType.White.ToString()))
{
_gameLogic.SetNewBoardValue(Enums.PlayerType.PlayerB, nextMove.columnIndex, nextMove.rowIndex);
}
// 돌이 놓인 내역을 ReplayManager에도 반영
ReplayManager.Instance.PushMove(nextMove);
}
public void ReplayUndo(Move targetMove)
{
ReplayManager.Instance.PushUndoMove(targetMove);
_gameLogic.RemoveStone(targetMove.columnIndex, targetMove.rowIndex);
}
public void ReplayFirst()
{
while (_placedStoneStack.Count > 0)
{
ReplayUndo(_placedStoneStack.Pop());
}
}
public void ReplayFinish()
{
while(_placedStoneStack.Count < _selectedReplayRecord.moves.Count)
{
ReplayNext(GetNextMove());
}
}
public string GetPlayerANickname()
{
return _selectedReplayRecord.playerA;
}
public string GetPlayerBNickname()
{
return _selectedReplayRecord.playerB;
}
#endregion
protected override void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
if (scene.name == "Replay")
{
if (_selectedReplayRecord != null)
{
InitReplayBoard(_selectedReplayRecord);
}
// TODO: 데이터 잘못 가져왔을 때 어떻게 처리할지 고민하기
// Main으로 강제 전환 ?
InitReplayBoard(_selectedReplayRecord);
//게임 매니저에서 가져온 코드입니다.
_stoneController = GameObject.FindObjectOfType<StoneController>();
_stoneController.InitStones();
_gameLogic = new GameLogic(_stoneController, Enums.GameType.Replay);
}
}
#region for tests
public void OnClickSaveButton(string winnerPlayerType = "PlayerA")
{
if(winnerPlayerType == Enums.PlayerType.PlayerA.ToString())
SaveReplayData(Enums.PlayerType.PlayerA);
else
SaveReplayData(Enums.PlayerType.PlayerB);
}
#endregion
}

View File

@ -6,9 +6,8 @@ using UnityEngine.UI;
public class ShopItemController : MonoBehaviour
{
ShopItem _shopItem;
public Sprite[] profileSprites;
AdManager _adManager;
public void Init(ShopItem shopItem)
{
@ -16,20 +15,35 @@ public class ShopItemController : MonoBehaviour
var itemImage = GetComponentsInChildren<Image>()[1];
var itemText = GetComponentsInChildren<TextMeshProUGUI>();
itemText[0].text = this._shopItem.Name;
itemText[1].text = this._shopItem.Price;
itemText[0].text = this._shopItem.name;
itemText[1].text = this._shopItem.price+"원";
}
public void OnClickShopItem()
{
if (_shopItem.Price == "광고")
var shopPanel = GetComponentInParent<CanvasGroup>(); //코인 구매시 상점 패널의 캔버스 그룹 raycast를 비활성화하여 중복클릭 방지.
if (_shopItem.price == 0)
{
//보상형 전면 광고 로드
FindObjectOfType<AdManager>().ShowRewardedInterstitialAd(); //Todo FindOf 함수 수정
_adManager = GetComponent<AdManager>();
_adManager.ShowRewardedInterstitialAd(shopPanel);
}
else
{
//todo 가격별로 구매하기
NetworkManager.Instance.PurchaseCoins(
_shopItem.price, // 충전할 코인 개수
_shopItem.name, // 결제 ID
"GooglePay", // 결제 방식 (GooglePay, PayPal 등)
(coins) => {
GameManager.Instance.panelManager.UpdateCoinsPanelUI(coins,shopPanel);
},
() => {
Debug.LogError("결제 후 코인 충전 실패");
}
);
}
}
}

View File

@ -0,0 +1,119 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using TMPro;
public class LeaderBoardController : MonoBehaviour
{
[SerializeField] private GameObject rankingPrefab; // Ranking 프리팹을 참조 (Horizontal Layout)
[SerializeField] private Transform content; // Vertical Layout Group
[SerializeField] private GameObject MainPanel;
[SerializeField] private GameObject leaderboardPanel;
[SerializeField] private Scrollbar verticalScrollbar;// LeaderboardPanel 참조
private bool isLeaderboardLoaded = false;
private void Start()
{
OnClickLeaderboardButton();
}
public void OnClickLeaderboardButton()
{
if (isLeaderboardLoaded) return; // 이미 리더보드가 로드되었으면 중복 호출 방지
leaderboardPanel.SetActive(true);
StartCoroutine(GetLeaderboardData());
isLeaderboardLoaded = true;
}
private IEnumerator GetLeaderboardData()
{
string url = Constants.ServerURL + "/leaderboard/"; // 서버의 리더보드 데이터 URL
UnityWebRequest www = UnityWebRequest.Get(url); // GET 요청으로 데이터 받기
yield return www.SendWebRequest(); // 요청 전송 대기
// 요청이 실패했을 때
if (www.result == UnityWebRequest.Result.ConnectionError || www.result == UnityWebRequest.Result.ProtocolError)
{
Debug.LogError("Error: " + www.error);
}
else
{
// 성공적으로 데이터를 받아온 경우
string jsonResponse = www.downloadHandler.text; // 응답으로 받은 JSON 데이터
// JSON을 ScoreInfo 리스트로 파싱
ScoreListWrapper wrapper = JsonUtility.FromJson<ScoreListWrapper>(jsonResponse);
List<ScoreInfo> leaderboardItems = wrapper.leaderboardDatas;
// Show 메서드를 통해 데이터를 표시
Show(leaderboardItems);
}
}
public void Show(List<ScoreInfo> leaderboardItems)
{
// 기존 셀 삭제 (리스트가 갱신될 때마다)
foreach (Transform child in content)
{
Destroy(child.gameObject);
}
// 받은 데이터로 셀 생성
foreach (var item in leaderboardItems)
{
CreateCell(item); // 셀 생성
}
}
private void CreateCell(ScoreInfo item)
{
// Ranking 프리팹을 content의 자식으로 생성
var scoreCellObj = Instantiate(rankingPrefab, content);
// Ranking 프리팹에 포함된 ScoreCellController를 찾아서 설정
var scoreCellController = scoreCellObj.GetComponent<ScoreCellController>();
if (scoreCellController != null)
{
// 각 항목에 대한 UI 설정
scoreCellController.SetCellInfo(item); // ScoreInfo로 셀 정보 설정
}
else
{
Debug.LogError("ScoreCellController가 Ranking 프리팹에 없습니다.");
}
}
// BackButton 클릭 시 호출되는 메소드
public void OnBackButtonClicked()
{
leaderboardPanel.SetActive(false); // LeaderboardPanel 숨기기
MainPanel.SetActive(true); // SignInPanel 보이게 하기
}
private List<ScoreInfo> LoadOfflineLeaderboard()
{
List<ScoreInfo> leaderboard = new List<ScoreInfo>();
// 오프라인 데이터 로딩 (PlayerPrefs 사용 예시)
string savedData = PlayerPrefs.GetString("OfflineLeaderboard", string.Empty);
if (!string.IsNullOrEmpty(savedData))
{
// 저장된 JSON 데이터를 파싱하여 리더보드 리스트로 변환
leaderboard = JsonUtility.FromJson<ScoreListWrapper>(savedData).leaderboardDatas;
}
return leaderboard;
}
private void OnDisable()
{
Destroy(gameObject); // 자기 자신을 삭제
}
}

View File

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

View File

@ -19,7 +19,6 @@ public class PanelManager : MonoBehaviour
private void Awake()
{
SetCanvas();
// Prefabs 폴더에서 모든 패널 프리팹 로드
GameObject[] prefabs = Resources.LoadAll<GameObject>("Prefabs/Panels");
@ -30,8 +29,8 @@ public class PanelManager : MonoBehaviour
Debug.Log($"총 {panelPrefabs.Count}개의 패널이 로드됨.");
}
private void SetCanvas()
void Start()
{
if (_canvas == null)
{
@ -119,12 +118,17 @@ public class PanelManager : MonoBehaviour
}
}
public void OpenRankingPanel(List<RankingItem> rankingItems)
public void OpenRankingPanel()
{
if (_canvas != null)
{
var settingsPanelObject = GetPanel("Ranking Panel");
settingsPanelObject.GetComponent<RankingPanelController>().Show(rankingItems);
var settingsPanelObject = GetPanel("LeaderboardPanel");
var leaderboardController = settingsPanelObject.GetComponent<LeaderBoardController>();
if (leaderboardController != null)
{
leaderboardController.OnClickLeaderboardButton(); // 이 메서드를 호출하여 데이터를 로드하고 Show()가 실행되도록 합니다.
}
}
}
@ -142,7 +146,7 @@ public class PanelManager : MonoBehaviour
if (_canvas != null)
{
var replayPanelObject = GetPanel("Replay Panel");
replayPanelObject.GetComponent<ReplayPanelController>().Show();
replayPanelObject.GetComponent<ReplayPanelItemsController>().Show();
}
}
@ -156,37 +160,18 @@ public class PanelManager : MonoBehaviour
return;
}
//랭킹 패널 생성
public void OnRankingPanelClick()
{
List<RankingItem> rankingItems = new List<RankingItem>(); //테스트 데이터 리스트 생성
for (int i = 0; i < 30; i++)
{
RankingItem rankingItem = new RankingItem
{
ProfileSpriteIndex = Random.Range(0, 2),
Name = i.ToString(),
WinRate = Random.Range(0f, 1f)
};
rankingItems.Add(rankingItem);
}
OpenRankingPanel(rankingItems);
}
//상점 패널 생성
public void OnShopPanelClick()
{
List<ShopItem> shopItems = new List<ShopItem>(); //테스트 데이터 리스트 생성
for (int i = 0; i < 10; i++)
List<ShopItem> shopItems = new List<ShopItem>(); //상점 데이터 리스트 생성
for (int i = 0; i < 5; i++)
{
if (i == 0) //광고 항목
{
ShopItem shopItem = new ShopItem
{
Name = "코인10개",
Price = "광고"
name = "광고) 코인500개 ",
price = 0
};
shopItems.Add(shopItem);
}
@ -194,21 +179,21 @@ public class PanelManager : MonoBehaviour
{
ShopItem shopItem = new ShopItem
{
Name = "코인"+i+"개",
Price = (i * 1000)+ "원"
name = i*1000+"개 ",
price = i * 1000
};
shopItems.Add(shopItem);
}
}
OpenShopPanel(shopItems);
GameManager.Instance.panelManager.OpenShopPanel(shopItems);
}
public void UpdateCoinsPanelUI(int coinsChanged)
//코인 패널 코인 갱신
public void UpdateCoinsPanelUI(int coinsChanged, CanvasGroup shopPanel)
{
if (_coinsPanel != null)
{
_coinsPanel.AddCoins(coinsChanged, () =>
_coinsPanel.AddCoins(coinsChanged, shopPanel, () =>
{
});

View File

@ -2,7 +2,7 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ReplayPanelController : ScrollPanelController
public class ReplayPanelItemsController : ScrollPanelController
{
private string _myNickname;
@ -33,4 +33,4 @@ public class ReplayPanelController : ScrollPanelController
{
base.Show();
}
}
}

View File

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

View File

@ -8,10 +8,10 @@ public class CoinUITestScript : MonoBehaviour
public void OnClickAddCoin()
{
coinsPanelController.AddCoins(100, () =>
{
Debug.Log("Add coin 후 동작");
});
// coinsPanelController.AddCoins(100, () =>
// {
// Debug.Log("Add coin 후 동작");
// });
}
public void OnClickRemoveCoin()

View File

@ -306,7 +306,11 @@ PrefabInstance:
m_Modifications:
- target: {fileID: 626368541760032086, guid: 65aac0e22fe25aa42b9cf7df776a854d, type: 3}
propertyPath: m_Name
value: '[Canvas] Game UI'
value: Canvas
objectReference: {fileID: 0}
- target: {fileID: 1250546304786973426, guid: 65aac0e22fe25aa42b9cf7df776a854d, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6113787613246818512, guid: 65aac0e22fe25aa42b9cf7df776a854d, type: 3}
propertyPath: m_Pivot.x
@ -21706,6 +21710,7 @@ GameObject:
m_Component:
- component: {fileID: 1260188604546925059}
- component: {fileID: 5677811662396631252}
- component: {fileID: 5677811662396631253}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged
@ -33884,10 +33889,104 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 35a4c6d5d3a97b444b968e68ec8bb9f7, type: 3}
m_Name:
m_EditorClassIdentifier:
signinPanel: {fileID: 0}
signupPanel: {fileID: 0}
canvas: {fileID: 0}
profileSprites: []
panelManagerPrefab: {fileID: 3475740041361426276, guid: 085ca07ca90c92545b2594bd13412701, type: 3}
audioManagerPrefab: {fileID: 2946408323859178723, guid: e829818dce39a5d4383e061111bed871, type: 3}
--- !u!82 &5677811662396631253
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3626119060319719757}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!61 &5684907091474785187
BoxCollider2D:
m_ObjectHideFlags: 0

View File

@ -17,4 +17,7 @@ EditorBuildSettings:
- enabled: 1
path: Assets/LYC/GameCopyLYC.unity
guid: c7eedd59cc78a7648a2168fd25540b88
- enabled: 1
path: Assets/Scenes/Replay.unity
guid: 393dbf55b04641847ae9b882a54856af
m_configObjects: {}