Compare commits
22 Commits
feature/ch
...
master
Author | SHA1 | Date |
---|---|---|
|
8669da076c | |
|
ce58621316 | |
|
abc2cfb3ca | |
|
a2796087f1 | |
|
e04fc50fb6 | |
|
c1a7485647 | |
|
01106842b0 | |
|
c1cbd2c3ff | |
|
4a1c2c344e | |
|
6f0ecab261 | |
|
f3506c37b5 | |
|
97b6749fa6 | |
|
94e8fcd6ef | |
|
34867dc03f | |
|
c2843200a7 | |
|
44fbb00945 | |
|
498beee228 | |
|
fbf84f7007 | |
|
7ed3ab208f | |
|
209917bea2 | |
|
69fa365101 | |
|
e56de50739 |
|
@ -72,3 +72,4 @@ crashlytics-build.properties
|
||||||
/[Aa]ssets/[Ss]treamingAssets/aa.meta
|
/[Aa]ssets/[Ss]treamingAssets/aa.meta
|
||||||
/[Aa]ssets/[Ss]treamingAssets/aa/*
|
/[Aa]ssets/[Ss]treamingAssets/aa/*
|
||||||
|
|
||||||
|
/.idea
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 36e847eb252a40b47a7a08ce6018325e
|
guid: e77ea369962199342b0e376f37cd3ab7
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 287b4831b04b43c40bcd01ea273575e7
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,17 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 70999adc26904334b845df97100da8b1, type: 3}
|
||||||
|
m_Name: 00_Skill_Elephant
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
skillPrefab: {fileID: 3924616633544540249, guid: d1bd1f24581f2cd4aa611b613ef53298, type: 3}
|
||||||
|
skillCoolTime: 1
|
||||||
|
skillStopTime: 0.35
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 041e9e2107537264ab3fb01c4f23df99
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e042717589682a54f9ce41ea0e4f0259
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2ee477d4e8830924dacd274dbee5890a
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,275 @@
|
||||||
|
%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_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
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_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 &1802181444
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1802181447}
|
||||||
|
- component: {fileID: 1802181446}
|
||||||
|
- component: {fileID: 1802181445}
|
||||||
|
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 &1802181445
|
||||||
|
AudioListener:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1802181444}
|
||||||
|
m_Enabled: 1
|
||||||
|
--- !u!20 &1802181446
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1802181444}
|
||||||
|
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 &1802181447
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1802181444}
|
||||||
|
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 &1830898465
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1830898467}
|
||||||
|
- component: {fileID: 1830898466}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: MapGenerator
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &1830898466
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1830898465}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8fdb3db0de214c69a1c56245514dcc63, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
totalRooms: 20
|
||||||
|
mainRoomsCount: 10
|
||||||
|
mapRadius: 60
|
||||||
|
minRoomWidth: 8
|
||||||
|
maxRoomWidth: 16
|
||||||
|
minRoomHeight: 8
|
||||||
|
maxRoomHeight: 16
|
||||||
|
separationIterations: 50
|
||||||
|
roomColor: {r: 0, g: 0, b: 1, a: 1}
|
||||||
|
mainRoomColor: {r: 1, g: 0, b: 0, a: 1}
|
||||||
|
corridorColor: {r: 0.06642128, g: 1, b: 0.043137252, a: 1}
|
||||||
|
--- !u!4 &1830898467
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1830898465}
|
||||||
|
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: 1802181447}
|
||||||
|
- {fileID: 1830898467}
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4dc33b9f5eb3ae34f927ff4f2aeab6cc
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 569493318424c974cb7bad6f56e8939d
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6dec96d472af453888b1a805041198c5
|
||||||
|
timeCreated: 1746711648
|
|
@ -0,0 +1,299 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class MapGenerator : MonoBehaviour
|
||||||
|
{
|
||||||
|
public int totalRooms = 20;
|
||||||
|
public int mainRoomsCount = 10;
|
||||||
|
public float mapRadius = 50f;
|
||||||
|
public float minRoomWidth = 4f;
|
||||||
|
public float maxRoomWidth = 10f;
|
||||||
|
public float minRoomHeight = 4f;
|
||||||
|
public float maxRoomHeight = 10f;
|
||||||
|
public int separationIterations = 10;
|
||||||
|
|
||||||
|
private readonly List<Room> _rooms = new();
|
||||||
|
private List<Room> _mainRooms = new();
|
||||||
|
private readonly List<Connection> _connections = new();
|
||||||
|
private readonly HashSet<Vector2Int> _corridorTiles = new();
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
GenerateMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void GenerateMap()
|
||||||
|
{
|
||||||
|
ClearAll();
|
||||||
|
GenerateRooms();
|
||||||
|
SeparateRooms();
|
||||||
|
SelectMainRooms();
|
||||||
|
ConnectRoomsWithMST();
|
||||||
|
CreateCorridors();
|
||||||
|
|
||||||
|
Debug.Log($"생성된 전체 방 수: {_rooms.Count}");
|
||||||
|
Debug.Log($"메인 방 수: {_mainRooms.Count}");
|
||||||
|
Debug.Log($"연결 수: {_connections.Count}");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ClearAll()
|
||||||
|
{
|
||||||
|
_rooms.Clear();
|
||||||
|
_mainRooms.Clear();
|
||||||
|
_connections.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GenerateRooms()
|
||||||
|
{
|
||||||
|
for (var i = 0; i < totalRooms; i++)
|
||||||
|
{
|
||||||
|
// 랜덤 위치 선택
|
||||||
|
var angle = Random.Range(0f, Mathf.PI * 2);
|
||||||
|
var distance = Random.Range(0f, mapRadius);
|
||||||
|
var position = new Vector2(
|
||||||
|
Mathf.Cos(angle) * distance,
|
||||||
|
Mathf.Sin(angle) * distance
|
||||||
|
);
|
||||||
|
|
||||||
|
// 랜덤 크기 방 생성
|
||||||
|
var width = Random.Range(minRoomWidth, maxRoomWidth);
|
||||||
|
var height = Random.Range(minRoomHeight, maxRoomHeight);
|
||||||
|
|
||||||
|
_rooms.Add(new Room(position, new Vector2(width, height)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SeparateRooms()
|
||||||
|
{
|
||||||
|
for (var iter = 0; iter < separationIterations; iter++)
|
||||||
|
{
|
||||||
|
var stillOverlapping = false;
|
||||||
|
|
||||||
|
for (var i = 0; i < _rooms.Count; i++)
|
||||||
|
for (var j = i + 1; j < _rooms.Count; j++)
|
||||||
|
if (_rooms[i].Overlaps(_rooms[j]))
|
||||||
|
{
|
||||||
|
stillOverlapping = true;
|
||||||
|
|
||||||
|
// 방들이 겹치면 서로 밀어냄
|
||||||
|
var direction = (_rooms[i].Position - _rooms[j].Position).normalized;
|
||||||
|
var overlap = _rooms[i].GetOverlapDistance(_rooms[j]);
|
||||||
|
|
||||||
|
_rooms[i].Position += direction * overlap * 0.5f;
|
||||||
|
_rooms[j].Position -= direction * overlap * 0.5f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 더 이상 겹치는 방이 없으면 종료
|
||||||
|
if (!stillOverlapping) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SelectMainRooms()
|
||||||
|
{
|
||||||
|
// 방 크기에 따라 정렬 (큰 것부터)
|
||||||
|
_rooms.Sort((a, b) => (b.Size.x * b.Size.y).CompareTo(a.Size.x * a.Size.y));
|
||||||
|
|
||||||
|
// 가장 큰 방 mainRoomsCount개만 선택
|
||||||
|
_mainRooms = _rooms.Take(Mathf.Min(mainRoomsCount, _rooms.Count)).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ConnectRoomsWithMST()
|
||||||
|
{
|
||||||
|
var edges = new List<Edge>();
|
||||||
|
|
||||||
|
// 모든 방 쌍에 대해 거리 계산
|
||||||
|
for (var i = 0; i < _mainRooms.Count; i++)
|
||||||
|
for (var j = i + 1; j < _mainRooms.Count; j++)
|
||||||
|
{
|
||||||
|
var dist = Vector2.Distance(_mainRooms[i].Position, _mainRooms[j].Position);
|
||||||
|
edges.Add(new Edge(i, j, dist));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 크루스칼 MST 알고리즘
|
||||||
|
edges.Sort((a, b) => a.Weight.CompareTo(b.Weight));
|
||||||
|
var ds = new DisjointSet(_mainRooms.Count);
|
||||||
|
|
||||||
|
foreach (var edge in edges)
|
||||||
|
if (ds.Find(edge.U) != ds.Find(edge.V))
|
||||||
|
{
|
||||||
|
ds.Union(edge.U, edge.V);
|
||||||
|
_connections.Add(new Connection(_mainRooms[edge.U], _mainRooms[edge.V]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CreateCorridors()
|
||||||
|
{
|
||||||
|
foreach (var conn in _connections)
|
||||||
|
{
|
||||||
|
var roomA = conn.RoomA;
|
||||||
|
var roomB = conn.RoomB;
|
||||||
|
|
||||||
|
// 두 방의 중심점
|
||||||
|
var startPos = Vector2Int.RoundToInt(roomA.Position);
|
||||||
|
var endPos = Vector2Int.RoundToInt(roomB.Position);
|
||||||
|
|
||||||
|
// 두 가지 L자 패턴
|
||||||
|
if (Random.Range(0, 2) == 0)
|
||||||
|
{
|
||||||
|
// 수평 먼저, 수직 나중 ㄱ
|
||||||
|
CreateCorridor(_corridorTiles, startPos, new Vector2Int(endPos.x, startPos.y));
|
||||||
|
CreateCorridor(_corridorTiles, new Vector2Int(endPos.x, startPos.y), endPos);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 수직 먼저, 수평 나중 ┌
|
||||||
|
CreateCorridor(_corridorTiles, startPos, new Vector2Int(startPos.x, endPos.y));
|
||||||
|
CreateCorridor(_corridorTiles, new Vector2Int(startPos.x, endPos.y), endPos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 중복 없는 복도 생성
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="corridorTiles"></param>
|
||||||
|
/// <param name="start"></param>
|
||||||
|
/// <param name="end"></param>
|
||||||
|
private void CreateCorridor(HashSet<Vector2Int> corridorTiles, Vector2Int start, Vector2Int end)
|
||||||
|
{
|
||||||
|
var position = start;
|
||||||
|
var direction = new Vector2Int(
|
||||||
|
Mathf.Clamp(end.x - start.x, -1, 1),
|
||||||
|
Mathf.Clamp(end.y - start.y, -1, 1)
|
||||||
|
);
|
||||||
|
|
||||||
|
while (position != end)
|
||||||
|
{
|
||||||
|
corridorTiles.Add(position);
|
||||||
|
|
||||||
|
// 다음 위치로 이동
|
||||||
|
if (position.x != end.x)
|
||||||
|
position.x += direction.x;
|
||||||
|
else if (position.y != end.y)
|
||||||
|
position.y += direction.y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Debug 테스트용
|
||||||
|
|
||||||
|
public Color roomColor = Color.blue;
|
||||||
|
public Color mainRoomColor = Color.red;
|
||||||
|
public Color corridorColor = Color.green;
|
||||||
|
|
||||||
|
private void OnDrawGizmos()
|
||||||
|
{
|
||||||
|
// 방
|
||||||
|
Gizmos.color = roomColor;
|
||||||
|
foreach (var room in _rooms)
|
||||||
|
{
|
||||||
|
if (_mainRooms.Contains(room))
|
||||||
|
Gizmos.color = mainRoomColor;
|
||||||
|
else
|
||||||
|
Gizmos.color = roomColor;
|
||||||
|
|
||||||
|
Gizmos.DrawWireCube(room.Position, room.Size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 복도
|
||||||
|
Gizmos.color = corridorColor;
|
||||||
|
var tileSize = 1f; // 타일 크기
|
||||||
|
|
||||||
|
if (_corridorTiles != null)
|
||||||
|
foreach (var pos in _corridorTiles)
|
||||||
|
Gizmos.DrawWireCube(new Vector3(pos.x, pos.y, 0),
|
||||||
|
new Vector3(tileSize, tileSize, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Class
|
||||||
|
|
||||||
|
// 방 클래스
|
||||||
|
public class Room
|
||||||
|
{
|
||||||
|
public Vector2 Position;
|
||||||
|
public Vector2 Size;
|
||||||
|
|
||||||
|
public Room(Vector2 pos, Vector2 size)
|
||||||
|
{
|
||||||
|
Position = pos;
|
||||||
|
Size = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Overlaps(Room other)
|
||||||
|
{
|
||||||
|
return !(Position.x + Size.x / 2 < other.Position.x - other.Size.x / 2 ||
|
||||||
|
Position.x - Size.x / 2 > other.Position.x + other.Size.x / 2 ||
|
||||||
|
Position.y + Size.y / 2 < other.Position.y - other.Size.y / 2 ||
|
||||||
|
Position.y - Size.y / 2 > other.Position.y + other.Size.y / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float GetOverlapDistance(Room other)
|
||||||
|
{
|
||||||
|
var dx = Mathf.Min(Position.x + Size.x / 2, other.Position.x + other.Size.x / 2) -
|
||||||
|
Mathf.Max(Position.x - Size.x / 2, other.Position.x - other.Size.x / 2);
|
||||||
|
var dy = Mathf.Min(Position.y + Size.y / 2, other.Position.y + other.Size.y / 2) -
|
||||||
|
Mathf.Max(Position.y - Size.y / 2, other.Position.y - other.Size.y / 2);
|
||||||
|
|
||||||
|
// 실제 겹치는 거리 계산
|
||||||
|
if (dx > 0 && dy > 0)
|
||||||
|
return Mathf.Min(dx, dy) + 0.1f; // 약간의 여유 공간 추가
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 연결 클래스
|
||||||
|
private class Connection
|
||||||
|
{
|
||||||
|
public readonly Room RoomA, RoomB;
|
||||||
|
|
||||||
|
public Connection(Room a, Room b)
|
||||||
|
{
|
||||||
|
RoomA = a;
|
||||||
|
RoomB = b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MST용 간선 클래스
|
||||||
|
private class Edge
|
||||||
|
{
|
||||||
|
public readonly int U, V;
|
||||||
|
public readonly float Weight;
|
||||||
|
|
||||||
|
public Edge(int u, int v, float w)
|
||||||
|
{
|
||||||
|
U = u;
|
||||||
|
V = v;
|
||||||
|
Weight = w;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
// Disjoint Set 자료구조
|
||||||
|
private class DisjointSet
|
||||||
|
{
|
||||||
|
private readonly int[] _parent;
|
||||||
|
|
||||||
|
public DisjointSet(int n)
|
||||||
|
{
|
||||||
|
_parent = new int[n];
|
||||||
|
for (var i = 0; i < n; i++) _parent[i] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Find(int x)
|
||||||
|
{
|
||||||
|
if (_parent[x] == x) return x;
|
||||||
|
return _parent[x] = Find(_parent[x]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Union(int a, int b)
|
||||||
|
{
|
||||||
|
var rootA = Find(a);
|
||||||
|
var rootB = Find(b);
|
||||||
|
if (rootA != rootB) _parent[rootB] = rootA;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8fdb3db0de214c69a1c56245514dcc63
|
||||||
|
timeCreated: 1746712260
|
|
@ -1,4 +1,5 @@
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using static PlayerController;
|
using static PlayerController;
|
||||||
|
|
||||||
|
@ -7,12 +8,13 @@ public class PlayerAttack : MonoBehaviour
|
||||||
Animator animator;
|
Animator animator;
|
||||||
PlayerController controller;
|
PlayerController controller;
|
||||||
public float attackTime = 0.5f; // 공격 후 쿨다운
|
public float attackTime = 0.5f; // 공격 후 쿨다운
|
||||||
|
public float attackCoolTime = 0.5f;
|
||||||
|
|
||||||
private int attackCount = 0; // 현재 공격 횟수
|
private int attackCount = 0; // 현재 공격 횟수
|
||||||
private float lastAttackTime;
|
|
||||||
private bool canAttack = true;
|
|
||||||
private int attackIdx = 0; // 공격 애니메이션 인덱스 (0,1 반복)
|
private int attackIdx = 0; // 공격 애니메이션 인덱스 (0,1 반복)
|
||||||
|
|
||||||
private string[] anim_Strings = { "AttackIdx", "AttackState", "idleState" };
|
private bool canAttack = true;
|
||||||
|
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
|
@ -21,48 +23,55 @@ public class PlayerAttack : MonoBehaviour
|
||||||
PlayManager.Instance.leftMouve += Attack;
|
PlayManager.Instance.leftMouve += Attack;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
if (controller.playerState == PlayerState.Dash) return;
|
|
||||||
|
|
||||||
if (attackCount > 0 && Time.time - lastAttackTime >= attackTime)
|
|
||||||
{
|
|
||||||
AttackStop(); // ÀϹÝÀûÀÎ °æ¿ì´Â ±×³É AttackStop()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Attack()
|
void Attack()
|
||||||
{
|
{
|
||||||
if(!canAttack) return;
|
if(!canAttack || controller.playerState == PlayerState.Skill) return;
|
||||||
controller.playerState = PlayerState.Attack;
|
controller.playerState = PlayerState.Attack;
|
||||||
lastAttackTime = Time.time;
|
|
||||||
attackCount++;
|
attackCount++;
|
||||||
|
|
||||||
Debug.Log($"Attack Count: {attackCount}, Attack Index: {attackIdx}");
|
|
||||||
|
|
||||||
animator.SetInteger(anim_Strings[0], attackIdx);
|
animator.SetInteger("AttackIdx", attackIdx);
|
||||||
attackIdx = (attackIdx + 1) % 2;
|
attackIdx = (attackIdx + 1) % 2;
|
||||||
|
|
||||||
AttackRot();
|
AttackRot();
|
||||||
animator.SetFloat(anim_Strings[1], controller.idleState);
|
animator.SetFloat("idleState", controller.idleState);
|
||||||
|
if(coroutine != null)
|
||||||
|
{
|
||||||
|
StopCoroutine(coroutine);
|
||||||
|
coroutine = StartCoroutine(AttackStopCoroutin());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
coroutine = StartCoroutine(AttackStopCoroutin());
|
||||||
|
}
|
||||||
|
|
||||||
if (attackCount >= 3)
|
if (attackCount >= 3)
|
||||||
{
|
{
|
||||||
StartCoroutine(AttackCooldown()); // 마지막 공격이면 쿨다운 실행
|
StartCoroutine(AttackCooldown()); // 마지막 공격이면 쿨다운 실행
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Coroutine coroutine;
|
||||||
public void AttackStop()
|
IEnumerator AttackStopCoroutin()
|
||||||
|
{
|
||||||
|
yield return new WaitForSeconds(attackTime);
|
||||||
|
AttackStop();
|
||||||
|
}
|
||||||
|
private void AttackStop()
|
||||||
{
|
{
|
||||||
attackCount = 0;
|
attackCount = 0;
|
||||||
controller.playerState = PlayerState.Idle;
|
controller.playerState = PlayerState.Idle;
|
||||||
animator.SetInteger(anim_Strings[0], -1);
|
animator.SetInteger("AttackIdx", -1);
|
||||||
|
}
|
||||||
|
public void AttackInitialized()
|
||||||
|
{
|
||||||
|
attackCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerator AttackCooldown()
|
IEnumerator AttackCooldown()
|
||||||
{
|
{
|
||||||
canAttack = false;
|
canAttack = false;
|
||||||
yield return new WaitForSeconds(attackTime);
|
yield return new WaitForSeconds(attackCoolTime);
|
||||||
AttackStop(); // 마지막 공격 후 Stop
|
AttackStop(); // 마지막 공격 후 Stop
|
||||||
canAttack = true;
|
canAttack = true;
|
||||||
}
|
}
|
||||||
|
@ -77,19 +86,19 @@ public class PlayerAttack : MonoBehaviour
|
||||||
if (Mathf.Abs(mouseScreenPos.x - playerScreenPos.x) > Mathf.Abs(mouseScreenPos.y - playerScreenPos.y))
|
if (Mathf.Abs(mouseScreenPos.x - playerScreenPos.x) > Mathf.Abs(mouseScreenPos.y - playerScreenPos.y))
|
||||||
{
|
{
|
||||||
transform.GetChild(0).localEulerAngles = isLeft ? new Vector3(0, 180, 0) : new Vector3(0, 0, 0);
|
transform.GetChild(0).localEulerAngles = isLeft ? new Vector3(0, 180, 0) : new Vector3(0, 0, 0);
|
||||||
animator.SetFloat(anim_Strings[2], 1);
|
animator.SetFloat("AttackState", 1);
|
||||||
controller.idleState = 1f;
|
controller.idleState = 1f;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (mouseScreenPos.y > playerScreenPos.y)
|
if (mouseScreenPos.y > playerScreenPos.y)
|
||||||
{
|
{
|
||||||
animator.SetFloat(anim_Strings[2], 0.5f);
|
animator.SetFloat("AttackState", 0.5f);
|
||||||
controller.idleState = 2f / 3f;
|
controller.idleState = 2f / 3f;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
animator.SetFloat(anim_Strings[2], 0);
|
animator.SetFloat("AttackState", 0);
|
||||||
controller.idleState = 1f / 3f;
|
controller.idleState = 1f / 3f;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -11,10 +11,9 @@ public class PlayerController : MonoBehaviour
|
||||||
public float accelerationTime = 2f; // 2초 동안 가속
|
public float accelerationTime = 2f; // 2초 동안 가속
|
||||||
public float dashTime = 0.5f;
|
public float dashTime = 0.5f;
|
||||||
public float moveTime = 0f; // 이동한 시간
|
public float moveTime = 0f; // 이동한 시간
|
||||||
public enum PlayerState { Idle, Walking, Dash, Attack }
|
public enum PlayerState { Idle, Walking, Dash, Attack, Skill }
|
||||||
public PlayerState playerState;
|
public PlayerState playerState;
|
||||||
private Vector2 moveDirection = Vector2.zero; // 현재 이동 방향
|
private Vector2 moveDirection = Vector2.zero; // 현재 이동 방향
|
||||||
private string[] anim_Strings = { "PosX", "PosY", "idleState" };
|
|
||||||
PlayerAttack playerAttack;
|
PlayerAttack playerAttack;
|
||||||
Animator animator;
|
Animator animator;
|
||||||
|
|
||||||
|
@ -43,7 +42,7 @@ public class PlayerController : MonoBehaviour
|
||||||
// 이동 처리
|
// 이동 처리
|
||||||
void HandleMovement()
|
void HandleMovement()
|
||||||
{
|
{
|
||||||
if (playerState == PlayerState.Dash || playerState == PlayerState.Attack) return;
|
if (playerState == PlayerState.Dash || playerState == PlayerState.Attack || playerState == PlayerState.Skill) return;
|
||||||
moveDirection = Vector2.zero; // 매 프레임 초기화
|
moveDirection = Vector2.zero; // 매 프레임 초기화
|
||||||
|
|
||||||
if (Input.GetKey(KeyCode.A)) moveDirection += Vector2.left;
|
if (Input.GetKey(KeyCode.A)) moveDirection += Vector2.left;
|
||||||
|
@ -65,13 +64,13 @@ public class PlayerController : MonoBehaviour
|
||||||
// A 또는 D가 눌린 상태라면 Side 애니메이션을 우선 적용
|
// A 또는 D가 눌린 상태라면 Side 애니메이션을 우선 적용
|
||||||
if (moveDirection.x != 0)
|
if (moveDirection.x != 0)
|
||||||
{
|
{
|
||||||
animator.SetFloat(anim_Strings[0], 1);
|
animator.SetFloat("PosX", 1);
|
||||||
animator.SetFloat(anim_Strings[1], 0);
|
animator.SetFloat("PosY", 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
animator.SetFloat(anim_Strings[0], 0);
|
animator.SetFloat("PosX", 0);
|
||||||
animator.SetFloat(anim_Strings[1], moveDirection.y);
|
animator.SetFloat("PosY", moveDirection.y);
|
||||||
}
|
}
|
||||||
// 회전 처리
|
// 회전 처리
|
||||||
if (Mathf.Abs(moveDirection.x) > 0)
|
if (Mathf.Abs(moveDirection.x) > 0)
|
||||||
|
@ -84,9 +83,9 @@ public class PlayerController : MonoBehaviour
|
||||||
// 이동하지 않으면 Idle 상태를 설정
|
// 이동하지 않으면 Idle 상태를 설정
|
||||||
moveTime = 0f;
|
moveTime = 0f;
|
||||||
animator.SetBool("isWalking", false);
|
animator.SetBool("isWalking", false);
|
||||||
animator.SetFloat(anim_Strings[0], 0);
|
animator.SetFloat("PosX", 0);
|
||||||
animator.SetFloat(anim_Strings[1], 0);
|
animator.SetFloat("PosY", 0);
|
||||||
animator.SetFloat(anim_Strings[2], idleState);
|
animator.SetFloat("idleState", idleState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void PlayerRot(Vector2 direction)
|
private void PlayerRot(Vector2 direction)
|
||||||
|
@ -119,7 +118,7 @@ public class PlayerController : MonoBehaviour
|
||||||
{
|
{
|
||||||
playerState = PlayerState.Dash;
|
playerState = PlayerState.Dash;
|
||||||
animator.SetTrigger("DodgeTrigger");
|
animator.SetTrigger("DodgeTrigger");
|
||||||
playerAttack.AttackStop();
|
playerAttack.AttackInitialized();
|
||||||
moveTime = 0f;
|
moveTime = 0f;
|
||||||
StartCoroutine(DashCoroutine()); // 대시 시작
|
StartCoroutine(DashCoroutine()); // 대시 시작
|
||||||
}
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 2ae509d2e75631f4b9fcbd8dca5522ca
|
guid: f5ce1188e2abd3c45b15851146565423
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
|
@ -0,0 +1,39 @@
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class PlayerManager : MonoBehaviour
|
||||||
|
{
|
||||||
|
public static PlayerManager Instance { get; private set; }
|
||||||
|
|
||||||
|
[SerializeField] private GameObject playerPrefab;
|
||||||
|
private GameObject playerInstance;
|
||||||
|
|
||||||
|
public GameObject Player => playerInstance;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
Instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
if (playerInstance == null && playerPrefab != null)
|
||||||
|
{
|
||||||
|
playerInstance = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity, transform);
|
||||||
|
}
|
||||||
|
else if (playerInstance == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("Player Prefab이 할당되지 않았습니다!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Player 스크립트 참조 쉽게 하는 편의 메서드
|
||||||
|
public T GetPlayerComponent<T>() where T : Component
|
||||||
|
{
|
||||||
|
if (playerInstance == null)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("플레이어 인스턴스가 존재하지 않습니다.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return playerInstance.GetComponent<T>();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: bef09ddb9b84450459beff37469910fa
|
guid: 9c517b86a0d4b4f47a1685a6973f0c06
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
|
@ -0,0 +1,127 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Events;
|
||||||
|
|
||||||
|
public class PlayerSkill : MonoBehaviour
|
||||||
|
{
|
||||||
|
private Animator animator;
|
||||||
|
private PlayerController playerController;
|
||||||
|
public Dictionary<SkillKeyType, SkillData> skillList = new Dictionary<SkillKeyType, SkillData>();
|
||||||
|
public enum SkillKeyType { M_Right, Q, E, R, T }
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
playerController = GetComponent<PlayerController>();
|
||||||
|
animator = GetComponentInChildren<Animator>();
|
||||||
|
PlayManager.Instance.rightMouve += Skill_Right;
|
||||||
|
PlayManager.Instance.keySdown += Skill_Q;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Skill_Right()
|
||||||
|
{
|
||||||
|
BaseSkill(SkillKeyType.M_Right);
|
||||||
|
}
|
||||||
|
private void Skill_Q()
|
||||||
|
{
|
||||||
|
BaseSkill(SkillKeyType.Q);
|
||||||
|
}
|
||||||
|
public void BaseSkill(SkillKeyType skillKeyType)
|
||||||
|
{
|
||||||
|
if (!skillList.ContainsKey(skillKeyType)) return;
|
||||||
|
SkillData skillData = skillList[skillKeyType];
|
||||||
|
if (skillData != null && skillData.currentCoolTime == 0)
|
||||||
|
{
|
||||||
|
playerController.playerState = PlayerController.PlayerState.Skill;
|
||||||
|
SkillRot();
|
||||||
|
skillData.skillBase.Active(this);
|
||||||
|
StartCoroutine(SkillCoolTime(skillData, skillData.skillBase.skillCoolTime));
|
||||||
|
StartCoroutine(SkillStop(skillData.skillBase.skillStopTime));
|
||||||
|
Debug.Log(123);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
IEnumerator SkillStop(float time)
|
||||||
|
{
|
||||||
|
yield return new WaitForSeconds(time);
|
||||||
|
Debug.Log(123);
|
||||||
|
animator.SetInteger("SkillIdx", -1);
|
||||||
|
playerController.playerState = PlayerController.PlayerState.Idle;
|
||||||
|
}
|
||||||
|
IEnumerator SkillCoolTime(SkillData skillData,float time)
|
||||||
|
{
|
||||||
|
skillData.currentCoolTime = time;
|
||||||
|
yield return new WaitForSeconds(time);
|
||||||
|
skillData.currentCoolTime = 0;
|
||||||
|
}
|
||||||
|
public void SkillAdd(SkillBase skill, SkillKeyType skillKeyType)
|
||||||
|
{
|
||||||
|
if (!skillList.ContainsKey(skillKeyType))
|
||||||
|
{
|
||||||
|
skillList[skillKeyType] = new SkillData(skill);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
skillList[skillKeyType].skillBase = skill;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void Skill_Anim(int idx)
|
||||||
|
{
|
||||||
|
animator.SetInteger("SkillIdx", idx);
|
||||||
|
}
|
||||||
|
public void SkillRot()
|
||||||
|
{
|
||||||
|
Vector3 playerScreenPos = Camera.main.WorldToScreenPoint(transform.position);
|
||||||
|
Vector3 mouseScreenPos = Input.mousePosition;
|
||||||
|
|
||||||
|
bool isLeft = mouseScreenPos.x < playerScreenPos.x;
|
||||||
|
|
||||||
|
if (Mathf.Abs(mouseScreenPos.x - playerScreenPos.x) > Mathf.Abs(mouseScreenPos.y - playerScreenPos.y))
|
||||||
|
{
|
||||||
|
transform.GetChild(0).localEulerAngles = isLeft ? new Vector3(0, 180, 0) : new Vector3(0, 0, 0);
|
||||||
|
animator.SetFloat("AttackState", 1);
|
||||||
|
playerController.idleState = 1f;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (mouseScreenPos.y > playerScreenPos.y)
|
||||||
|
{
|
||||||
|
animator.SetFloat("AttackState", 0.5f);
|
||||||
|
playerController.idleState = 2f / 3f;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
animator.SetFloat("AttackState", 0);
|
||||||
|
playerController.idleState = 1f / 3f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public Vector3 GetSkillDirection()
|
||||||
|
{
|
||||||
|
Vector3 playerScreenPos = Camera.main.WorldToScreenPoint(transform.position);
|
||||||
|
Vector3 mouseScreenPos = Input.mousePosition;
|
||||||
|
|
||||||
|
Vector3 direction = (mouseScreenPos - playerScreenPos).normalized;
|
||||||
|
direction.z = 0; // 2D ±âÁØÀ̸é z´Â 0À¸·Î
|
||||||
|
return direction;
|
||||||
|
}
|
||||||
|
|
||||||
|
private SkillData FindSkillData(SkillBase skillBase)
|
||||||
|
{
|
||||||
|
foreach (var pair in skillList)
|
||||||
|
{
|
||||||
|
if (pair.Value.skillBase == skillBase)
|
||||||
|
return pair.Value;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public class SkillData
|
||||||
|
{
|
||||||
|
public SkillBase skillBase;
|
||||||
|
public float currentCoolTime;
|
||||||
|
|
||||||
|
public SkillData(SkillBase baseSkill)
|
||||||
|
{
|
||||||
|
skillBase = baseSkill;
|
||||||
|
currentCoolTime = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: da150243b9548f44682c6e00a7d1e9ed
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -4,9 +4,6 @@ using UnityEngine;
|
||||||
|
|
||||||
public class SoundBox : MonoBehaviour
|
public class SoundBox : MonoBehaviour
|
||||||
{
|
{
|
||||||
// TODO SoundBox 프리펩 만들어주기
|
|
||||||
//사운드를 출력을 도와주는 스크립트 입니다.
|
|
||||||
//건들이지 않는것을 추천드립니다.
|
|
||||||
AudioSource Sound;
|
AudioSource Sound;
|
||||||
void Awake()
|
void Awake()
|
||||||
{
|
{
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4842e5bc1cca863418d9309ca2d32cd8
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,13 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class ObjOffAfterTime : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] float time;
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
Invoke("ObjOff", time);
|
||||||
|
}
|
||||||
|
void ObjOff() { gameObject.SetActive(false); }
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 184f2910ee922884b8ab520482eb0ed0
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0db40d2fd3d03fc439f0739a1ed85c6d
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,94 @@
|
||||||
|
using Cysharp.Threading.Tasks;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
||||||
|
public interface IAsyncState
|
||||||
|
{
|
||||||
|
UniTask Enter();
|
||||||
|
UniTask Execute();
|
||||||
|
UniTask Exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AsyncStateMachine
|
||||||
|
{
|
||||||
|
private IAsyncState currentState;
|
||||||
|
private Dictionary<IAsyncState, List<Transition>> transitions = new Dictionary<IAsyncState, List<Transition>>();
|
||||||
|
private List<Transition> globalTransitions = new List<Transition>();
|
||||||
|
|
||||||
|
public async UniTask ChangeState(IAsyncState newState)
|
||||||
|
{
|
||||||
|
if (newState == currentState)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentState != null)
|
||||||
|
{
|
||||||
|
await currentState.Exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
currentState = newState;
|
||||||
|
|
||||||
|
if (currentState != null)
|
||||||
|
{
|
||||||
|
await currentState.Enter();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async UniTask Update()
|
||||||
|
{
|
||||||
|
foreach (var transition in globalTransitions)
|
||||||
|
{
|
||||||
|
if (transition.Condition())
|
||||||
|
{
|
||||||
|
await ChangeState(transition.TargetState);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentState != null && transitions.ContainsKey(currentState))
|
||||||
|
{
|
||||||
|
foreach (var transition in transitions[currentState])
|
||||||
|
{
|
||||||
|
if (transition.Condition())
|
||||||
|
{
|
||||||
|
await ChangeState(transition.TargetState);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentState != null)
|
||||||
|
{
|
||||||
|
await currentState.Execute();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddTransition(IAsyncState fromState, IAsyncState toState, Func<bool> condition)
|
||||||
|
{
|
||||||
|
if (!transitions.ContainsKey(fromState))
|
||||||
|
{
|
||||||
|
transitions[fromState] = new List<Transition>();
|
||||||
|
}
|
||||||
|
transitions[fromState].Add(new Transition(toState, condition));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddGlobalTransition(IAsyncState toState, Func<bool> condition)
|
||||||
|
{
|
||||||
|
globalTransitions.Add(new Transition(toState, condition));
|
||||||
|
}
|
||||||
|
|
||||||
|
private class Transition
|
||||||
|
{
|
||||||
|
public IAsyncState TargetState { get; }
|
||||||
|
public Func<bool> Condition { get; }
|
||||||
|
|
||||||
|
public Transition(IAsyncState targetState, Func<bool> condition)
|
||||||
|
{
|
||||||
|
TargetState = targetState;
|
||||||
|
Condition = condition;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 990671db329eb1043bab4ecac29c9221
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,103 @@
|
||||||
|
using Cysharp.Threading.Tasks;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
public interface IAsyncState<T>
|
||||||
|
{
|
||||||
|
UniTask Enter(T context);
|
||||||
|
UniTask Execute(T context);
|
||||||
|
UniTask Exit(T context);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AsyncStateMachine<T>
|
||||||
|
{
|
||||||
|
private IAsyncState<T> currentState;
|
||||||
|
private Dictionary<IAsyncState<T>, List<Transition>> transitions = new Dictionary<IAsyncState<T>, List<Transition>>();
|
||||||
|
private List<Transition> globalTransitions = new List<Transition>();
|
||||||
|
|
||||||
|
public async UniTask ChangeState(IAsyncState<T> newState, T context)
|
||||||
|
{
|
||||||
|
if (newState == currentState)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (currentState != null)
|
||||||
|
{
|
||||||
|
await currentState.Exit(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Debug.Log($"{context} -> {currentState} -> {newState}");
|
||||||
|
currentState = newState;
|
||||||
|
|
||||||
|
if (currentState != null)
|
||||||
|
{
|
||||||
|
await currentState.Enter(context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async UniTask Update(T context)
|
||||||
|
{
|
||||||
|
foreach (var transition in globalTransitions)
|
||||||
|
{
|
||||||
|
if (transition.Condition())
|
||||||
|
{
|
||||||
|
await ChangeState(transition.TargetState, context);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentState != null && transitions.ContainsKey(currentState))
|
||||||
|
{
|
||||||
|
foreach (var transition in transitions[currentState])
|
||||||
|
{
|
||||||
|
if (transition.Condition())
|
||||||
|
{
|
||||||
|
await ChangeState(transition.TargetState, context);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentState != null)
|
||||||
|
{
|
||||||
|
await currentState.Execute(context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddTransition(IAsyncState<T> fromState, IAsyncState<T> toState, Func<bool> condition)
|
||||||
|
{
|
||||||
|
if (!transitions.ContainsKey(fromState))
|
||||||
|
{
|
||||||
|
transitions[fromState] = new List<Transition>();
|
||||||
|
}
|
||||||
|
transitions[fromState].Add(new Transition(toState, condition));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddGlobalTransition(IAsyncState<T> toState, Func<bool> condition)
|
||||||
|
{
|
||||||
|
globalTransitions.Add(new Transition(toState, condition));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 상태머신 내부 데이터를 초기화합니다.
|
||||||
|
/// </summary>
|
||||||
|
public void Clear()
|
||||||
|
{
|
||||||
|
currentState = null;
|
||||||
|
transitions.Clear();
|
||||||
|
globalTransitions.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private class Transition
|
||||||
|
{
|
||||||
|
public IAsyncState<T> TargetState { get; }
|
||||||
|
public Func<bool> Condition { get; }
|
||||||
|
|
||||||
|
public Transition(IAsyncState<T> targetState, Func<bool> condition)
|
||||||
|
{
|
||||||
|
TargetState = targetState;
|
||||||
|
Condition = condition;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8d6e9c874a25bd84996c716c294b629c
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,91 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using Unity.Profiling;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public static class EventAggregator
|
||||||
|
{
|
||||||
|
// 타입별 SubscriberList<T> 저장
|
||||||
|
static readonly Dictionary<Type, object> subscribers = new Dictionary<Type, object>();
|
||||||
|
|
||||||
|
// Publish 성능 측정을 위한 profiler marker
|
||||||
|
static readonly ProfilerMarker publishMarker = new ProfilerMarker("EventAggregator.Publish");
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 이벤트 타입 T를 구독합니다.
|
||||||
|
/// </summary>
|
||||||
|
public static void Subscribe<T>(Action<T> handler)
|
||||||
|
{
|
||||||
|
var key = typeof(T);
|
||||||
|
if (!subscribers.TryGetValue(key, out var listObj))
|
||||||
|
{
|
||||||
|
listObj = new SubscriberList<T>(initialCapacity: 4);
|
||||||
|
subscribers[key] = listObj;
|
||||||
|
}
|
||||||
|
((SubscriberList<T>)listObj).Add(handler);
|
||||||
|
|
||||||
|
Logger.LogDebug($"[EA] Subscribe<{key.Name}> → {handler.Target?.GetType().Name}.{handler.Method.Name}");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 이벤트 타입 T의 구독을 해제합니다.
|
||||||
|
/// </summary>
|
||||||
|
public static void Unsubscribe<T>(Action<T> handler)
|
||||||
|
{
|
||||||
|
var key = typeof(T);
|
||||||
|
if (subscribers.TryGetValue(key, out var listObj))
|
||||||
|
((SubscriberList<T>)listObj).Remove(handler);
|
||||||
|
|
||||||
|
Logger.LogDebug($"[EA] Unsubscribe<{key.Name}> ← {handler.Target?.GetType().Name}.{handler.Method.Name}");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 이벤트를 발행합니다.
|
||||||
|
/// </summary>
|
||||||
|
public static void Publish<T>(in T payload)
|
||||||
|
{
|
||||||
|
var key = typeof(T);
|
||||||
|
Logger.LogDebug($"[EA] Publish<{key.Name}> payload={payload}");
|
||||||
|
|
||||||
|
publishMarker.Begin();
|
||||||
|
if (subscribers.TryGetValue(key, out var listObj))
|
||||||
|
((SubscriberList<T>)listObj).Invoke(payload);
|
||||||
|
publishMarker.End();
|
||||||
|
}
|
||||||
|
|
||||||
|
class SubscriberList<T>
|
||||||
|
{
|
||||||
|
readonly List<Action<T>> handlers;
|
||||||
|
|
||||||
|
public SubscriberList(int initialCapacity)
|
||||||
|
{
|
||||||
|
handlers = new List<Action<T>>(initialCapacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Add(Action<T> handler) => handlers.Add(handler);
|
||||||
|
public void Remove(Action<T> handler) => handlers.Remove(handler);
|
||||||
|
|
||||||
|
public void Invoke(in T payload)
|
||||||
|
{
|
||||||
|
for (int i = 0, cnt = handlers.Count; i < cnt; i++)
|
||||||
|
{
|
||||||
|
#if UNITY_EDITOR || DEVELOPMENT_BUILD
|
||||||
|
try
|
||||||
|
{
|
||||||
|
handlers[i].Invoke(payload);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// 오류는 항상 남기되, 로깅 메커니즘을 통일
|
||||||
|
Logger.LogError($"[EA] Exception in <{typeof(T).Name}> handler: {ex}");
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
_handlers[i].Invoke(payload);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1bdb5ee5978824342bf8f70083212f3b
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,53 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Text;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Debug.Log을 좀 더 편하게 사용하기 위한 헬퍼 클래스입니다.
|
||||||
|
/// </summary>
|
||||||
|
public static class Logger
|
||||||
|
{
|
||||||
|
public enum Level { Debug, Info, Warning, Error }
|
||||||
|
|
||||||
|
// 릴리즈 빌드에서 불필요한 스택트레이스 끄기
|
||||||
|
static Logger()
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR && !DEVELOPMENT_BUILD
|
||||||
|
Application.SetStackTraceLogType(LogType.Log, StackTraceLogType.None);
|
||||||
|
Application.SetStackTraceLogType(LogType.Warning,StackTraceLogType.None);
|
||||||
|
Application.SetStackTraceLogType(LogType.Error, StackTraceLogType.ScriptOnly);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
// 에디터/개발 빌드에서만 컴파일됨 → 릴리즈에선 이 호출 자체가 사라집니다
|
||||||
|
[Conditional("UNITY_EDITOR"), Conditional("DEVELOPMENT_BUILD")]
|
||||||
|
public static void LogDebug(object message, UnityEngine.Object context = null) => LogInternal(Level.Debug, message, context);
|
||||||
|
|
||||||
|
[Conditional("UNITY_EDITOR"), Conditional("DEVELOPMENT_BUILD")]
|
||||||
|
public static void LogInfo(object message, UnityEngine.Object context = null) => LogInternal(Level.Info, message, context);
|
||||||
|
|
||||||
|
[Conditional("UNITY_EDITOR"), Conditional("DEVELOPMENT_BUILD")]
|
||||||
|
public static void LogWarning(object message, UnityEngine.Object context = null) => LogInternal(Level.Warning, message, context);
|
||||||
|
|
||||||
|
// 에러는 항상 남겨둡니다
|
||||||
|
public static void LogError(object message, UnityEngine.Object context = null) => LogInternal(Level.Error, message, context);
|
||||||
|
|
||||||
|
static void LogInternal(Level level, object message, UnityEngine.Object context = null)
|
||||||
|
{
|
||||||
|
switch (level)
|
||||||
|
{
|
||||||
|
case Level.Debug:
|
||||||
|
case Level.Info:
|
||||||
|
UnityEngine.Debug.Log(message, context);
|
||||||
|
break;
|
||||||
|
case Level.Warning:
|
||||||
|
UnityEngine.Debug.LogWarning(message, context);
|
||||||
|
break;
|
||||||
|
case Level.Error:
|
||||||
|
UnityEngine.Debug.LogError(message, context);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 49e767187741d7a44a8d5a4997eeb9fe
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,20 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
public class Singleton<T> where T : class, new()
|
||||||
|
{
|
||||||
|
private static readonly Lazy<T> instance = new Lazy<T>(() => new T(), true);
|
||||||
|
|
||||||
|
public static T Instance => instance.Value;
|
||||||
|
|
||||||
|
protected Singleton()
|
||||||
|
{
|
||||||
|
if (instance.IsValueCreated)
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("Singleton instance already created.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d9867a93428506e49a36d6ed9da583c5
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,192 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using ClosedXML.Excel;
|
||||||
|
|
||||||
|
public class Excel
|
||||||
|
{
|
||||||
|
private List<Sheet> datas;
|
||||||
|
public List<Sheet> getDatas { get { return datas; } }
|
||||||
|
|
||||||
|
#region Dynamic
|
||||||
|
//이러한 형태로 사용할것
|
||||||
|
public Dynamic dynamic;
|
||||||
|
|
||||||
|
public class Dynamic
|
||||||
|
{
|
||||||
|
List<Data> datas;
|
||||||
|
|
||||||
|
public float selectVelue(string name)
|
||||||
|
{
|
||||||
|
return datas.Find(n => n.name.Equals(name)).velue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Dynamic(Sheet sheet)
|
||||||
|
{
|
||||||
|
datas = new List<Data>();
|
||||||
|
foreach (var item in sheet.dicViewer)
|
||||||
|
{
|
||||||
|
Data data = new Data((string)item.Value["name"], (float)item.Value["velue"]);
|
||||||
|
datas.Add(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Data
|
||||||
|
{
|
||||||
|
public string name;
|
||||||
|
public float velue;
|
||||||
|
|
||||||
|
public Data(string name, float velue)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
this.velue = velue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public Excel(List<string> fileNames)
|
||||||
|
{
|
||||||
|
ExcelManager excel = new ExcelManager();
|
||||||
|
|
||||||
|
excel.Add(fileNames);
|
||||||
|
|
||||||
|
datas = excel.Play();
|
||||||
|
|
||||||
|
dynamic = new Dynamic(datas.Find(n => n.name.Equals("Dynamic")));
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Sheet
|
||||||
|
{
|
||||||
|
string _name;
|
||||||
|
public string name { get { return _name; } }
|
||||||
|
List<string> _variable;
|
||||||
|
public List<string> variable { get { return _variable; } }
|
||||||
|
List<string> _dataEnum;
|
||||||
|
public List<string> dataEnum { get { return _dataEnum; } }
|
||||||
|
List<string> _type;
|
||||||
|
public List<string> type { get { return _type; } }
|
||||||
|
Dictionary<long, Dictionary<string, object>> _dicViewer;
|
||||||
|
public Dictionary<long, Dictionary<string, object>> dicViewer { get { return _dicViewer; } }
|
||||||
|
|
||||||
|
public Sheet(string name, List<string> variable, List<string> dataEnum, List<string> type, Dictionary<long, Dictionary<string, object>> dicViewer)
|
||||||
|
{
|
||||||
|
this._name = name;
|
||||||
|
this._variable = variable;
|
||||||
|
this._dataEnum = dataEnum;
|
||||||
|
this._type = type;
|
||||||
|
this._dicViewer = dicViewer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public Sheet(Sheet sheet)
|
||||||
|
{
|
||||||
|
this._name = new string(sheet.name);
|
||||||
|
this._variable = new List<string>(sheet.variable);
|
||||||
|
this._dataEnum = new List<string>(sheet.dataEnum);
|
||||||
|
this._type = new List<string>(type);
|
||||||
|
this._dicViewer = new Dictionary<long, Dictionary<string, object>>(dicViewer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ExcelManager
|
||||||
|
{
|
||||||
|
readonly string path = Application.dataPath + "/07_Excel/";
|
||||||
|
|
||||||
|
List<Sheet> _sheets;
|
||||||
|
|
||||||
|
List<string> readList;
|
||||||
|
|
||||||
|
public ExcelManager()
|
||||||
|
{
|
||||||
|
_sheets = new List<Sheet>();
|
||||||
|
readList = new List<string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Add(List<string> files)
|
||||||
|
{
|
||||||
|
foreach (string file in files)
|
||||||
|
{
|
||||||
|
readList.Add(path + file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Sheet> Play()
|
||||||
|
{
|
||||||
|
for (int n = 0; n < readList.Count; n++)
|
||||||
|
if (!ExcelLoad(readList[n]))
|
||||||
|
return null;
|
||||||
|
return _sheets;
|
||||||
|
}
|
||||||
|
public bool ExcelLoad(string pathFile)
|
||||||
|
{
|
||||||
|
_sheets = new List<Sheet>();
|
||||||
|
// 엑셀 파일을 엽니다.
|
||||||
|
using (var workbook = new XLWorkbook(pathFile))
|
||||||
|
{
|
||||||
|
// 모든 워크시트를 반복합니다.
|
||||||
|
foreach (var worksheet in workbook.Worksheets)
|
||||||
|
{
|
||||||
|
// 변수 이름, 데이터 타입, 데이터 열거형, 딕셔너리 초기화
|
||||||
|
var variable = new List<string>(); // 변수명
|
||||||
|
var dataEnum = new List<string>(); // server와 client를 나눌 기준
|
||||||
|
var type = new List<string>(); // 변수 타입
|
||||||
|
var dicViewer = new Dictionary<long, Dictionary<string, object>>();
|
||||||
|
|
||||||
|
// 행과 열의 수 얻기
|
||||||
|
var vertical = worksheet.RangeUsed().RowCount() - 1; // 데이터가 있는 행의 수
|
||||||
|
var horizontal = worksheet.RangeUsed().ColumnCount() - 1; // 데이터가 있는 열의 수
|
||||||
|
|
||||||
|
// 변수 이름과 타입을 삽입
|
||||||
|
for (int n = 0; n <= horizontal; n++)
|
||||||
|
{
|
||||||
|
variable.Add(worksheet.Cell(1, n + 1).GetValue<string>());
|
||||||
|
type.Add(worksheet.Cell(4, n + 1).GetValue<string>().ToLower());
|
||||||
|
dataEnum.Add(worksheet.Cell(3, n + 1).GetValue<string>().ToLower());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isIndex = variable[0] == "index";
|
||||||
|
|
||||||
|
for (int n = 5; n <= vertical + 1; n++)
|
||||||
|
{
|
||||||
|
var dataList = new Dictionary<string, object>();
|
||||||
|
for (int m = 0; m <= horizontal; m++)
|
||||||
|
{
|
||||||
|
object getData;
|
||||||
|
switch (type[m])
|
||||||
|
{
|
||||||
|
case "bool":
|
||||||
|
getData = (worksheet.Cell(n, m + 1).Value.ToString() == "true");
|
||||||
|
break;
|
||||||
|
case "int":
|
||||||
|
case "enum":
|
||||||
|
getData = (int)worksheet.Cell(n, m + 1).Value;
|
||||||
|
break;
|
||||||
|
case "long":
|
||||||
|
getData = (long)worksheet.Cell(n, m + 1).Value;
|
||||||
|
break;
|
||||||
|
case "float":
|
||||||
|
getData = (float)worksheet.Cell(n, m + 1).Value;
|
||||||
|
break;
|
||||||
|
case "time":
|
||||||
|
getData = (DateTime)worksheet.Cell(n, m + 1).Value;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
getData = worksheet.Cell(n, m + 1).Value.ToString();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
dataList.Add(variable[m], getData);
|
||||||
|
}
|
||||||
|
dicViewer.Add((isIndex ? (long)dataList["index"] : n - 4), dataList);
|
||||||
|
}
|
||||||
|
|
||||||
|
var sheet = new Sheet(worksheet.Name, variable, dataEnum, type, dicViewer);
|
||||||
|
_sheets.Add(sheet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: eb4aa7119d8b57f4db1e2afc5e9d38d0
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c668a33c62b41e3418810e6e2cc2e923
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,33 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Window → EventAggregator Debugger 메뉴에서 구독 현황을 확인할 수 있는 에디터 창입니다.
|
||||||
|
/// </summary>
|
||||||
|
public class EventAggregatorDebugger : EditorWindow
|
||||||
|
{
|
||||||
|
Vector2 scroll;
|
||||||
|
|
||||||
|
[MenuItem("Window/EventAggregator Debugger")]
|
||||||
|
static void Open() => GetWindow<EventAggregatorDebugger>("EA Debugger");
|
||||||
|
|
||||||
|
void OnGUI()
|
||||||
|
{
|
||||||
|
GUILayout.Label("EventAggregator Subscriptions", EditorStyles.boldLabel);
|
||||||
|
scroll = EditorGUILayout.BeginScrollView(scroll);
|
||||||
|
|
||||||
|
foreach (var info in EventAggregatorInspector.GetSubscriptions())
|
||||||
|
{
|
||||||
|
EditorGUILayout.BeginHorizontal();
|
||||||
|
EditorGUILayout.LabelField(info.EventType.Name, GUILayout.Width(150));
|
||||||
|
EditorGUILayout.LabelField($"{info.SubscriberCount} subscriber(s)");
|
||||||
|
EditorGUILayout.EndHorizontal();
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.EndScrollView();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8796eead6592165488e8a1f5a8ef601b
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,50 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// EventAggregator의 내부 subscribers 딕셔너리를 리플렉션으로 읽어 구독 정보를 제공하는 헬퍼 클래스입니다.
|
||||||
|
/// </summary>
|
||||||
|
public static
|
||||||
|
class EventAggregatorInspector
|
||||||
|
{
|
||||||
|
public struct SubscriptionInfo
|
||||||
|
{
|
||||||
|
public Type EventType;
|
||||||
|
public int SubscriberCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 현재 등록된 모든 이벤트 타입과 구독자 수를 반환합니다.
|
||||||
|
/// </summary>
|
||||||
|
public static IEnumerable<SubscriptionInfo> GetSubscriptions()
|
||||||
|
{
|
||||||
|
var eaType = typeof(EventAggregator);
|
||||||
|
var field = eaType.GetField("subscribers", BindingFlags.Static | BindingFlags.NonPublic);
|
||||||
|
if (field == null)
|
||||||
|
yield break;
|
||||||
|
|
||||||
|
var dict = field.GetValue(null) as Dictionary<Type, object>;
|
||||||
|
if (dict == null)
|
||||||
|
yield break;
|
||||||
|
|
||||||
|
foreach (var kvp in dict)
|
||||||
|
{
|
||||||
|
var listObj = kvp.Value;
|
||||||
|
var handlersField = listObj.GetType()
|
||||||
|
.GetField("handlers", BindingFlags.Instance | BindingFlags.NonPublic);
|
||||||
|
var list = handlersField?.GetValue(listObj) as ICollection;
|
||||||
|
int count = list != null ? list.Count : 0;
|
||||||
|
|
||||||
|
yield return new SubscriptionInfo
|
||||||
|
{
|
||||||
|
EventType = kvp.Key,
|
||||||
|
SubscriberCount = count
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b1d39327a4bc367478018c4eb32e6a74
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: aee4acae4ce05834fbc77710825257f8
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -1,13 +1,24 @@
|
||||||
using UnityEngine;
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
using UnityEngine.SceneManagement;
|
using UnityEngine.SceneManagement;
|
||||||
|
|
||||||
public class GameManager : DontDestroy<GameManager>
|
public class GameManager : DontDestroy<GameManager>
|
||||||
{
|
{
|
||||||
eScene nowScene;
|
eScene nowScene;
|
||||||
|
|
||||||
|
Excel excel;
|
||||||
|
|
||||||
protected override void OnAwake()
|
protected override void OnAwake()
|
||||||
{
|
{
|
||||||
Application.targetFrameRate = 120;
|
Application.targetFrameRate = 120;
|
||||||
nowScene = eScene.Title;
|
nowScene = eScene.Title;
|
||||||
|
//Datas.xlsx
|
||||||
|
// Dynamic
|
||||||
|
// Unit
|
||||||
|
excel = new Excel(new List<string>() {"Datas.xlsx"});
|
||||||
|
|
||||||
|
//사용법
|
||||||
|
//Debug.Log(excel.dynamic.selectVelue("maxSwingCount"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum eScene
|
public enum eScene
|
|
@ -10,14 +10,6 @@ public class PlayManager : SingletonMonoBehaviour<PlayManager>
|
||||||
UnityEngine.SceneManagement.SceneManager.LoadScene(0);
|
UnityEngine.SceneManagement.SceneManager.LoadScene(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//if( GameManager.Instance.isSpeedRun)
|
|
||||||
//{
|
|
||||||
// Debug.Log("SpeedRun 모드 활성화");
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// Debug.Log("일반 모드 활성화");
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Event keyEvent;
|
Event keyEvent;
|
||||||
|
@ -27,13 +19,11 @@ public class PlayManager : SingletonMonoBehaviour<PlayManager>
|
||||||
public Action keyAdown = null;
|
public Action keyAdown = null;
|
||||||
public Action keySdown = null;
|
public Action keySdown = null;
|
||||||
public Action keyDdown = null;
|
public Action keyDdown = null;
|
||||||
public Action keyWup = null;
|
public Action keyQdown = null;
|
||||||
public Action keySup = null;
|
|
||||||
public Action keyAup = null;
|
|
||||||
public Action keyDup = null;
|
|
||||||
public Action kewEsc = null;
|
public Action kewEsc = null;
|
||||||
public Action keySpace = null;
|
public Action keySpace = null;
|
||||||
public Action leftMouve = null;
|
public Action leftMouve = null;
|
||||||
|
public Action rightMouve = null;
|
||||||
private void OnGUI()
|
private void OnGUI()
|
||||||
{
|
{
|
||||||
keyEvent = Event.current;
|
keyEvent = Event.current;
|
||||||
|
@ -57,30 +47,14 @@ public class PlayManager : SingletonMonoBehaviour<PlayManager>
|
||||||
case KeyCode.W:
|
case KeyCode.W:
|
||||||
keyWdown?.Invoke();
|
keyWdown?.Invoke();
|
||||||
break;
|
break;
|
||||||
|
case KeyCode.Q:
|
||||||
|
keyQdown?.Invoke();
|
||||||
|
break;
|
||||||
case KeyCode.Space:
|
case KeyCode.Space:
|
||||||
Debug.Log(keySpace);
|
|
||||||
keySpace?.Invoke();
|
keySpace?.Invoke();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (keyEvent.type == EventType.KeyUp)
|
|
||||||
{
|
|
||||||
switch (Event.current.keyCode)
|
|
||||||
{
|
|
||||||
case KeyCode.A:
|
|
||||||
keyAup?.Invoke();
|
|
||||||
break;
|
|
||||||
case KeyCode.D:
|
|
||||||
keyDup?.Invoke();
|
|
||||||
break;
|
|
||||||
case KeyCode.S:
|
|
||||||
keySup?.Invoke();
|
|
||||||
break;
|
|
||||||
case KeyCode.W:
|
|
||||||
keyWup?.Invoke();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
|
@ -88,5 +62,9 @@ public class PlayManager : SingletonMonoBehaviour<PlayManager>
|
||||||
{
|
{
|
||||||
leftMouve?.Invoke();
|
leftMouve?.Invoke();
|
||||||
}
|
}
|
||||||
|
if(Input.GetMouseButtonDown(1))
|
||||||
|
{
|
||||||
|
rightMouve?.Invoke();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 46bd8f1c673ca8e40bf245d298edd854
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -12,7 +12,7 @@ public class SoundManager : SingletonMonoBehaviour<SoundManager>
|
||||||
public eBackgroundMusic nowMusic;
|
public eBackgroundMusic nowMusic;
|
||||||
[SerializeField] GameObject eftSound;
|
[SerializeField] GameObject eftSound;
|
||||||
ObjectPool<SoundBox> soundPool;
|
ObjectPool<SoundBox> soundPool;
|
||||||
List<SoundBox> soundList;
|
List<SoundBox> soundList = new List<SoundBox>();
|
||||||
|
|
||||||
|
|
||||||
AudioSource BackGround;
|
AudioSource BackGround;
|
||||||
|
@ -20,9 +20,7 @@ public class SoundManager : SingletonMonoBehaviour<SoundManager>
|
||||||
{
|
{
|
||||||
get { return nowMusic; }
|
get { return nowMusic; }
|
||||||
}
|
}
|
||||||
//public void ResetBackMusic(int Num)
|
|
||||||
//{
|
|
||||||
//}
|
|
||||||
public void PlayBack(eBackgroundMusic Num)
|
public void PlayBack(eBackgroundMusic Num)
|
||||||
{
|
{
|
||||||
BackGround.clip = backgroundMusic[(int)Num];
|
BackGround.clip = backgroundMusic[(int)Num];
|
||||||
|
@ -82,5 +80,6 @@ public class SoundManager : SingletonMonoBehaviour<SoundManager>
|
||||||
{
|
{
|
||||||
TitleSound,
|
TitleSound,
|
||||||
ButtonPop,
|
ButtonPop,
|
||||||
|
test,
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,2 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 46bd8f1c673ca8e40bf245d298edd854
|
|
|
@ -1,2 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: f5ce1188e2abd3c45b15851146565423
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 123d57e322871b541bd742e56c6fa53b
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b8b2840dad8d0114b9775f5803859f4c
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,11 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public abstract class SkillBase : ScriptableObject
|
||||||
|
{
|
||||||
|
public GameObject skillPrefab;
|
||||||
|
public float skillCoolTime;
|
||||||
|
public float skillStopTime;
|
||||||
|
public abstract void Active(PlayerSkill playerSkill);
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5d12116bd9af6b848a0a1f30d1a7acb8
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,20 @@
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
[CreateAssetMenu(menuName = "Player/Skills/Skill_Elephant")]
|
||||||
|
public class Skill_Elephant : SkillBase
|
||||||
|
{
|
||||||
|
public override void Active(PlayerSkill playerSkill)
|
||||||
|
{
|
||||||
|
playerSkill.Skill_Anim(0);
|
||||||
|
|
||||||
|
Vector3 mouseScreenPos = Input.mousePosition;
|
||||||
|
mouseScreenPos.z = 10f; // 카메라로부터 10 유닛 앞에 스폰
|
||||||
|
|
||||||
|
Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(mouseScreenPos);
|
||||||
|
mouseWorldPos.z = 0f; // 2D면 z는 0
|
||||||
|
|
||||||
|
GameObject skill = Instantiate(skillPrefab, Test.Instance.skillTr);
|
||||||
|
skill.transform.position = mouseWorldPos;
|
||||||
|
skill.SetActive(true);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 70999adc26904334b845df97100da8b1
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -1,16 +0,0 @@
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class ItemManager : MonoBehaviour
|
|
||||||
{
|
|
||||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
|
||||||
void Start()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update is called once per frame
|
|
||||||
void Update()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class UnitManager : MonoBehaviour
|
|
||||||
{
|
|
||||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
|
||||||
void Start()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update is called once per frame
|
|
||||||
void Update()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -4,12 +4,23 @@ using UnityEngine;
|
||||||
|
|
||||||
public class Test : MonoBehaviour
|
public class Test : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
public Transform skillTr;
|
||||||
|
[SerializeField] SkillBase skill;
|
||||||
|
public static Test Instance;
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
Instance = this;
|
||||||
|
}
|
||||||
void Update()
|
void Update()
|
||||||
{
|
{
|
||||||
if(Input.GetKeyDown(KeyCode.W))
|
if(Input.GetKeyDown(KeyCode.T))
|
||||||
{
|
{
|
||||||
transform.position += Vector3.up;
|
Tests();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void Tests()
|
||||||
|
{
|
||||||
|
PlayerManager.Instance.GetPlayerComponent<PlayerSkill>().SkillAdd(skill, PlayerSkill.SkillKeyType.M_Right);
|
||||||
|
SoundManager.Instance.StartSound(SoundManager.eEftSuond.TitleSound);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e3db7b4373a1c1e4ba8c12dfcff1cf6b
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 393961290d0dfb544ae65ec079bf758e
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,311 @@
|
||||||
|
%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_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
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_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 &100138859
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 100138862}
|
||||||
|
- component: {fileID: 100138861}
|
||||||
|
- component: {fileID: 100138860}
|
||||||
|
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 &100138860
|
||||||
|
AudioListener:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 100138859}
|
||||||
|
m_Enabled: 1
|
||||||
|
--- !u!20 &100138861
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 100138859}
|
||||||
|
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 &100138862
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 100138859}
|
||||||
|
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 &276881589
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 276881591}
|
||||||
|
- component: {fileID: 276881590}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Subscriber
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &276881590
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 276881589}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 94e38aaf07012704180737c81b6ef3aa, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
isSubscribe: 1
|
||||||
|
--- !u!4 &276881591
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 276881589}
|
||||||
|
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 &2127602929
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2127602931}
|
||||||
|
- component: {fileID: 2127602930}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Publisher
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &2127602930
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2127602929}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a5ad87a4c1dd1d740adf7162b0067215, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
count: 0
|
||||||
|
--- !u!4 &2127602931
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2127602929}
|
||||||
|
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: 100138862}
|
||||||
|
- {fileID: 2127602931}
|
||||||
|
- {fileID: 276881591}
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e3bd7577a327e1f4d888e3111464dd7b
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,19 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class EventTestPub : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField]
|
||||||
|
private int count = 0;
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
if(Input.GetKeyDown(KeyCode.Space))
|
||||||
|
{
|
||||||
|
count++;
|
||||||
|
EventAggregator.Publish(count);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a5ad87a4c1dd1d740adf7162b0067215
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,40 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class EventTestSub : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] private bool isSubscribe = true;
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
isSubscribe = true;
|
||||||
|
EventAggregator.Subscribe<int>(OnEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void OnEvent(int i)
|
||||||
|
{
|
||||||
|
Logger.LogInfo($"EventTestSub : {i}");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (Input.GetKeyDown(KeyCode.Escape))
|
||||||
|
{
|
||||||
|
Unsubscribe();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void OnDisable()
|
||||||
|
{
|
||||||
|
Unsubscribe();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void Unsubscribe()
|
||||||
|
{
|
||||||
|
if(!isSubscribe) return;
|
||||||
|
isSubscribe = false;
|
||||||
|
EventAggregator.Unsubscribe<int>(OnEvent);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 94e38aaf07012704180737c81b6ef3aa
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,11 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class TitleCtrl : SingletonMonoBehaviour<TitleCtrl>
|
||||||
|
{
|
||||||
|
protected override void OnStart()
|
||||||
|
{
|
||||||
|
GameManager.Instance.NextScene();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 14183be3b50569d4abfb1b12707bbdc0
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8d8b7244951dcf840808211824adb5a1
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 5.1 KiB |
|
@ -169,7 +169,7 @@ TextureImporter:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 444
|
x: 444
|
||||||
y: 12
|
y: 12
|
||||||
width: 80
|
width: 84
|
||||||
height: 132
|
height: 132
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0.5, y: 0.5}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
@ -188,9 +188,9 @@ TextureImporter:
|
||||||
name: ine_attack_front_1-2_3
|
name: ine_attack_front_1-2_3
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 640
|
x: 636
|
||||||
y: 12
|
y: 13
|
||||||
width: 76
|
width: 84
|
||||||
height: 132
|
height: 132
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0.5, y: 0.5}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
@ -220,8 +220,8 @@ TextureImporter:
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
tessellationDetail: 0
|
tessellationDetail: 0
|
||||||
bones: []
|
bones: []
|
||||||
spriteID: e538fff7188115b43ab1c85bcc2a9b73
|
spriteID: b2003986b6b742a48be654d420465b1e
|
||||||
internalID: 1219136660
|
internalID: -1855962146
|
||||||
vertices: []
|
vertices: []
|
||||||
indices:
|
indices:
|
||||||
edges: []
|
edges: []
|
||||||
|
@ -241,7 +241,7 @@ TextureImporter:
|
||||||
ine_attack_front_1-2_1: 1447787678
|
ine_attack_front_1-2_1: 1447787678
|
||||||
ine_attack_front_1-2_2: -234470029
|
ine_attack_front_1-2_2: -234470029
|
||||||
ine_attack_front_1-2_3: 1788046834
|
ine_attack_front_1-2_3: 1788046834
|
||||||
ine_attack_front_1-2_4: 1219136660
|
ine_attack_front_1-2_4: -1855962146
|
||||||
mipmapLimitGroupName:
|
mipmapLimitGroupName:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
userData:
|
userData:
|
||||||
|
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.7 KiB |
|
@ -134,10 +134,10 @@ TextureImporter:
|
||||||
name: ine_attack_front_2-2_0
|
name: ine_attack_front_2-2_0
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 40
|
x: 64
|
||||||
y: 2
|
y: 12
|
||||||
width: 110
|
width: 76
|
||||||
height: 150
|
height: 136
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0.5, y: 0.5}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
@ -151,56 +151,14 @@ TextureImporter:
|
||||||
indices:
|
indices:
|
||||||
edges: []
|
edges: []
|
||||||
weights: []
|
weights: []
|
||||||
- serializedVersion: 2
|
|
||||||
name: ine_attack_front_2-2_1
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 230
|
|
||||||
y: 2
|
|
||||||
width: 110
|
|
||||||
height: 150
|
|
||||||
alignment: 0
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
outline: []
|
|
||||||
physicsShape: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
bones: []
|
|
||||||
spriteID: 9d5c97035280b934db33ce23b5ad2ef5
|
|
||||||
internalID: -333171934
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
name: ine_attack_front_2-2_2
|
name: ine_attack_front_2-2_2
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 420
|
x: 448
|
||||||
y: 2
|
y: 8
|
||||||
width: 110
|
width: 92
|
||||||
height: 150
|
height: 136
|
||||||
alignment: 0
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
outline: []
|
|
||||||
physicsShape: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
bones: []
|
|
||||||
spriteID: 179e2c4565d4ed840ba9bd356d985bf1
|
|
||||||
internalID: -374449531
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
- serializedVersion: 2
|
|
||||||
name: ine_attack_front_2-2_3
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 610
|
|
||||||
y: 2
|
|
||||||
width: 110
|
|
||||||
height: 150
|
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0.5, y: 0.5}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
@ -215,13 +173,13 @@ TextureImporter:
|
||||||
edges: []
|
edges: []
|
||||||
weights: []
|
weights: []
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
name: ine_attack_front_2-2_4
|
name: ine_attack_front_2-2_3
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 800
|
x: 648
|
||||||
y: 2
|
y: 8
|
||||||
width: 110
|
width: 80
|
||||||
height: 150
|
height: 136
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0.5, y: 0.5}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
@ -236,13 +194,13 @@ TextureImporter:
|
||||||
edges: []
|
edges: []
|
||||||
weights: []
|
weights: []
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
name: ine_attack_front_2-2_5
|
name: ine_attack_front_2-2_4
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 990
|
x: 840
|
||||||
y: 2
|
y: 8
|
||||||
width: 110
|
width: 76
|
||||||
height: 150
|
height: 132
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0.5, y: 0.5}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
@ -256,6 +214,48 @@ TextureImporter:
|
||||||
indices:
|
indices:
|
||||||
edges: []
|
edges: []
|
||||||
weights: []
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_attack_front_2-2_1
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 256
|
||||||
|
y: 13
|
||||||
|
width: 68
|
||||||
|
height: 132
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 1c9739835be4bdc499e4321a08e80ba8
|
||||||
|
internalID: 262121229
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_attack_front_2-2_5
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 1036
|
||||||
|
y: 12
|
||||||
|
width: 48
|
||||||
|
height: 124
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 1604a5e186699334598930d2c47fc9a4
|
||||||
|
internalID: 964338184
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
bones: []
|
bones: []
|
||||||
|
@ -268,11 +268,13 @@ TextureImporter:
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
nameFileIdTable:
|
nameFileIdTable:
|
||||||
ine_attack_front_2-2_0: 1281397944
|
ine_attack_front_2-2_0: 1281397944
|
||||||
ine_attack_front_2-2_1: -333171934
|
ine_attack_front_2-2_1: 262121229
|
||||||
ine_attack_front_2-2_2: -374449531
|
ine_attack_front_2-2_2: -1290422980
|
||||||
ine_attack_front_2-2_3: -1290422980
|
ine_attack_front_2-2_3: -471732677
|
||||||
ine_attack_front_2-2_4: -471732677
|
ine_attack_front_2-2_4: 663855216
|
||||||
ine_attack_front_2-2_5: 663855216
|
ine_attack_front_2-2_5: 964338184
|
||||||
|
ine_attack_front_2-2_7: -1358797579
|
||||||
|
ine_attack_front_2-2_9: 23732940
|
||||||
mipmapLimitGroupName:
|
mipmapLimitGroupName:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
userData:
|
userData:
|
||||||
|
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.9 KiB |
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c75a51b8269eed74b94af9ea804f9ff3
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1c926d82bdbdbfb43b578dfa85c33edc
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
After Width: | Height: | Size: 52 KiB |
|
@ -0,0 +1,332 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 06130c30194f4a24b9371e5375c2d81d
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: -749840660553697646
|
||||||
|
second: ine_skill_elephant_0
|
||||||
|
- first:
|
||||||
|
213: 1068744861065384595
|
||||||
|
second: ine_skill_elephant_1
|
||||||
|
- first:
|
||||||
|
213: -6779240592597117213
|
||||||
|
second: ine_skill_elephant_2
|
||||||
|
- first:
|
||||||
|
213: -2430036411039725127
|
||||||
|
second: ine_skill_elephant_3
|
||||||
|
- first:
|
||||||
|
213: 1240121237372802573
|
||||||
|
second: ine_skill_elephant_4
|
||||||
|
- first:
|
||||||
|
213: -2888972393065648507
|
||||||
|
second: ine_skill_elephant_5
|
||||||
|
- first:
|
||||||
|
213: 8011957944861444958
|
||||||
|
second: ine_skill_elephant_6
|
||||||
|
- first:
|
||||||
|
213: -3363044308508671127
|
||||||
|
second: ine_skill_elephant_7
|
||||||
|
- first:
|
||||||
|
213: -5602476004600743758
|
||||||
|
second: ine_skill_elephant_8
|
||||||
|
- first:
|
||||||
|
213: -7066783261015251393
|
||||||
|
second: ine_skill_elephant_9
|
||||||
|
- first:
|
||||||
|
213: 5745245628554414743
|
||||||
|
second: ine_skill_elephant_10
|
||||||
|
- first:
|
||||||
|
213: 5991853452487344802
|
||||||
|
second: ine_skill_elephant_11
|
||||||
|
- first:
|
||||||
|
213: -3814774475936278287
|
||||||
|
second: ine_skill_elephant_12
|
||||||
|
- first:
|
||||||
|
213: 1773424926147044070
|
||||||
|
second: ine_skill_elephant_13
|
||||||
|
- first:
|
||||||
|
213: 7883538275305047326
|
||||||
|
second: ine_skill_elephant_14
|
||||||
|
- first:
|
||||||
|
213: 3923740633644795031
|
||||||
|
second: ine_skill_elephant_15
|
||||||
|
- first:
|
||||||
|
213: 5157959640672788632
|
||||||
|
second: ine_skill_elephant_16
|
||||||
|
- first:
|
||||||
|
213: -7938872906548835573
|
||||||
|
second: ine_skill_elephant_17
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 12
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 2
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 210
|
||||||
|
height: 320
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 9ec8168b610903f488dfd5d7a3454e9e
|
||||||
|
internalID: -1218299623
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_1
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 210
|
||||||
|
y: 0
|
||||||
|
width: 210
|
||||||
|
height: 320
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 52d87603ed33195428daec3c9019201a
|
||||||
|
internalID: 1563511668
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_2
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 420
|
||||||
|
y: 0
|
||||||
|
width: 210
|
||||||
|
height: 320
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 9ee57fbd76328c74c9ad7d38526def24
|
||||||
|
internalID: -1162547397
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_3
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 630
|
||||||
|
y: 0
|
||||||
|
width: 210
|
||||||
|
height: 320
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: ba5e42c0c3f463040bbe3c6721333513
|
||||||
|
internalID: 1328625289
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_4
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 840
|
||||||
|
y: 0
|
||||||
|
width: 210
|
||||||
|
height: 320
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 6fe6ae75d4da56e4f8e2a00b10915a8e
|
||||||
|
internalID: 1614975929
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_5
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 1050
|
||||||
|
y: 0
|
||||||
|
width: 210
|
||||||
|
height: 320
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 8bed20f086cf2904f9aefd40fc4652e7
|
||||||
|
internalID: 390584684
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_6
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 1260
|
||||||
|
y: 0
|
||||||
|
width: 210
|
||||||
|
height: 320
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 491c50ec76ea06449b3522a512e0966e
|
||||||
|
internalID: -1212270713
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 550d26ce6204bbe4381bf17d7848ca17
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable:
|
||||||
|
ine_skill_elephant_0: -1218299623
|
||||||
|
ine_skill_elephant_1: 1563511668
|
||||||
|
ine_skill_elephant_2: -1162547397
|
||||||
|
ine_skill_elephant_3: 1328625289
|
||||||
|
ine_skill_elephant_4: 1614975929
|
||||||
|
ine_skill_elephant_5: 390584684
|
||||||
|
ine_skill_elephant_6: -1212270713
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
After Width: | Height: | Size: 5.2 KiB |
|
@ -0,0 +1,277 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b2a9696d62bebe04f8faa63d6e9a94be
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 9175310859075681695
|
||||||
|
second: ine_skill_elephant_1-1_0
|
||||||
|
- first:
|
||||||
|
213: 4699011543847504018
|
||||||
|
second: ine_skill_elephant_1-1_1
|
||||||
|
- first:
|
||||||
|
213: 1749131944384534825
|
||||||
|
second: ine_skill_elephant_1-1_2
|
||||||
|
- first:
|
||||||
|
213: 3449260541160976709
|
||||||
|
second: ine_skill_elephant_1-1_3
|
||||||
|
- first:
|
||||||
|
213: -7616995594210666293
|
||||||
|
second: ine_skill_elephant_1-1_4
|
||||||
|
- first:
|
||||||
|
213: -5168148368631209317
|
||||||
|
second: ine_skill_elephant_1-1_5
|
||||||
|
- first:
|
||||||
|
213: -9035891837375910894
|
||||||
|
second: ine_skill_elephant_1-1_6
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 12
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 2
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_1-1_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 20
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 2cc34b7a41904a041bf3f7e2b7acd96c
|
||||||
|
internalID: 2128876000
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_1-1_1
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 210
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: ea1cab85150e966468bbd2846caffe59
|
||||||
|
internalID: 2011239551
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_1-1_2
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 400
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 9d892bf1bc8c89349a07ead6278b9bdf
|
||||||
|
internalID: -506559711
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_1-1_3
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 590
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 461de08807a6e6141a9eec38f0f2b30e
|
||||||
|
internalID: 956627902
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_1-1_4
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 780
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 9fff86721778d7842a2167af85ddc11c
|
||||||
|
internalID: 463468534
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_1-1_5
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 970
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: adb43dce0c30e5d43993f51e9a44ce8c
|
||||||
|
internalID: -488791348
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 780e3d1c3a7f25b4e8e73e6b544cb2cf
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable:
|
||||||
|
ine_skill_elephant_1-1_0: 2128876000
|
||||||
|
ine_skill_elephant_1-1_1: 2011239551
|
||||||
|
ine_skill_elephant_1-1_2: -506559711
|
||||||
|
ine_skill_elephant_1-1_3: 956627902
|
||||||
|
ine_skill_elephant_1-1_4: 463468534
|
||||||
|
ine_skill_elephant_1-1_5: -488791348
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
After Width: | Height: | Size: 5.8 KiB |
|
@ -0,0 +1,283 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ad7604c6b24e06046b26378132a83953
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: -5591182898534132589
|
||||||
|
second: ine_skill_elephant_2-1_0
|
||||||
|
- first:
|
||||||
|
213: 8366695865545347887
|
||||||
|
second: ine_skill_elephant_2-1_1
|
||||||
|
- first:
|
||||||
|
213: 1852557216607461764
|
||||||
|
second: ine_skill_elephant_2-1_2
|
||||||
|
- first:
|
||||||
|
213: 4305299260950396006
|
||||||
|
second: ine_skill_elephant_2-1_3
|
||||||
|
- first:
|
||||||
|
213: 4979850261071900208
|
||||||
|
second: ine_skill_elephant_2-1_4
|
||||||
|
- first:
|
||||||
|
213: -6984478236704737568
|
||||||
|
second: ine_skill_elephant_2-1_5
|
||||||
|
- first:
|
||||||
|
213: 3482425352038944175
|
||||||
|
second: ine_skill_elephant_2-1_6
|
||||||
|
- first:
|
||||||
|
213: -9008079638353400661
|
||||||
|
second: ine_skill_elephant_2-1_7
|
||||||
|
- first:
|
||||||
|
213: 2747168054218011304
|
||||||
|
second: ine_skill_elephant_2-1_8
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 12
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 2
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_2-1_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 25
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 8a4fa73e1b94b0843a37455e59a49f4e
|
||||||
|
internalID: -459867237
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_2-1_1
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 220
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: a58a7190146067947880a526562e631f
|
||||||
|
internalID: 310526613
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_2-1_2
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 415
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: b332e128a0155e24aa3184921ce07bef
|
||||||
|
internalID: 1443031134
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_2-1_3
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 610
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 84ba5a7a0bca9e948ba5c428751a5937
|
||||||
|
internalID: 1229002455
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_2-1_4
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 805
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 5de0cea413f58994d940fde2741ce726
|
||||||
|
internalID: 583469470
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_2-1_5
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 1000
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: f4b2aca6c81585c41acb0284998cf6a3
|
||||||
|
internalID: -1175216669
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 21a860553cfed1a48b35a550b7046976
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable:
|
||||||
|
ine_skill_elephant_2-1_0: -459867237
|
||||||
|
ine_skill_elephant_2-1_1: 310526613
|
||||||
|
ine_skill_elephant_2-1_2: 1443031134
|
||||||
|
ine_skill_elephant_2-1_3: 1229002455
|
||||||
|
ine_skill_elephant_2-1_4: 583469470
|
||||||
|
ine_skill_elephant_2-1_5: -1175216669
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
After Width: | Height: | Size: 5.3 KiB |
|
@ -0,0 +1,277 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5b9afa943846d724db64d74cc716f810
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: -8801347118301340800
|
||||||
|
second: ine_skill_elephant_3-1_0
|
||||||
|
- first:
|
||||||
|
213: 321906566672793495
|
||||||
|
second: ine_skill_elephant_3-1_1
|
||||||
|
- first:
|
||||||
|
213: -8677365392873900864
|
||||||
|
second: ine_skill_elephant_3-1_2
|
||||||
|
- first:
|
||||||
|
213: -2716477927028788129
|
||||||
|
second: ine_skill_elephant_3-1_3
|
||||||
|
- first:
|
||||||
|
213: 2816979004403368351
|
||||||
|
second: ine_skill_elephant_3-1_4
|
||||||
|
- first:
|
||||||
|
213: -8465170179684380480
|
||||||
|
second: ine_skill_elephant_3-1_5
|
||||||
|
- first:
|
||||||
|
213: 3210023770481564049
|
||||||
|
second: ine_skill_elephant_3-1_6
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 12
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 2
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_3-1_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 25
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 459cb0b594a74f6439c401e8a4bd3a86
|
||||||
|
internalID: 2037433912
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_3-1_1
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 220
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: e9459ac57800b65489998e42b0b70ea7
|
||||||
|
internalID: 183529498
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_3-1_2
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 415
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 241392fc8b702ef47a7dc62b66b9fc63
|
||||||
|
internalID: 53193951
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_3-1_3
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 610
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: b845b8c955a79c94e8fa5b8ea236a3b1
|
||||||
|
internalID: 1199219398
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_3-1_4
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 805
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 474a8660e553f0e4da3ba03e4858dfc1
|
||||||
|
internalID: 403282775
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: ine_skill_elephant_3-1_5
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 1000
|
||||||
|
y: 7
|
||||||
|
width: 150
|
||||||
|
height: 150
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 28e3f0b1786f45044accd795da7eb8fc
|
||||||
|
internalID: -978268524
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 978dd5a8d871df24ca33495450b765dc
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable:
|
||||||
|
ine_skill_elephant_3-1_0: 2037433912
|
||||||
|
ine_skill_elephant_3-1_1: 183529498
|
||||||
|
ine_skill_elephant_3-1_2: 53193951
|
||||||
|
ine_skill_elephant_3-1_3: 1199219398
|
||||||
|
ine_skill_elephant_3-1_4: 403282775
|
||||||
|
ine_skill_elephant_3-1_5: -978268524
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|