Merge branch 'main' into DO-47-승패-무승부-기보씬에-적용
This commit is contained in:
commit
5f0d90c2e9
@ -1,10 +1,26 @@
|
|||||||
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using TMPro;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
using DG.Tweening;
|
||||||
|
|
||||||
public class GameUIController : MonoBehaviour
|
public class GameUIController : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
[SerializeField] private GameObject retryButton;
|
||||||
|
[SerializeField] private TMP_Text playerANameText;
|
||||||
|
[SerializeField] private TMP_Text playerBNameText;
|
||||||
|
[SerializeField] private Image indicatorA;
|
||||||
|
[SerializeField] private Image indicatorB;
|
||||||
|
[SerializeField] private Image profileImageA;
|
||||||
|
[SerializeField] private Image profileImageB;
|
||||||
|
[SerializeField] private Sprite[] profileImageSprites; //0. 기본 드래곤 1. 기본 호랑이 2.아이보리 드래곤 3. 아이보리 호랑이
|
||||||
|
[SerializeField] private Sprite[] indicatorSprites; //0. active 1. inactive
|
||||||
|
|
||||||
|
private Sprite _originalSpriteA;
|
||||||
|
private Sprite _originalSpriteB;
|
||||||
|
|
||||||
public void OnClickConfirmButton()
|
public void OnClickConfirmButton()
|
||||||
{
|
{
|
||||||
GameManager.Instance.OnClickConfirmButton();
|
GameManager.Instance.OnClickConfirmButton();
|
||||||
@ -14,4 +30,78 @@ public class GameUIController : MonoBehaviour
|
|||||||
{
|
{
|
||||||
GameManager.Instance.RetryGame();
|
GameManager.Instance.RetryGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OnClickSurrenderButton()
|
||||||
|
{
|
||||||
|
GameManager.Instance.panelManager.OpenConfirmPanel("항복 하시겠습니까?", () =>
|
||||||
|
{
|
||||||
|
//TODO: 서버에 항복 전달 및 기타 등등
|
||||||
|
|
||||||
|
GameManager.Instance.ChangeToMainScene();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClickSettingsButton()
|
||||||
|
{
|
||||||
|
GameManager.Instance.panelManager.OpenSettingsPanel();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void InitUI()
|
||||||
|
{
|
||||||
|
if (UserManager.Instance == null) return;
|
||||||
|
retryButton.SetActive(false);
|
||||||
|
playerANameText.text = UserManager.Instance.Nickname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void InitPlayersName(string playerNameA, string playerNameB)
|
||||||
|
{
|
||||||
|
playerANameText.text = playerNameA;
|
||||||
|
playerBNameText.text = playerNameB;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void InitProfileImages(int profileImageIndexA, int profileImageIndexB)
|
||||||
|
{
|
||||||
|
profileImageA.sprite = profileImageIndexA == 0 ? profileImageSprites[0] : profileImageSprites[profileImageIndexA];
|
||||||
|
profileImageB.sprite = profileImageIndexB == 0 ? profileImageSprites[0] : profileImageSprites[profileImageIndexB];
|
||||||
|
_originalSpriteA = profileImageA.sprite;
|
||||||
|
_originalSpriteB = profileImageB.sprite;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetTurnIndicator(bool isFirstPlayer)
|
||||||
|
{
|
||||||
|
if (isFirstPlayer)
|
||||||
|
{
|
||||||
|
SetPlayerTurn(profileImageA, _originalSpriteA);
|
||||||
|
profileImageB.sprite = _originalSpriteB;
|
||||||
|
indicatorA.sprite = indicatorSprites[0];
|
||||||
|
indicatorB.sprite = indicatorSprites[1];
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetPlayerTurn(profileImageB, _originalSpriteB);
|
||||||
|
profileImageA.sprite = _originalSpriteA;
|
||||||
|
indicatorA.sprite = indicatorSprites[1];
|
||||||
|
indicatorB.sprite = indicatorSprites[0];
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetPlayerTurn(Image profileImage, Sprite _originalSprite)
|
||||||
|
{
|
||||||
|
if (_originalSprite == profileImageSprites[0])
|
||||||
|
{
|
||||||
|
profileImage.sprite = profileImageSprites[2];
|
||||||
|
}
|
||||||
|
else if (_originalSprite == profileImageSprites[1])
|
||||||
|
{
|
||||||
|
profileImage.sprite = profileImageSprites[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
profileImage.transform.DOScale(1.5f, 0.3f).SetEase(Ease.InBack).OnComplete(() =>
|
||||||
|
{
|
||||||
|
profileImage.transform.DOScale(1f, 0.3f).SetEase(Ease.OutBack);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: d652b2a2f29c0c541983b529f66a5169
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: e61de5ff6b71b2e45b0878ccd8c8033a
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,818 +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 &684932257
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 684932260}
|
|
||||||
- component: {fileID: 684932259}
|
|
||||||
- component: {fileID: 684932258}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: EventSystem
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!114 &684932258
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 684932257}
|
|
||||||
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 &684932259
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 684932257}
|
|
||||||
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 &684932260
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 684932257}
|
|
||||||
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 &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!1 &1118625357
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 1118625358}
|
|
||||||
- component: {fileID: 1118625360}
|
|
||||||
- component: {fileID: 1118625359}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: GameManager
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &1118625358
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1118625357}
|
|
||||||
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!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!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: 1603784405}
|
|
||||||
- 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: 14
|
|
||||||
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!114 &1603784405
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1603784401}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: a98355720bed2234fb32d55fc1b0cce6, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
widthUnit: 15
|
|
||||||
--- !u!1001 &2284388239269102583
|
|
||||||
PrefabInstance:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Modification:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TransformParent: {fileID: 0}
|
|
||||||
m_Modifications:
|
|
||||||
- target: {fileID: 4420653492898845705, guid: 37c097f76fd13ca4fafdf2fe352b7f46, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4420653492898845705, guid: 37c097f76fd13ca4fafdf2fe352b7f46, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.y
|
|
||||||
value: 1.25
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4420653492898845705, guid: 37c097f76fd13ca4fafdf2fe352b7f46, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4420653492898845705, guid: 37c097f76fd13ca4fafdf2fe352b7f46, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.w
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4420653492898845705, guid: 37c097f76fd13ca4fafdf2fe352b7f46, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4420653492898845705, guid: 37c097f76fd13ca4fafdf2fe352b7f46, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4420653492898845705, guid: 37c097f76fd13ca4fafdf2fe352b7f46, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4420653492898845705, guid: 37c097f76fd13ca4fafdf2fe352b7f46, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4420653492898845705, guid: 37c097f76fd13ca4fafdf2fe352b7f46, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4420653492898845705, guid: 37c097f76fd13ca4fafdf2fe352b7f46, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4920236250940775331, guid: 37c097f76fd13ca4fafdf2fe352b7f46, type: 3}
|
|
||||||
propertyPath: m_Name
|
|
||||||
value: omok-board_15x15
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 7155909258766834886, guid: b1a31da84076a534cae7cb20a7913a93, type: 3}
|
|
||||||
propertyPath: m_IsActive
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
m_RemovedComponents: []
|
|
||||||
m_RemovedGameObjects: []
|
|
||||||
m_AddedGameObjects: []
|
|
||||||
m_AddedComponents: []
|
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: 37c097f76fd13ca4fafdf2fe352b7f46, type: 3}
|
|
||||||
--- !u!1001 &2620496338038271331
|
|
||||||
PrefabInstance:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Modification:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TransformParent: {fileID: 8628819205361144822}
|
|
||||||
m_Modifications:
|
|
||||||
- target: {fileID: 3938717138838971436, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_Name
|
|
||||||
value: GameUIController
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_Pivot.x
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_Pivot.y
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_AnchorMax.x
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_AnchorMax.y
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_AnchorMin.x
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_AnchorMin.y
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.x
|
|
||||||
value: 100
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.y
|
|
||||||
value: 100
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.w
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
m_RemovedComponents: []
|
|
||||||
m_RemovedGameObjects: []
|
|
||||||
m_AddedGameObjects: []
|
|
||||||
m_AddedComponents: []
|
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
--- !u!1 &3802363964775203493
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 8628819205361144822}
|
|
||||||
- component: {fileID: 4321175121778496841}
|
|
||||||
- component: {fileID: 6859121610019464104}
|
|
||||||
- component: {fileID: 8945807720517543089}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Canvas
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!223 &4321175121778496841
|
|
||||||
Canvas:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3802363964775203493}
|
|
||||||
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!1001 &5267987383662235819
|
|
||||||
PrefabInstance:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Modification:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TransformParent: {fileID: 0}
|
|
||||||
m_Modifications:
|
|
||||||
- target: {fileID: 1162697407390023879, guid: ef4aae2728a68064d92cdfc78d599a38, type: 3}
|
|
||||||
propertyPath: m_Name
|
|
||||||
value: StoneController
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2953084326724862768, guid: ef4aae2728a68064d92cdfc78d599a38, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2953084326724862768, guid: ef4aae2728a68064d92cdfc78d599a38, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2953084326724862768, guid: ef4aae2728a68064d92cdfc78d599a38, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2953084326724862768, guid: ef4aae2728a68064d92cdfc78d599a38, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.w
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2953084326724862768, guid: ef4aae2728a68064d92cdfc78d599a38, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2953084326724862768, guid: ef4aae2728a68064d92cdfc78d599a38, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2953084326724862768, guid: ef4aae2728a68064d92cdfc78d599a38, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2953084326724862768, guid: ef4aae2728a68064d92cdfc78d599a38, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2953084326724862768, guid: ef4aae2728a68064d92cdfc78d599a38, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2953084326724862768, guid: ef4aae2728a68064d92cdfc78d599a38, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
m_RemovedComponents: []
|
|
||||||
m_RemovedGameObjects: []
|
|
||||||
m_AddedGameObjects: []
|
|
||||||
m_AddedComponents: []
|
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: ef4aae2728a68064d92cdfc78d599a38, type: 3}
|
|
||||||
--- !u!114 &6859121610019464104
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3802363964775203493}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_UiScaleMode: 1
|
|
||||||
m_ReferencePixelsPerUnit: 100
|
|
||||||
m_ScaleFactor: 1
|
|
||||||
m_ReferenceResolution: {x: 1080, y: 1920}
|
|
||||||
m_ScreenMatchMode: 0
|
|
||||||
m_MatchWidthOrHeight: 0
|
|
||||||
m_PhysicalUnit: 3
|
|
||||||
m_FallbackScreenDPI: 96
|
|
||||||
m_DefaultSpriteDPI: 96
|
|
||||||
m_DynamicPixelsPerUnit: 1
|
|
||||||
m_PresetInfoIsWorld: 0
|
|
||||||
--- !u!224 &7932516842477400653 stripped
|
|
||||||
RectTransform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 5896972595945307833, guid: 0e9e25bc269a21e42b9ef6c91287f2ef, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 2620496338038271331}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!224 &8628819205361144822
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3802363964775203493}
|
|
||||||
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: 7932516842477400653}
|
|
||||||
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!114 &8945807720517543089
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3802363964775203493}
|
|
||||||
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!1660057539 &9223372036854775807
|
|
||||||
SceneRoots:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_Roots:
|
|
||||||
- {fileID: 1603784404}
|
|
||||||
- {fileID: 8628819205361144822}
|
|
||||||
- {fileID: 684932260}
|
|
||||||
- {fileID: 2284388239269102583}
|
|
||||||
- {fileID: 5267987383662235819}
|
|
||||||
- {fileID: 1118625358}
|
|
||||||
- {fileID: 820078855}
|
|
54563
Assets/LYC/GameLYC.unity
Normal file
54563
Assets/LYC/GameLYC.unity
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: c7eedd59cc78a7648a2168fd25540b88
|
guid: b8e3d5d18e544774eb144db419a327d2
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
@ -1713,7 +1713,7 @@ MonoBehaviour:
|
|||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_text: "\uD14C\uC2A4\uD2B8\uC0BC\uBC88"
|
m_text: "\uD638\uB7AD\uC774"
|
||||||
m_isRightToLeft: 0
|
m_isRightToLeft: 0
|
||||||
m_fontAsset: {fileID: 11400000, guid: 85a19688db53c77469fc4406b01045da, type: 2}
|
m_fontAsset: {fileID: 11400000, guid: 85a19688db53c77469fc4406b01045da, type: 2}
|
||||||
m_sharedMaterial: {fileID: -2477908578676791210, guid: 85a19688db53c77469fc4406b01045da, type: 2}
|
m_sharedMaterial: {fileID: -2477908578676791210, guid: 85a19688db53c77469fc4406b01045da, type: 2}
|
||||||
|
@ -350,7 +350,7 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0}
|
m_AnchorMin: {x: 0.5, y: 0}
|
||||||
m_AnchorMax: {x: 0.5, y: 1}
|
m_AnchorMax: {x: 0.5, y: 1}
|
||||||
m_AnchoredPosition: {x: -392, y: -5.683716}
|
m_AnchoredPosition: {x: -392, y: -0.86621094}
|
||||||
m_SizeDelta: {x: 784, y: 0}
|
m_SizeDelta: {x: 784, y: 0}
|
||||||
m_Pivot: {x: 0, y: 1}
|
m_Pivot: {x: 0, y: 1}
|
||||||
--- !u!114 &2389273839879143832
|
--- !u!114 &2389273839879143832
|
||||||
|
@ -120,7 +120,19 @@ MonoBehaviour:
|
|||||||
m_TargetGraphic: {fileID: 3806122116930050020}
|
m_TargetGraphic: {fileID: 3806122116930050020}
|
||||||
m_OnClick:
|
m_OnClick:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls:
|
||||||
|
- m_Target: {fileID: 3933575647777291622}
|
||||||
|
m_TargetAssemblyTypeName: GameUIController, Assembly-CSharp
|
||||||
|
m_MethodName: OnClickSurrenderButton
|
||||||
|
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 &626368541760032086
|
--- !u!1 &626368541760032086
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -395,6 +407,139 @@ MonoBehaviour:
|
|||||||
m_hasFontAssetChanged: 0
|
m_hasFontAssetChanged: 0
|
||||||
m_baseMaterial: {fileID: 0}
|
m_baseMaterial: {fileID: 0}
|
||||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
--- !u!1 &1812579611192138725
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3685916492953640732}
|
||||||
|
- component: {fileID: 2837002930647588383}
|
||||||
|
- component: {fileID: 7520396528988244836}
|
||||||
|
- component: {fileID: 4581847833490342559}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Settings Button
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &3685916492953640732
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1812579611192138725}
|
||||||
|
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: 2490009981694473494}
|
||||||
|
m_Father: {fileID: 4044003808430543235}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 1, y: 1}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: -50, y: -85}
|
||||||
|
m_SizeDelta: {x: 238, y: 150}
|
||||||
|
m_Pivot: {x: 1, y: 1}
|
||||||
|
--- !u!222 &2837002930647588383
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1812579611192138725}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &7520396528988244836
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1812579611192138725}
|
||||||
|
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.9607844, b: 0.8980393, 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: 05a670e614d7817429ee256ceb7efbe6, type: 3}
|
||||||
|
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 &4581847833490342559
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1812579611192138725}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Navigation:
|
||||||
|
m_Mode: 3
|
||||||
|
m_WrapAround: 0
|
||||||
|
m_SelectOnUp: {fileID: 0}
|
||||||
|
m_SelectOnDown: {fileID: 0}
|
||||||
|
m_SelectOnLeft: {fileID: 0}
|
||||||
|
m_SelectOnRight: {fileID: 0}
|
||||||
|
m_Transition: 2
|
||||||
|
m_Colors:
|
||||||
|
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_HighlightedColor: {r: 0.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: 21300000, guid: 1cc2af2fc6476554ca42fb2ddfd7727f, type: 3}
|
||||||
|
m_PressedSprite: {fileID: 21300000, guid: 1cc2af2fc6476554ca42fb2ddfd7727f, type: 3}
|
||||||
|
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: 7520396528988244836}
|
||||||
|
m_OnClick:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls:
|
||||||
|
- m_Target: {fileID: 3933575647777291622}
|
||||||
|
m_TargetAssemblyTypeName: GameUIController, Assembly-CSharp
|
||||||
|
m_MethodName: OnClickSettingsButton
|
||||||
|
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 &2180157736785062510
|
--- !u!1 &2180157736785062510
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -427,6 +572,7 @@ RectTransform:
|
|||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 4020956126151567600}
|
- {fileID: 4020956126151567600}
|
||||||
- {fileID: 3928015243027423495}
|
- {fileID: 3928015243027423495}
|
||||||
|
- {fileID: 3685916492953640732}
|
||||||
- {fileID: 5290633878409985}
|
- {fileID: 5290633878409985}
|
||||||
m_Father: {fileID: 2843270827267453358}
|
m_Father: {fileID: 2843270827267453358}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
@ -507,9 +653,9 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 1}
|
m_AnchorMin: {x: 0.5, y: 1}
|
||||||
m_AnchorMax: {x: 0.5, y: 1}
|
m_AnchorMax: {x: 0.5, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: -125}
|
||||||
m_SizeDelta: {x: 250, y: 250}
|
m_SizeDelta: {x: 250, y: 250}
|
||||||
m_Pivot: {x: 0.5, y: 1}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &3001533735177909600
|
--- !u!222 &3001533735177909600
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -643,7 +789,7 @@ GameObject:
|
|||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 0
|
||||||
--- !u!224 &3928015243027423495
|
--- !u!224 &3928015243027423495
|
||||||
RectTransform:
|
RectTransform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -659,11 +805,11 @@ RectTransform:
|
|||||||
- {fileID: 5364152893080087698}
|
- {fileID: 5364152893080087698}
|
||||||
m_Father: {fileID: 4044003808430543235}
|
m_Father: {fileID: 4044003808430543235}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 1, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 1, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: -50, y: -85}
|
m_AnchoredPosition: {x: 50, y: -85}
|
||||||
m_SizeDelta: {x: 238, y: 150}
|
m_SizeDelta: {x: 238, y: 150}
|
||||||
m_Pivot: {x: 1, y: 1}
|
m_Pivot: {x: 0, y: 1}
|
||||||
--- !u!222 &3058652260737614200
|
--- !u!222 &3058652260737614200
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1102,6 +1248,140 @@ MonoBehaviour:
|
|||||||
m_hasFontAssetChanged: 0
|
m_hasFontAssetChanged: 0
|
||||||
m_baseMaterial: {fileID: 0}
|
m_baseMaterial: {fileID: 0}
|
||||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
--- !u!1 &3803482992194188727
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2490009981694473494}
|
||||||
|
- component: {fileID: 5753191097148567634}
|
||||||
|
- component: {fileID: 7418401814114797352}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Text (TMP)
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2490009981694473494
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3803482992194188727}
|
||||||
|
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: 3685916492953640732}
|
||||||
|
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: 9.0771}
|
||||||
|
m_SizeDelta: {x: 0, y: -18.1542}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &5753191097148567634
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3803482992194188727}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &7418401814114797352
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3803482992194188727}
|
||||||
|
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: "\uC124\uC815"
|
||||||
|
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: 4284115536
|
||||||
|
m_fontColor: {r: 0.3137255, g: 0.4156863, b: 0.3529412, 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: 45
|
||||||
|
m_fontSizeBase: 45
|
||||||
|
m_fontWeight: 400
|
||||||
|
m_enableAutoSizing: 0
|
||||||
|
m_fontSizeMin: 0
|
||||||
|
m_fontSizeMax: 0
|
||||||
|
m_fontStyle: 1
|
||||||
|
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: 0
|
||||||
|
m_wordWrappingRatios: 0.4
|
||||||
|
m_overflowMode: 0
|
||||||
|
m_linkedTextComponent: {fileID: 0}
|
||||||
|
parentLinkedComponent: {fileID: 0}
|
||||||
|
m_enableKerning: 0
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
checkPaddingRequired: 0
|
||||||
|
m_isRichText: 1
|
||||||
|
m_parseCtrlCharacters: 1
|
||||||
|
m_isOrthographic: 1
|
||||||
|
m_isCullingEnabled: 0
|
||||||
|
m_horizontalMapping: 0
|
||||||
|
m_verticalMapping: 0
|
||||||
|
m_uvLineOffset: 0
|
||||||
|
m_geometrySortingOrder: 0
|
||||||
|
m_IsTextObjectScaleStatic: 0
|
||||||
|
m_VertexBufferAutoSizeReduction: 0
|
||||||
|
m_useMaxVisibleDescender: 1
|
||||||
|
m_pageToDisplay: 1
|
||||||
|
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_isUsingLegacyAnimationComponent: 0
|
||||||
|
m_isVolumetricText: 0
|
||||||
|
m_hasFontAssetChanged: 0
|
||||||
|
m_baseMaterial: {fileID: 0}
|
||||||
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
--- !u!1 &3856590192762510114
|
--- !u!1 &3856590192762510114
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1611,9 +1891,9 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 1}
|
m_AnchorMin: {x: 0.5, y: 1}
|
||||||
m_AnchorMax: {x: 0.5, y: 1}
|
m_AnchorMax: {x: 0.5, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: -125}
|
||||||
m_SizeDelta: {x: 250, y: 250}
|
m_SizeDelta: {x: 250, y: 250}
|
||||||
m_Pivot: {x: 0.5, y: 1}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &1810525227364227116
|
--- !u!222 &1810525227364227116
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -2087,6 +2367,21 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 35a536dce57360441898a57e5d5a1335, type: 3}
|
m_Script: {fileID: 11500000, guid: 35a536dce57360441898a57e5d5a1335, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
|
retryButton: {fileID: 2903228850155334346}
|
||||||
|
playerANameText: {fileID: 4888719462249568075}
|
||||||
|
playerBNameText: {fileID: 5649645114775233136}
|
||||||
|
indicatorA: {fileID: 822440635660578859}
|
||||||
|
indicatorB: {fileID: 8824651814675414615}
|
||||||
|
profileImageA: {fileID: 8274101518303565689}
|
||||||
|
profileImageB: {fileID: 1516328599079970136}
|
||||||
|
profileImageSprites:
|
||||||
|
- {fileID: 21300000, guid: 2d325c545f7c9144cb37a45e93e5ddb9, type: 3}
|
||||||
|
- {fileID: 21300000, guid: 59492a1d9c2719641bd0d4d53988c9b4, type: 3}
|
||||||
|
- {fileID: 21300000, guid: 0ec0f74f1a2889d418680a98b21a7095, type: 3}
|
||||||
|
- {fileID: 21300000, guid: 81e6604d6664acf4cab1ff13043e5b54, type: 3}
|
||||||
|
indicatorSprites:
|
||||||
|
- {fileID: 21300000, guid: 91965db86e05b144f840b523e83d3816, type: 3}
|
||||||
|
- {fileID: 21300000, guid: 8379c97a1509fbc42abb3da34d2e647c, type: 3}
|
||||||
--- !u!225 &5999196603484244259
|
--- !u!225 &5999196603484244259
|
||||||
CanvasGroup:
|
CanvasGroup:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -353,7 +353,7 @@ Camera:
|
|||||||
far clip plane: 1000
|
far clip plane: 1000
|
||||||
field of view: 60
|
field of view: 60
|
||||||
orthographic: 1
|
orthographic: 1
|
||||||
orthographic size: 14
|
orthographic size: 13.333333
|
||||||
m_Depth: -1
|
m_Depth: -1
|
||||||
m_CullingMask:
|
m_CullingMask:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
|
@ -315,8 +315,8 @@ public static class AIEvaluator
|
|||||||
return fourThreeCount;
|
return fourThreeCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 깨진 패턴 (3-빈칸-1) 감지
|
// 깨진 패턴 (ex. 3-빈칸-1) 감지
|
||||||
private static (bool isDetected, int count, int openEnds) DetectBrokenPattern(
|
public static (bool isDetected, int count, int openEnds) DetectBrokenPattern(
|
||||||
Enums.PlayerType[,] board, int row, int col, int[] dir, Enums.PlayerType player)
|
Enums.PlayerType[,] board, int row, int col, int[] dir, Enums.PlayerType player)
|
||||||
{
|
{
|
||||||
int size = board.GetLength(0);
|
int size = board.GetLength(0);
|
||||||
@ -403,15 +403,15 @@ public static class AIEvaluator
|
|||||||
}
|
}
|
||||||
else if (count == 4) // 깨진 4
|
else if (count == 4) // 깨진 4
|
||||||
{
|
{
|
||||||
return (openEnds == 2) ? PatternScore.OPEN_FOUR * 0.8f :
|
return (openEnds == 2) ? PatternScore.OPEN_FOUR * 0.9f :
|
||||||
(openEnds == 1) ? PatternScore.HALF_OPEN_FOUR * 0.8f :
|
(openEnds == 1) ? PatternScore.HALF_OPEN_FOUR * 0.9f :
|
||||||
PatternScore.CLOSED_FOUR * 0.7f;
|
PatternScore.CLOSED_FOUR * 0.8f;
|
||||||
}
|
}
|
||||||
else if (count == 3) // 깨진 3
|
else if (count == 3) // 깨진 3
|
||||||
{
|
{
|
||||||
return (openEnds == 2) ? PatternScore.OPEN_THREE * 0.7f :
|
return (openEnds == 2) ? PatternScore.OPEN_THREE * 0.9f :
|
||||||
(openEnds == 1) ? PatternScore.HALF_OPEN_THREE * 0.7f :
|
(openEnds == 1) ? PatternScore.HALF_OPEN_THREE * 0.9f :
|
||||||
PatternScore.CLOSED_THREE * 0.6f;
|
PatternScore.CLOSED_THREE * 0.8f;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -443,24 +443,24 @@ public static class AIEvaluator
|
|||||||
float normalScore = 0;
|
float normalScore = 0;
|
||||||
if (count >= 4)
|
if (count >= 4)
|
||||||
{
|
{
|
||||||
normalScore = PatternScore.FIVE_IN_A_ROW / 10;
|
normalScore = PatternScore.FIVE_IN_A_ROW / 9;
|
||||||
}
|
}
|
||||||
else if (count == 3)
|
else if (count == 3)
|
||||||
{
|
{
|
||||||
normalScore = (openEnds == 2) ? PatternScore.OPEN_THREE / 3 :
|
normalScore = (openEnds == 2) ? PatternScore.OPEN_THREE / 2.5f :
|
||||||
(openEnds == 1) ? PatternScore.HALF_OPEN_THREE / 5 :
|
(openEnds == 1) ? PatternScore.HALF_OPEN_THREE / 3.5f :
|
||||||
PatternScore.CLOSED_THREE / 5;
|
PatternScore.CLOSED_THREE / 4.5f;
|
||||||
}
|
}
|
||||||
else if (count == 2)
|
else if (count == 2)
|
||||||
{
|
{
|
||||||
normalScore = (openEnds == 2) ? PatternScore.OPEN_TWO / 2 :
|
normalScore = (openEnds == 2) ? PatternScore.OPEN_TWO / 3.0f :
|
||||||
(openEnds == 1) ? PatternScore.HALF_OPEN_TWO / 3 :
|
(openEnds == 1) ? PatternScore.HALF_OPEN_TWO / 4.0f :
|
||||||
PatternScore.CLOSED_TWO / 5;
|
PatternScore.CLOSED_TWO / 5.0f;
|
||||||
}
|
}
|
||||||
else if (count == 1)
|
else if (count == 1)
|
||||||
{
|
{
|
||||||
normalScore = (openEnds == 2) ? PatternScore.OPEN_ONE :
|
normalScore = (openEnds == 2) ? PatternScore.OPEN_ONE / 4.0f :
|
||||||
PatternScore.CLOSED_ONE;
|
PatternScore.CLOSED_ONE / 5.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 깨진 패턴 평가
|
// 깨진 패턴 평가
|
||||||
@ -469,7 +469,7 @@ public static class AIEvaluator
|
|||||||
|
|
||||||
if (isBroken)
|
if (isBroken)
|
||||||
{
|
{
|
||||||
brokenScore = EvaluateBrokenPattern(brokenCount, brokenOpenEnds);
|
brokenScore = EvaluateBrokenPattern(brokenCount, brokenOpenEnds) * 1.5f;
|
||||||
}
|
}
|
||||||
|
|
||||||
directionScore = Math.Max(normalScore, brokenScore);
|
directionScore = Math.Max(normalScore, brokenScore);
|
||||||
@ -491,27 +491,28 @@ public static class AIEvaluator
|
|||||||
opponentPatterns.Add((dir, count, openEnds));
|
opponentPatterns.Add((dir, count, openEnds));
|
||||||
|
|
||||||
float normalScore = 0;
|
float normalScore = 0;
|
||||||
// 상대 패턴 차단에 대한 가치 (약간 낮은 가중치) AI는 공격지향적으로
|
|
||||||
if (count >= 4)
|
if (count >= 4)
|
||||||
{
|
{
|
||||||
normalScore = PatternScore.FIVE_IN_A_ROW / 12.5f;
|
normalScore = PatternScore.FIVE_IN_A_ROW / 8.5f;
|
||||||
}
|
}
|
||||||
else if (count == 3)
|
else if (count == 3)
|
||||||
{
|
{
|
||||||
normalScore = (openEnds == 2) ? PatternScore.OPEN_THREE / 3.75f :
|
// 일관된 분모 사용 (방어 가중치는 유지)
|
||||||
(openEnds == 1) ? PatternScore.HALF_OPEN_THREE / 6.25f :
|
normalScore = (openEnds == 2) ? PatternScore.OPEN_THREE / 1.3f :
|
||||||
PatternScore.CLOSED_THREE / 6.25f;
|
(openEnds == 1) ? PatternScore.HALF_OPEN_THREE / 3.2f :
|
||||||
|
PatternScore.CLOSED_THREE / 4.2f;
|
||||||
}
|
}
|
||||||
else if (count == 2)
|
else if (count == 2)
|
||||||
{
|
{
|
||||||
normalScore = (openEnds == 2) ? PatternScore.OPEN_TWO / 2.5f :
|
normalScore = (openEnds == 2) ? PatternScore.OPEN_TWO / 2.7f :
|
||||||
(openEnds == 1) ? PatternScore.HALF_OPEN_TWO / 3.75f :
|
(openEnds == 1) ? PatternScore.HALF_OPEN_TWO / 3.7f :
|
||||||
PatternScore.CLOSED_TWO / 5f;
|
PatternScore.CLOSED_TWO / 4.7f;
|
||||||
}
|
}
|
||||||
else if (count == 1)
|
else if (count == 1)
|
||||||
{
|
{
|
||||||
normalScore = (openEnds == 2) ? PatternScore.OPEN_ONE / 1.25f :
|
normalScore = (openEnds == 2) ? PatternScore.OPEN_ONE / 3.7f :
|
||||||
PatternScore.CLOSED_ONE;
|
PatternScore.CLOSED_ONE / 4.7f;
|
||||||
}
|
}
|
||||||
|
|
||||||
var (isBroken, brokenCount, brokenOpenEnds) = DetectBrokenPattern(board, row, col, dir, opponentPlayer);
|
var (isBroken, brokenCount, brokenOpenEnds) = DetectBrokenPattern(board, row, col, dir, opponentPlayer);
|
||||||
@ -520,7 +521,7 @@ public static class AIEvaluator
|
|||||||
if (isBroken)
|
if (isBroken)
|
||||||
{
|
{
|
||||||
// 깨진 패턴은 일반 패턴보다 좀 더 높은 가중치 할당
|
// 깨진 패턴은 일반 패턴보다 좀 더 높은 가중치 할당
|
||||||
brokenScore = EvaluateBrokenPattern(brokenCount, brokenOpenEnds) * 0.9f;
|
brokenScore = EvaluateBrokenPattern(brokenCount, brokenOpenEnds) * 1.2f;
|
||||||
}
|
}
|
||||||
|
|
||||||
directionScore = Math.Max(normalScore, brokenScore);
|
directionScore = Math.Max(normalScore, brokenScore);
|
||||||
@ -561,7 +562,7 @@ public static class AIEvaluator
|
|||||||
if (!AreParallelDirections(openThrees[i].dir, openThrees[j].dir))
|
if (!AreParallelDirections(openThrees[i].dir, openThrees[j].dir))
|
||||||
{
|
{
|
||||||
float threeThreeScore = PatternScore.DOUBLE_THREE / 4; // 복합 패턴 가중치
|
float threeThreeScore = PatternScore.DOUBLE_THREE / 4; // 복합 패턴 가중치
|
||||||
score += isAI ? threeThreeScore : threeThreeScore * 1.1f;
|
score += isAI ? threeThreeScore * 1.1f : threeThreeScore * 1.3f;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -578,7 +579,7 @@ public static class AIEvaluator
|
|||||||
if (!AreParallelDirections(fours[i].dir, fours[j].dir))
|
if (!AreParallelDirections(fours[i].dir, fours[j].dir))
|
||||||
{
|
{
|
||||||
float fourFourScore = PatternScore.DOUBLE_FOUR / 4;
|
float fourFourScore = PatternScore.DOUBLE_FOUR / 4;
|
||||||
score += isAI ? fourFourScore : fourFourScore * 1.2f;
|
score += isAI ? fourFourScore * 1.2f : fourFourScore * 1.5f;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -589,7 +590,7 @@ public static class AIEvaluator
|
|||||||
if (fours.Count > 0 && openThrees.Count > 0)
|
if (fours.Count > 0 && openThrees.Count > 0)
|
||||||
{
|
{
|
||||||
float fourThreeScore = PatternScore.FOUR_THREE / 4;
|
float fourThreeScore = PatternScore.FOUR_THREE / 4;
|
||||||
score += isAI ? fourThreeScore : fourThreeScore * 1.2f;
|
score += isAI ? fourThreeScore * 1.1f : fourThreeScore * 1.4f;
|
||||||
}
|
}
|
||||||
|
|
||||||
return score;
|
return score;
|
||||||
|
@ -10,12 +10,16 @@ public static class MiniMaxAIController
|
|||||||
|
|
||||||
private static int[][] _directions = AIConstants.Directions;
|
private static int[][] _directions = AIConstants.Directions;
|
||||||
|
|
||||||
private static int _playerLevel = 1; // 급수 설정
|
private static int _playerRating = 18; // 급수. 기본값 18(최하)
|
||||||
private static float _mistakeMove;
|
|
||||||
|
|
||||||
private static Enums.PlayerType _AIPlayerType = Enums.PlayerType.PlayerB;
|
private static Enums.PlayerType _AIPlayerType = Enums.PlayerType.PlayerB;
|
||||||
|
|
||||||
private static System.Random _random = new System.Random(); // 랜덤 실수용 Random 함수
|
// 실수 관련 변수
|
||||||
|
private static float _baselineMistakeProb; // 기본 실수 확률
|
||||||
|
private static float _mistakeSeverity; // 실수의 심각도 (높을수록 더 나쁜 수를 둘 확률 증가)
|
||||||
|
private static int _consecutiveGoodMoves = 0; // 연속으로 좋은 수를 둔 횟수
|
||||||
|
private static int _turnsPlayed = 0; // 진행된 턴 수
|
||||||
|
private static System.Random _random = new System.Random();
|
||||||
|
|
||||||
// 중복 계산을 방지하기 위한 캐싱 데이터. 위치 기반 (그리드 기반 해시맵)
|
// 중복 계산을 방지하기 위한 캐싱 데이터. 위치 기반 (그리드 기반 해시맵)
|
||||||
private static Dictionary<(int row, int col), Dictionary<(int dirX, int dirY), (int count, int openEnds)>>
|
private static Dictionary<(int row, int col), Dictionary<(int dirX, int dirY), (int count, int openEnds)>>
|
||||||
@ -28,18 +32,17 @@ public static class MiniMaxAIController
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 급수 설정 -> 실수 넣을 때 계산
|
// 급수 설정 -> 실수 넣을 때 계산
|
||||||
public static void SetLevel(int level)
|
public static void SetRating(int level)
|
||||||
{
|
{
|
||||||
_playerLevel = level;
|
_playerRating = level;
|
||||||
// 레벨에 따른 실수율? 설정
|
GetMistakeProbability(_playerRating);
|
||||||
_mistakeMove = GetMistakeProbability(_playerLevel);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 실수 확률 계산 함수
|
// 실수 확률 계산 함수
|
||||||
private static float GetMistakeProbability(int level)
|
private static void GetMistakeProbability(int level)
|
||||||
{
|
{
|
||||||
// 레벨이 1일 때 실수 확률 0%, 레벨이 18일 때 실수 확률 50%
|
_baselineMistakeProb = Math.Max(0.01f, (level - 1) / 17f * 0.34f); //1급 1%, 18급 35%
|
||||||
return (level - 1) / 17f * 0.5f;
|
_mistakeSeverity = 1f - ((level - 1) / 17f); // 레벨이 낮을수록 심각한 실수를 함
|
||||||
}
|
}
|
||||||
|
|
||||||
// return 값이 null 일 경우 == 보드에 칸 꽉 참
|
// return 값이 null 일 경우 == 보드에 칸 꽉 참
|
||||||
@ -50,7 +53,7 @@ public static class MiniMaxAIController
|
|||||||
|
|
||||||
float bestScore = float.MinValue;
|
float bestScore = float.MinValue;
|
||||||
(int row, int col)? bestMove = null;
|
(int row, int col)? bestMove = null;
|
||||||
(int row, int col)? secondBestMove = null;
|
List<(int row, int col)>? fiveInARowMoves = null;
|
||||||
List<(int row, int col, float score)> validMoves = GetValidMoves(board);
|
List<(int row, int col, float score)> validMoves = GetValidMoves(board);
|
||||||
|
|
||||||
// 보드에 놓을 수 있는 자리가 있는지 확인
|
// 보드에 놓을 수 있는 자리가 있는지 확인
|
||||||
@ -59,11 +62,22 @@ public static class MiniMaxAIController
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 5연승 가능한 자리를 먼저 찾아서 우선적으로 설정
|
// 즉시 승리 가능한 자리를 먼저 찾아서 우선적으로 설정
|
||||||
List<(int row, int col)> fiveInARowMoves = GetFiveInARowCandidateMoves(board);
|
fiveInARowMoves = GetFiveInARowCandidateMoves(board, _AIPlayerType);
|
||||||
if (fiveInARowMoves.Count > 0)
|
if (fiveInARowMoves != null & fiveInARowMoves.Count > 0)
|
||||||
{
|
{
|
||||||
bestMove = fiveInARowMoves[0];
|
bestMove = fiveInARowMoves[0];
|
||||||
|
_turnsPlayed++;
|
||||||
|
return bestMove;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 즉시 패배 가능한 자리를 먼저 찾아서 우선적으로 설정
|
||||||
|
// var oppositePlayer = _AIPlayerType == Enums.PlayerType.PlayerB ? Enums.PlayerType.PlayerA : Enums.PlayerType.PlayerB;
|
||||||
|
fiveInARowMoves = GetFiveInARowCandidateMoves(board, Enums.PlayerType.PlayerA);
|
||||||
|
if (fiveInARowMoves != null & fiveInARowMoves.Count > 0)
|
||||||
|
{
|
||||||
|
bestMove = fiveInARowMoves[0];
|
||||||
|
_turnsPlayed++;
|
||||||
return bestMove;
|
return bestMove;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,26 +90,82 @@ public static class MiniMaxAIController
|
|||||||
if (score > bestScore)
|
if (score > bestScore)
|
||||||
{
|
{
|
||||||
bestScore = score;
|
bestScore = score;
|
||||||
|
|
||||||
if (bestMove != null)
|
|
||||||
{
|
|
||||||
secondBestMove = bestMove;
|
|
||||||
}
|
|
||||||
|
|
||||||
bestMove = (row, col);
|
bestMove = (row, col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 랜덤 실수
|
// 랜덤 실수
|
||||||
if (secondBestMove != null && _random.NextDouble() < _mistakeMove)
|
float currentMistakeProb = CalculateDynamicMistakeProb(board, validMoves); // 실수 확률 동적 조정
|
||||||
|
|
||||||
|
// 실수 확률에 따라 실수 여부 결정
|
||||||
|
if (_random.NextDouble() < currentMistakeProb)
|
||||||
{
|
{
|
||||||
Debug.Log("AI Mistake");
|
int moveIndex = SelectMistakeMove(validMoves);
|
||||||
return secondBestMove;
|
_consecutiveGoodMoves = 0; // 실수했으므로 연속 카운터 리셋
|
||||||
|
|
||||||
|
var mistakeMove = (validMoves[moveIndex].row, validMoves[moveIndex].col);
|
||||||
|
|
||||||
|
// Debug.Log($"AI Mistake: 최적 점수 {validMoves[0].score}대신 {validMoves[moveIndex].score} 선택 (실수 확률: {currentMistakeProb:P2})");
|
||||||
|
_turnsPlayed++;
|
||||||
|
return mistakeMove;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 실수X
|
||||||
|
_consecutiveGoodMoves++;
|
||||||
|
_turnsPlayed++;
|
||||||
return bestMove;
|
return bestMove;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Mistake Code
|
||||||
|
|
||||||
|
// 동적 실수 확률 계산 (게임 상황에 따라 조정)
|
||||||
|
private static float CalculateDynamicMistakeProb(Enums.PlayerType[,] board, List<(int row, int col, float score)> validMoves)
|
||||||
|
{
|
||||||
|
float mistakeProb = _baselineMistakeProb;
|
||||||
|
|
||||||
|
// 1. 턴 수에 따라 조정
|
||||||
|
if (_turnsPlayed < 5) // 초반에는 실수 확률 감소
|
||||||
|
{
|
||||||
|
mistakeProb *= 0.5f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 연속적인 좋은 수에 따른 조정 (집중력 저하 효과)
|
||||||
|
if (_consecutiveGoodMoves > 3)
|
||||||
|
{
|
||||||
|
// 연속으로 좋은 수를 두면 집중력이 저하되어 실수 확률 증가
|
||||||
|
mistakeProb += (_consecutiveGoodMoves - 3) * 0.03f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 게임 후반 집중력 향상 (마지막 몇 수는 집중)
|
||||||
|
if (_turnsPlayed > 78) {
|
||||||
|
mistakeProb *= 0.7f; // 종반에는 더 집중
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.Min(mistakeProb, 0.8f); // 최대 80%로 제한
|
||||||
|
}
|
||||||
|
|
||||||
|
// 실수 선택(경미 ~ 심각)
|
||||||
|
private static int SelectMistakeMove(List<(int row, int col, float score)> moves)
|
||||||
|
{
|
||||||
|
int moveCount = moves.Count;
|
||||||
|
|
||||||
|
// _mistakeSeverity가 높을수록(레벨이 낮을수록) 더 심각한 실수를 할 확률 증가
|
||||||
|
float severityFactor = (float)Math.Pow(_random.NextDouble(), 1 / _mistakeSeverity);
|
||||||
|
|
||||||
|
// 상위 수들 중에서는 약간 안 좋은 수를, 하위 수들 중에서는 매우 안 좋은 수를 선택
|
||||||
|
int mistakeIndex = Math.Min(1 + (int)(severityFactor * (moveCount - 1)), moveCount - 1);
|
||||||
|
|
||||||
|
// 가끔 완전히 랜덤한 수 선택 (매우 낮은 확률)
|
||||||
|
if (_random.NextDouble() < 0.05 * _mistakeSeverity)
|
||||||
|
{
|
||||||
|
mistakeIndex = _random.Next(1, moveCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
return mistakeIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
private static float DoMinimax(Enums.PlayerType[,] board, int depth, bool isMaximizing, float alpha, float beta,
|
private static float DoMinimax(Enums.PlayerType[,] board, int depth, bool isMaximizing, float alpha, float beta,
|
||||||
int recentRow, int recentCol)
|
int recentRow, int recentCol)
|
||||||
{
|
{
|
||||||
@ -136,6 +206,8 @@ public static class MiniMaxAIController
|
|||||||
private static List<(int row, int col, float score)> GetValidMoves(Enums.PlayerType[,] board)
|
private static List<(int row, int col, float score)> GetValidMoves(Enums.PlayerType[,] board)
|
||||||
{
|
{
|
||||||
List<(int, int, float)> validMoves = new List<(int, int, float)>();
|
List<(int, int, float)> validMoves = new List<(int, int, float)>();
|
||||||
|
List<(int, int, float)> allMoves = new List<(int, int, float)>();
|
||||||
|
|
||||||
int size = board.GetLength(0);
|
int size = board.GetLength(0);
|
||||||
|
|
||||||
for (int row = 0; row < size; row++)
|
for (int row = 0; row < size; row++)
|
||||||
@ -146,16 +218,26 @@ public static class MiniMaxAIController
|
|||||||
{
|
{
|
||||||
// 보드 전체가 아닌 해당 돌에 대해서만 Score 계산
|
// 보드 전체가 아닌 해당 돌에 대해서만 Score 계산
|
||||||
float score = AIEvaluator.EvaluateMove(board, row, col, _AIPlayerType);
|
float score = AIEvaluator.EvaluateMove(board, row, col, _AIPlayerType);
|
||||||
validMoves.Add((row, col, score));
|
allMoves.Add((row, col, score));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// score가 높은 순으로 정렬 -> 더 좋은 수 먼저 계산하도록 함
|
// score가 높은 순으로 정렬 -> 더 좋은 수 먼저 계산하도록 함
|
||||||
validMoves.Sort((a, b) => b.Item3.CompareTo(a.Item3));
|
allMoves.Sort((a, b) => b.Item3.CompareTo(a.Item3));
|
||||||
|
|
||||||
// 시간 단축을 위해 상위 10-15개만 고려.
|
int topCount = Math.Min(8, allMoves.Count); // 상위 8개 (또는 가능한 최대)
|
||||||
return validMoves.Take(10).ToList();
|
validMoves.AddRange(allMoves.Take(topCount));
|
||||||
|
|
||||||
|
// 중간 범위의 점수를 가진 수도 일부 포함 (전략적 게임을 위해서)
|
||||||
|
if (allMoves.Count > topCount + 10) // 10개 이상의 후보가 있을 때만
|
||||||
|
{
|
||||||
|
var middleIndex = allMoves.Count / 2;
|
||||||
|
var middleMoves = allMoves.Skip(middleIndex - 1).Take(2); // 중간 부분에서 2개 선택
|
||||||
|
validMoves.AddRange(middleMoves);
|
||||||
|
}
|
||||||
|
|
||||||
|
return validMoves;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool HasNearbyStones(Enums.PlayerType[,] board, int row, int col, int distance = 3)
|
private static bool HasNearbyStones(Enums.PlayerType[,] board, int row, int col, int distance = 3)
|
||||||
@ -286,7 +368,7 @@ public static class MiniMaxAIController
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 5목이 될 수 있는 위치 찾기
|
// 5목이 될 수 있는 위치 찾기
|
||||||
private static List<(int row, int col)> GetFiveInARowCandidateMoves(Enums.PlayerType[,] board)
|
private static List<(int row, int col)> GetFiveInARowCandidateMoves(Enums.PlayerType[,] board, Enums.PlayerType currentPlayer)
|
||||||
{
|
{
|
||||||
List<(int row, int col)> fiveInARowMoves = new List<(int, int)>();
|
List<(int row, int col)> fiveInARowMoves = new List<(int, int)>();
|
||||||
int size = board.GetLength(0);
|
int size = board.GetLength(0);
|
||||||
@ -299,12 +381,21 @@ public static class MiniMaxAIController
|
|||||||
|
|
||||||
foreach (var dir in _directions)
|
foreach (var dir in _directions)
|
||||||
{
|
{
|
||||||
var (count, openEnds) = CountStones(board, row, col, dir, _AIPlayerType);
|
var (count, openEnds) = CountStones(board, row, col, dir, currentPlayer, false);
|
||||||
|
|
||||||
if (count == 4 && openEnds > 0)
|
if (count + 1 == WIN_COUNT && openEnds > 0) // 일반 패턴 (연속 4돌)
|
||||||
{
|
{
|
||||||
fiveInARowMoves.Add((row, col));
|
return new List<(int row, int col)> { (row, col) }; // 하나 나오면 바로 return (시간 단축)
|
||||||
break; // 하나 나오면 바로 break (시간 단축)
|
}
|
||||||
|
|
||||||
|
if (count >= 2) // 깨진 패턴 평가
|
||||||
|
{
|
||||||
|
var (isBroken, brokenCount, _) = AIEvaluator.DetectBrokenPattern(board, row, col, dir, currentPlayer);
|
||||||
|
|
||||||
|
if (isBroken && brokenCount + 1 >= WIN_COUNT) // 자기 자신 포함
|
||||||
|
{
|
||||||
|
return new List<(int row, int col)> { (row, col) };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
using System;
|
using System;
|
||||||
using UnityEngine;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine.SceneManagement;
|
||||||
|
|
||||||
public class OmokAI : MonoBehaviour
|
public class OmokAI : Singleton<OmokAI>
|
||||||
{
|
{
|
||||||
public static OmokAI Instance;
|
public static OmokAI Instance;
|
||||||
|
|
||||||
@ -11,6 +11,17 @@ public class OmokAI : MonoBehaviour
|
|||||||
Instance = this;
|
Instance = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AI가 Player B가 아닌 경우 해당 메서드로 설정. 기본값은 PlayerB
|
||||||
|
public void SetAIPlayerType(Enums.PlayerType AIPlayerType)
|
||||||
|
{
|
||||||
|
MiniMaxAIController.SetAIPlayerType(AIPlayerType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetRating(int level)
|
||||||
|
{
|
||||||
|
MiniMaxAIController.SetRating(level);
|
||||||
|
}
|
||||||
|
|
||||||
public async void StartBestMoveSearch(Enums.PlayerType[,] board, Action<(int, int)?> callback)
|
public async void StartBestMoveSearch(Enums.PlayerType[,] board, Action<(int, int)?> callback)
|
||||||
{
|
{
|
||||||
(int row, int col)? bestMove = await Task.Run(() => MiniMaxAIController.GetBestMove(board));
|
(int row, int col)? bestMove = await Task.Run(() => MiniMaxAIController.GetBestMove(board));
|
||||||
@ -23,4 +34,6 @@ public class OmokAI : MonoBehaviour
|
|||||||
bool isWin = MiniMaxAIController.CheckGameWin(player, board, row, col, false);
|
bool isWin = MiniMaxAIController.CheckGameWin(player, board, row, col, false);
|
||||||
return isWin;
|
return isWin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void OnSceneLoaded(Scene scene, LoadSceneMode mode) { }
|
||||||
}
|
}
|
||||||
|
@ -122,6 +122,7 @@ public class CoinsPanelController : MonoBehaviour
|
|||||||
}
|
}
|
||||||
sequence.OnComplete(() =>
|
sequence.OnComplete(() =>
|
||||||
{
|
{
|
||||||
|
_coinsCount += coinsCount; //추가된 코인 적용
|
||||||
_canvasGroup.blocksRaycasts = true; //구매 후 클릭 활성화
|
_canvasGroup.blocksRaycasts = true; //구매 후 클릭 활성화
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -162,8 +163,9 @@ public class CoinsPanelController : MonoBehaviour
|
|||||||
coinsRemoveImageObject.GetComponent<Image>().DOFade(0f, 1f)
|
coinsRemoveImageObject.GetComponent<Image>().DOFade(0f, 1f)
|
||||||
.OnComplete( ()=>ChangeTextAnimation(false, ()=>
|
.OnComplete( ()=>ChangeTextAnimation(false, ()=>
|
||||||
{
|
{
|
||||||
// TODO: 코인 수량 감소
|
//감소된 코인 적용
|
||||||
// GameManager.Instance.CoinsCount--;
|
_coinsCount -= 100;
|
||||||
|
|
||||||
action?.Invoke();
|
action?.Invoke();
|
||||||
})); // 텍스트 떨어지는 연출
|
})); // 텍스트 떨어지는 연출
|
||||||
}
|
}
|
||||||
|
@ -184,14 +184,6 @@ public class GameLogic : MonoBehaviour
|
|||||||
private List<Vector2Int> _forbiddenMoves = new List<Vector2Int>();
|
private List<Vector2Int> _forbiddenMoves = new List<Vector2Int>();
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private static int[][] _directions = new int[][]
|
|
||||||
{
|
|
||||||
new int[] {1, 0}, // 수직
|
|
||||||
new int[] {0, 1}, // 수평
|
|
||||||
new int[] {1, 1}, // 대각선 ↘ ↖
|
|
||||||
new int[] {1, -1} // 대각선 ↙ ↗
|
|
||||||
};
|
|
||||||
|
|
||||||
public GameLogic(StoneController stoneController, Enums.GameType gameType, FioTimer fioTimer = null)
|
public GameLogic(StoneController stoneController, Enums.GameType gameType, FioTimer fioTimer = null)
|
||||||
{
|
{
|
||||||
//보드 초기화
|
//보드 초기화
|
||||||
@ -233,18 +225,25 @@ public class GameLogic : MonoBehaviour
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: 기보 매니저에게 플레이어 닉네임 넘겨주기, 프로필정보도 넘겨줘야 합니다.
|
|
||||||
ReplayManager.Instance.InitReplayData("PlayerA","nicknameB");
|
|
||||||
|
|
||||||
switch (gameType)
|
switch (gameType)
|
||||||
{
|
{
|
||||||
case Enums.GameType.SinglePlay:
|
case Enums.GameType.SinglePlay:
|
||||||
firstPlayerState = new PlayerState(true);
|
firstPlayerState = new PlayerState(true);
|
||||||
secondPlayerState = new AIState();
|
secondPlayerState = new AIState();
|
||||||
|
// AI 난이도 설정(급수 설정)
|
||||||
|
OmokAI.Instance.SetRating(UserManager.Instance.Rating);
|
||||||
|
|
||||||
|
//유저 이름 사진 초기화
|
||||||
|
GameManager.Instance.InitPlayersName(UserManager.Instance.Nickname, "AIPlayer");
|
||||||
|
GameManager.Instance.InitProfileImages(UserManager.Instance.imageIndex, 1);
|
||||||
|
|
||||||
|
ReplayManager.Instance.InitReplayData(UserManager.Instance.Nickname,"PlayerAI", UserManager.Instance.imageIndex, 1);
|
||||||
|
|
||||||
SetState(firstPlayerState);
|
SetState(firstPlayerState);
|
||||||
break;
|
break;
|
||||||
case Enums.GameType.MultiPlay:
|
case Enums.GameType.MultiPlay:
|
||||||
//TODO: 멀티 구현 필요
|
//TODO: 멀티 구현 필요
|
||||||
|
ReplayManager.Instance.InitReplayData("PlayerA","nicknameB");
|
||||||
break;
|
break;
|
||||||
case Enums.GameType.Replay:
|
case Enums.GameType.Replay:
|
||||||
//TODO: 리플레이 구현
|
//TODO: 리플레이 구현
|
||||||
@ -273,6 +272,8 @@ public class GameLogic : MonoBehaviour
|
|||||||
_currentPlayerState?.OnExit(this);
|
_currentPlayerState?.OnExit(this);
|
||||||
_currentPlayerState = state;
|
_currentPlayerState = state;
|
||||||
_currentPlayerState?.OnEnter(this);
|
_currentPlayerState?.OnEnter(this);
|
||||||
|
//턴 표시
|
||||||
|
GameManager.Instance.SetTurnIndicator(_currentPlayerState == firstPlayerState);
|
||||||
}
|
}
|
||||||
|
|
||||||
//스톤의 상태변경 명령함수
|
//스톤의 상태변경 명령함수
|
||||||
@ -358,17 +359,9 @@ public class GameLogic : MonoBehaviour
|
|||||||
//승리 확인 함수
|
//승리 확인 함수
|
||||||
public bool CheckGameWin(Enums.PlayerType player, int row, int col)
|
public bool CheckGameWin(Enums.PlayerType player, int row, int col)
|
||||||
{
|
{
|
||||||
foreach (var dir in _directions)
|
return OmokAI.Instance.CheckGameWin(player, _board, row, col);
|
||||||
{
|
|
||||||
var (count, _) = CountStones(_board, row, col, dir, player);
|
|
||||||
|
|
||||||
// 자기 자신 포함하여 5개 이상일 시 true 반환
|
|
||||||
if (count + 1 >= Constants.WIN_COUNT)
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// 특정 방향으로 같은 돌 개수와 열린 끝 개수를 계산하는 함수
|
// 특정 방향으로 같은 돌 개수와 열린 끝 개수를 계산하는 함수
|
||||||
private (int count, int openEnds) CountStones(
|
private (int count, int openEnds) CountStones(
|
||||||
Enums.PlayerType[,] board, int row, int col, int[] direction, Enums.PlayerType player)
|
Enums.PlayerType[,] board, int row, int col, int[] direction, Enums.PlayerType player)
|
||||||
@ -433,7 +426,7 @@ public class GameLogic : MonoBehaviour
|
|||||||
{
|
{
|
||||||
if (tempBoard[row, col] != Enums.PlayerType.None) continue;
|
if (tempBoard[row, col] != Enums.PlayerType.None) continue;
|
||||||
tempBoard[row, col] = player;
|
tempBoard[row, col] = player;
|
||||||
foreach (var dir in _directions)
|
foreach (var dir in AIConstants.Directions)
|
||||||
{
|
{
|
||||||
var (count, _) = CountStones(tempBoard, row, col, dir, player);
|
var (count, _) = CountStones(tempBoard, row, col, dir, player);
|
||||||
|
|
||||||
|
@ -4,12 +4,15 @@ using UnityEngine.SceneManagement;
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
using DG.Tweening;
|
||||||
|
|
||||||
public class GameManager : Singleton<GameManager>
|
public class GameManager : Singleton<GameManager>
|
||||||
{
|
{
|
||||||
private Enums.GameType _gameType;
|
private Enums.GameType _gameType;
|
||||||
private GameLogic _gameLogic;
|
private GameLogic _gameLogic;
|
||||||
private StoneController _stoneController;
|
private StoneController _stoneController;
|
||||||
|
private GameObject _omokBoardImage;
|
||||||
|
private GameUIController _gameUIController;
|
||||||
|
|
||||||
[SerializeField] private GameObject panelManagerPrefab;
|
[SerializeField] private GameObject panelManagerPrefab;
|
||||||
[SerializeField] private GameObject audioManagerPrefab;
|
[SerializeField] private GameObject audioManagerPrefab;
|
||||||
@ -23,19 +26,6 @@ public class GameManager : Singleton<GameManager>
|
|||||||
InitPanels();
|
InitPanels();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Start()
|
|
||||||
{
|
|
||||||
//게임 씬에서 확인하기 위한 임시 코드
|
|
||||||
_gameType = Enums.GameType.SinglePlay;
|
|
||||||
|
|
||||||
//게임 씬에서 확인하기 위한 임시 코드
|
|
||||||
// _canvas = canvas.GetComponent<Canvas>();
|
|
||||||
// _stoneController = GameObject.FindObjectOfType<StoneController>();
|
|
||||||
// _stoneController.InitStones();
|
|
||||||
// var fioTimer = FindObjectOfType<FioTimer>();
|
|
||||||
// _gameLogic = new GameLogic(_stoneController, _gameType, fioTimer);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void InitPanels()
|
private void InitPanels()
|
||||||
{
|
{
|
||||||
if (panelManager == null)
|
if (panelManager == null)
|
||||||
@ -56,7 +46,11 @@ public class GameManager : Singleton<GameManager>
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//TODO: 착수할 위치를 선택하라는 동작
|
if (_stoneController != null && _omokBoardImage != null)
|
||||||
|
{
|
||||||
|
_stoneController.GetComponent<Transform>().DOShakePosition(0.5f, 0.5f);
|
||||||
|
_omokBoardImage.GetComponent<Transform>().DOShakePosition(0.5f, 0.5f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,18 +60,23 @@ public class GameManager : Singleton<GameManager>
|
|||||||
SceneManager.LoadScene("Game");
|
SceneManager.LoadScene("Game");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ChangeToMainScene()
|
||||||
|
{
|
||||||
|
_gameType = Enums.GameType.None;
|
||||||
|
SceneManager.LoadScene("Main");
|
||||||
|
}
|
||||||
|
|
||||||
protected override void OnSceneLoaded(Scene scene, LoadSceneMode mode)
|
protected override void OnSceneLoaded(Scene scene, LoadSceneMode mode)
|
||||||
{
|
{
|
||||||
if (scene.name == "Game")
|
if (scene.name == "Game")
|
||||||
{
|
{
|
||||||
if (_gameType == Enums.GameType.Replay)
|
|
||||||
{
|
|
||||||
//TODO: 리플레이를 위한 초기화
|
|
||||||
}
|
|
||||||
_stoneController = GameObject.FindObjectOfType<StoneController>();
|
_stoneController = GameObject.FindObjectOfType<StoneController>();
|
||||||
_stoneController.InitStones();
|
_stoneController.InitStones();
|
||||||
var fioTimer = FindObjectOfType<FioTimer>();
|
var fioTimer = FindObjectOfType<FioTimer>();
|
||||||
|
_omokBoardImage = GameObject.FindObjectOfType<SpriteRenderer>().gameObject;
|
||||||
|
_gameUIController = GameObject.FindObjectOfType<GameUIController>();
|
||||||
_gameLogic = new GameLogic(_stoneController, _gameType, fioTimer);
|
_gameLogic = new GameLogic(_stoneController, _gameType, fioTimer);
|
||||||
|
|
||||||
}
|
}
|
||||||
InitPanels();
|
InitPanels();
|
||||||
}
|
}
|
||||||
@ -88,5 +87,22 @@ public class GameManager : Singleton<GameManager>
|
|||||||
_stoneController.InitStones();
|
_stoneController.InitStones();
|
||||||
_gameLogic.SetState(_gameLogic.firstPlayerState);
|
_gameLogic.SetState(_gameLogic.firstPlayerState);
|
||||||
}
|
}
|
||||||
|
//유저 이름 Game UI에 초기화
|
||||||
|
public void InitPlayersName(string playerNameA, string playerNameB)
|
||||||
|
{
|
||||||
|
if (_gameUIController == null) return;
|
||||||
|
_gameUIController.InitPlayersName(playerNameA, playerNameB);
|
||||||
|
}
|
||||||
|
//유저 프로필 이미지 Game UI에 초기화
|
||||||
|
public void InitProfileImages(int profileImageIndexA, int profileImageIndexB)
|
||||||
|
{
|
||||||
|
if (_gameUIController == null) return;
|
||||||
|
_gameUIController.InitProfileImages(profileImageIndexA, profileImageIndexB);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetTurnIndicator(bool isFirstPlayer)
|
||||||
|
{
|
||||||
|
if (_gameUIController == null) return;
|
||||||
|
_gameUIController.SetTurnIndicator(isFirstPlayer);
|
||||||
|
}
|
||||||
}
|
}
|
@ -14,4 +14,7 @@ EditorBuildSettings:
|
|||||||
- enabled: 1
|
- enabled: 1
|
||||||
path: Assets/Scenes/Replay.unity
|
path: Assets/Scenes/Replay.unity
|
||||||
guid: 393dbf55b04641847ae9b882a54856af
|
guid: 393dbf55b04641847ae9b882a54856af
|
||||||
|
- enabled: 1
|
||||||
|
path: Assets/LYC/GameLYC.unity
|
||||||
|
guid: 2fe8a02a96ca80b4493a6885b1edffc2
|
||||||
m_configObjects: {}
|
m_configObjects: {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user