Compare commits
33 Commits
cleanup
...
4d23a2ba8f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d23a2ba8f | ||
|
|
ae840a4b2f | ||
|
|
475f54b704 | ||
|
|
eb63086466 | ||
| 011901eb8f | |||
|
|
d317fffad7 | ||
|
|
cdbb2e0d3f | ||
|
|
5735bbcfae | ||
|
|
d0da5d76cd | ||
|
|
d48b459fea | ||
|
|
2b41a9f200 | ||
|
|
e81879959e | ||
|
|
64da60dadd | ||
| 9396bb76b4 | |||
|
|
f6ebadf21e | ||
|
|
eeca4973ae | ||
| 988bc53ec8 | |||
|
|
a020e9af04 | ||
| 3cd2466fbb | |||
| f7ee3a979a | |||
| 4e12e4f8c1 | |||
| 6ece49bb28 | |||
| 54f355beda | |||
| 6dc49f1686 | |||
| d5d01e46ea | |||
| bf0a37fe2e | |||
|
|
c24c5df881 | ||
|
|
bda645dcc3 | ||
| 2ce6452d90 | |||
|
|
9a5735a1a1 | ||
| 1a04e82920 | |||
|
|
b56524f1f2 | ||
| 86bee75578 |
@@ -1,5 +1,38 @@
|
|||||||
%YAML 1.1
|
%YAML 1.1
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!243 &-6354048548703642832
|
||||||
|
AudioMixerGroupController:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Flavor VO
|
||||||
|
m_AudioMixer: {fileID: 24100000}
|
||||||
|
m_GroupID: d96f2f2d9081a2b4680e4cc99ae6dde2
|
||||||
|
m_Children: []
|
||||||
|
m_Volume: 8b556d01082609a41b5e0ac71387eb2b
|
||||||
|
m_Pitch: 543e5193b3b867a4a9e179b532d94963
|
||||||
|
m_Send: 00000000000000000000000000000000
|
||||||
|
m_Effects:
|
||||||
|
- {fileID: 2755879577735596061}
|
||||||
|
m_UserColorIndex: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_Solo: 0
|
||||||
|
m_BypassEffects: 0
|
||||||
|
--- !u!244 &-2388863367724940654
|
||||||
|
AudioMixerEffectController:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EffectID: 70589a6f94c3a7e4f985d76dc20fec7d
|
||||||
|
m_EffectName: Attenuation
|
||||||
|
m_MixLevel: 1017da8a9e9644f46a2582f97a979436
|
||||||
|
m_Parameters: []
|
||||||
|
m_SendTarget: {fileID: 0}
|
||||||
|
m_EnableWetMix: 0
|
||||||
|
m_Bypass: 0
|
||||||
--- !u!243 &-1208528772216134639
|
--- !u!243 &-1208528772216134639
|
||||||
AudioMixerGroupController:
|
AudioMixerGroupController:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -19,6 +52,25 @@ AudioMixerGroupController:
|
|||||||
m_Mute: 0
|
m_Mute: 0
|
||||||
m_Solo: 0
|
m_Solo: 0
|
||||||
m_BypassEffects: 0
|
m_BypassEffects: 0
|
||||||
|
--- !u!243 &-281949353495416486
|
||||||
|
AudioMixerGroupController:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Critical VO
|
||||||
|
m_AudioMixer: {fileID: 24100000}
|
||||||
|
m_GroupID: 0564b669f5b88d74fbf644daddff7659
|
||||||
|
m_Children: []
|
||||||
|
m_Volume: b5a4611797e711d4384da7546db03ad4
|
||||||
|
m_Pitch: 6b6c6926b5cf7d64e8546ad727cd1b56
|
||||||
|
m_Send: 00000000000000000000000000000000
|
||||||
|
m_Effects:
|
||||||
|
- {fileID: 4434749241126400044}
|
||||||
|
m_UserColorIndex: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_Solo: 0
|
||||||
|
m_BypassEffects: 0
|
||||||
--- !u!241 &24100000
|
--- !u!241 &24100000
|
||||||
AudioMixerController:
|
AudioMixerController:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -33,7 +85,7 @@ AudioMixerController:
|
|||||||
m_StartSnapshot: {fileID: 24500006}
|
m_StartSnapshot: {fileID: 24500006}
|
||||||
m_SuspendThreshold: -80
|
m_SuspendThreshold: -80
|
||||||
m_EnableSuspend: 1
|
m_EnableSuspend: 1
|
||||||
m_UpdateMode: 0
|
m_UpdateMode: 1
|
||||||
m_ExposedParameters: []
|
m_ExposedParameters: []
|
||||||
m_AudioMixerGroupViews:
|
m_AudioMixerGroupViews:
|
||||||
- guids:
|
- guids:
|
||||||
@@ -41,6 +93,9 @@ AudioMixerController:
|
|||||||
- 18a903247b220fb47b8e743f756a2d19
|
- 18a903247b220fb47b8e743f756a2d19
|
||||||
- 7e41227c6d9a65c4898080710c015deb
|
- 7e41227c6d9a65c4898080710c015deb
|
||||||
- 93449300145f3ff4c9f21b59e4c06cb8
|
- 93449300145f3ff4c9f21b59e4c06cb8
|
||||||
|
- 0564b669f5b88d74fbf644daddff7659
|
||||||
|
- d96f2f2d9081a2b4680e4cc99ae6dde2
|
||||||
|
- 69e7e2391e0225240b94aab8ac4968dd
|
||||||
name: View
|
name: View
|
||||||
m_CurrentViewIndex: 0
|
m_CurrentViewIndex: 0
|
||||||
m_TargetSnapshot: {fileID: 24500006}
|
m_TargetSnapshot: {fileID: 24500006}
|
||||||
@@ -56,6 +111,7 @@ AudioMixerGroupController:
|
|||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: -1208528772216134639}
|
- {fileID: -1208528772216134639}
|
||||||
- {fileID: 1171626333864818265}
|
- {fileID: 1171626333864818265}
|
||||||
|
- {fileID: 5060278701334990569}
|
||||||
- {fileID: 3533147658878909314}
|
- {fileID: 3533147658878909314}
|
||||||
m_Volume: 59834639f5649d34cbb5ed8055029b93
|
m_Volume: 59834639f5649d34cbb5ed8055029b93
|
||||||
m_Pitch: 2c79200ddd7bbf244bc5980d7fbb6e1c
|
m_Pitch: 2c79200ddd7bbf244bc5980d7fbb6e1c
|
||||||
@@ -124,6 +180,20 @@ AudioMixerGroupController:
|
|||||||
m_Mute: 0
|
m_Mute: 0
|
||||||
m_Solo: 0
|
m_Solo: 0
|
||||||
m_BypassEffects: 0
|
m_BypassEffects: 0
|
||||||
|
--- !u!244 &2755879577735596061
|
||||||
|
AudioMixerEffectController:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Attenuation
|
||||||
|
m_EffectID: 938281aaf51dfdb448130f1d299a9c32
|
||||||
|
m_EffectName: Attenuation
|
||||||
|
m_MixLevel: ba6923d75c4220e4bab55e5aa6eab3ea
|
||||||
|
m_Parameters: []
|
||||||
|
m_SendTarget: {fileID: 0}
|
||||||
|
m_EnableWetMix: 0
|
||||||
|
m_Bypass: 0
|
||||||
--- !u!243 &3533147658878909314
|
--- !u!243 &3533147658878909314
|
||||||
AudioMixerGroupController:
|
AudioMixerGroupController:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -133,7 +203,9 @@ AudioMixerGroupController:
|
|||||||
m_Name: Voice Over
|
m_Name: Voice Over
|
||||||
m_AudioMixer: {fileID: 24100000}
|
m_AudioMixer: {fileID: 24100000}
|
||||||
m_GroupID: 7e41227c6d9a65c4898080710c015deb
|
m_GroupID: 7e41227c6d9a65c4898080710c015deb
|
||||||
m_Children: []
|
m_Children:
|
||||||
|
- {fileID: -281949353495416486}
|
||||||
|
- {fileID: -6354048548703642832}
|
||||||
m_Volume: f2db72fd62c62d74cb03d11a28b9ec8f
|
m_Volume: f2db72fd62c62d74cb03d11a28b9ec8f
|
||||||
m_Pitch: f711bad694828024996b7a703eb57af7
|
m_Pitch: f711bad694828024996b7a703eb57af7
|
||||||
m_Send: 00000000000000000000000000000000
|
m_Send: 00000000000000000000000000000000
|
||||||
@@ -143,6 +215,39 @@ AudioMixerGroupController:
|
|||||||
m_Mute: 0
|
m_Mute: 0
|
||||||
m_Solo: 0
|
m_Solo: 0
|
||||||
m_BypassEffects: 0
|
m_BypassEffects: 0
|
||||||
|
--- !u!244 &4434749241126400044
|
||||||
|
AudioMixerEffectController:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EffectID: 28433275b262aa6499b0cf5076b597de
|
||||||
|
m_EffectName: Attenuation
|
||||||
|
m_MixLevel: 5925348bdea90b04a895b3cd54c45b27
|
||||||
|
m_Parameters: []
|
||||||
|
m_SendTarget: {fileID: 0}
|
||||||
|
m_EnableWetMix: 0
|
||||||
|
m_Bypass: 0
|
||||||
|
--- !u!243 &5060278701334990569
|
||||||
|
AudioMixerGroupController:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Music
|
||||||
|
m_AudioMixer: {fileID: 24100000}
|
||||||
|
m_GroupID: 69e7e2391e0225240b94aab8ac4968dd
|
||||||
|
m_Children: []
|
||||||
|
m_Volume: c518de39492791c49b618d0aeac5a88d
|
||||||
|
m_Pitch: 264704130d9d22745aa9fa1150ff4490
|
||||||
|
m_Send: 00000000000000000000000000000000
|
||||||
|
m_Effects:
|
||||||
|
- {fileID: -2388863367724940654}
|
||||||
|
m_UserColorIndex: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_Solo: 0
|
||||||
|
m_BypassEffects: 0
|
||||||
--- !u!244 &6612228481115079330
|
--- !u!244 &6612228481115079330
|
||||||
AudioMixerEffectController:
|
AudioMixerEffectController:
|
||||||
m_ObjectHideFlags: 3
|
m_ObjectHideFlags: 3
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 223935611d3e2ac48b0b02a9bc008a6b
|
guid: 5f6f72f272957b4439cbaf4e18106470
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@@ -134,7 +134,7 @@ TextureImporter:
|
|||||||
width: 2463
|
width: 2463
|
||||||
height: 1368
|
height: 1368
|
||||||
alignment: 9
|
alignment: 9
|
||||||
pivot: {x: 0.48564804, y: 0.6863182}
|
pivot: {x: 0.5, y: 0.91438836}
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
customData:
|
customData:
|
||||||
outline: []
|
outline: []
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 13 KiB |
BIN
Assets/Art/Sprites/UI/BackgroundCombGlow.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
156
Assets/Art/Sprites/UI/BackgroundCombGlow.png.meta
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 34bd87b3ddf2a094c8b6e4700837321b
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: -8520225520565161345
|
||||||
|
second: BackgroundCombGlow_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: BackgroundCombGlow_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 135
|
||||||
|
y: 40
|
||||||
|
width: 939
|
||||||
|
height: 910
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: -1
|
||||||
|
bones: []
|
||||||
|
spriteID: f72fe78f70412c980800000000000000
|
||||||
|
internalID: -8520225520565161345
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable:
|
||||||
|
BackgroundCombGlow_0: -8520225520565161345
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 33 KiB |
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 1d2257a430320c94084cd1dda5a0a747
|
guid: e57f206a089ac7c46acabc2474b4eacf
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 422 KiB After Width: | Height: | Size: 422 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
8
Assets/Art/Textures/Cards/Boosters.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 96ad5b4de38c3d944a495f625582c9d1
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
Before Width: | Height: | Size: 283 KiB After Width: | Height: | Size: 283 KiB |
8
Assets/Art/Textures/Cards/CardGraphics.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 03996cf16071605429688046d45cb5d1
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
@@ -109,27 +109,40 @@ TextureImporter:
|
|||||||
ignorePlatformSupport: 0
|
ignorePlatformSupport: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites:
|
sprites:
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
name: Brosten 1_0
|
name: Brosten_0
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 42
|
x: 0
|
||||||
y: 202
|
y: 0
|
||||||
width: 504
|
width: 593
|
||||||
height: 174
|
height: 576
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0, y: 0}
|
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}
|
||||||
customData:
|
customData:
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
tessellationDetail: -1
|
tessellationDetail: 0
|
||||||
bones: []
|
bones: []
|
||||||
spriteID: f48ea6b66c6075ca0800000000000000
|
spriteID: 602e4c6e4e438fc43b73e0d08dcacf67
|
||||||
internalID: -6028342126936659889
|
internalID: 716150661
|
||||||
vertices: []
|
vertices: []
|
||||||
indices:
|
indices:
|
||||||
edges: []
|
edges: []
|
||||||
@@ -138,7 +151,7 @@ TextureImporter:
|
|||||||
customData:
|
customData:
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
bones: []
|
bones: []
|
||||||
spriteID:
|
spriteID: 81378f47f66682641ba5a62e216473af
|
||||||
internalID: 0
|
internalID: 0
|
||||||
vertices: []
|
vertices: []
|
||||||
indices:
|
indices:
|
||||||
@@ -146,9 +159,11 @@ TextureImporter:
|
|||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
spriteCustomMetadata:
|
spriteCustomMetadata:
|
||||||
entries: []
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":593.0,"y":576.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
nameFileIdTable:
|
nameFileIdTable:
|
||||||
Brosten 1_0: -6028342126936659889
|
Brosten_0: 716150661
|
||||||
mipmapLimitGroupName:
|
mipmapLimitGroupName:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
userData:
|
userData:
|
||||||
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
@@ -109,27 +109,40 @@ TextureImporter:
|
|||||||
ignorePlatformSupport: 0
|
ignorePlatformSupport: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites:
|
sprites:
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
name: HRKvarts 1_0
|
name: HRKvarts_0
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 5
|
x: 0
|
||||||
y: 4
|
y: 0
|
||||||
width: 567
|
width: 593
|
||||||
height: 566
|
height: 576
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0, y: 0}
|
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}
|
||||||
customData:
|
customData:
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
tessellationDetail: -1
|
tessellationDetail: 0
|
||||||
bones: []
|
bones: []
|
||||||
spriteID: ea5f6e365caf7c960800000000000000
|
spriteID: 63bcc7935d55dd542a574b0443579483
|
||||||
internalID: 7622336620039435694
|
internalID: 2056719709
|
||||||
vertices: []
|
vertices: []
|
||||||
indices:
|
indices:
|
||||||
edges: []
|
edges: []
|
||||||
@@ -138,7 +151,7 @@ TextureImporter:
|
|||||||
customData:
|
customData:
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
bones: []
|
bones: []
|
||||||
spriteID:
|
spriteID: 18e1970e9e106cc4585b1ae44a5a8398
|
||||||
internalID: 0
|
internalID: 0
|
||||||
vertices: []
|
vertices: []
|
||||||
indices:
|
indices:
|
||||||
@@ -146,9 +159,11 @@ TextureImporter:
|
|||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
spriteCustomMetadata:
|
spriteCustomMetadata:
|
||||||
entries: []
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":593.0,"y":576.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
nameFileIdTable:
|
nameFileIdTable:
|
||||||
HRKvarts 1_0: 7622336620039435694
|
HRKvarts_0: 2056719709
|
||||||
mipmapLimitGroupName:
|
mipmapLimitGroupName:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
userData:
|
userData:
|
||||||
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
@@ -109,27 +109,40 @@ TextureImporter:
|
|||||||
ignorePlatformSupport: 0
|
ignorePlatformSupport: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites:
|
sprites:
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
name: HRPimpsten 1_0
|
name: HRPimpsten_0
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 44
|
x: 0
|
||||||
y: 114
|
y: 0
|
||||||
width: 529
|
width: 593
|
||||||
height: 419
|
height: 576
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0, y: 0}
|
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}
|
||||||
customData:
|
customData:
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
tessellationDetail: -1
|
tessellationDetail: 0
|
||||||
bones: []
|
bones: []
|
||||||
spriteID: feb726aeaaec5a820800000000000000
|
spriteID: 8c0a9c8a5e43e8842b3918ea6628d007
|
||||||
internalID: 2928974366146460655
|
internalID: 844850041
|
||||||
vertices: []
|
vertices: []
|
||||||
indices:
|
indices:
|
||||||
edges: []
|
edges: []
|
||||||
@@ -138,7 +151,7 @@ TextureImporter:
|
|||||||
customData:
|
customData:
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
bones: []
|
bones: []
|
||||||
spriteID:
|
spriteID: 3897c846a2b9335418455b1be5b56b45
|
||||||
internalID: 0
|
internalID: 0
|
||||||
vertices: []
|
vertices: []
|
||||||
indices:
|
indices:
|
||||||
@@ -146,9 +159,11 @@ TextureImporter:
|
|||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
spriteCustomMetadata:
|
spriteCustomMetadata:
|
||||||
entries: []
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":593.0,"y":576.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
nameFileIdTable:
|
nameFileIdTable:
|
||||||
HRPimpsten 1_0: 2928974366146460655
|
HRPimpsten_0: 844850041
|
||||||
mipmapLimitGroupName:
|
mipmapLimitGroupName:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
userData:
|
userData:
|
||||||
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
@@ -115,71 +115,40 @@ TextureImporter:
|
|||||||
ignorePlatformSupport: 0
|
ignorePlatformSupport: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites:
|
sprites:
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
name: MormorMarmor 1_0
|
name: MormorMarmor_0
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 127
|
x: 0
|
||||||
y: 102
|
y: 0
|
||||||
width: 330
|
width: 593
|
||||||
height: 446
|
height: 576
|
||||||
alignment: 0
|
alignment: 0
|
||||||
pivot: {x: 0, y: 0}
|
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}
|
||||||
customData:
|
customData:
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
tessellationDetail: -1
|
tessellationDetail: 0
|
||||||
bones: []
|
bones: []
|
||||||
spriteID: 3e7c34b82d50e5070800000000000000
|
spriteID: 9d94d9a900b1bca42a479da57a7e2d24
|
||||||
internalID: 8096915581896476643
|
internalID: -1694013536
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
- serializedVersion: 2
|
|
||||||
name: MormorMarmor 1_1
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 520
|
|
||||||
y: 417
|
|
||||||
width: 7
|
|
||||||
height: 10
|
|
||||||
alignment: 0
|
|
||||||
pivot: {x: 0, y: 0}
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
outline: []
|
|
||||||
physicsShape: []
|
|
||||||
tessellationDetail: -1
|
|
||||||
bones: []
|
|
||||||
spriteID: d4e45f6915a2341f0800000000000000
|
|
||||||
internalID: -1061958557215928755
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
- serializedVersion: 2
|
|
||||||
name: MormorMarmor 1_2
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 262
|
|
||||||
y: 89
|
|
||||||
width: 15
|
|
||||||
height: 7
|
|
||||||
alignment: 0
|
|
||||||
pivot: {x: 0, y: 0}
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
outline: []
|
|
||||||
physicsShape: []
|
|
||||||
tessellationDetail: -1
|
|
||||||
bones: []
|
|
||||||
spriteID: cc1f9fa31ed229470800000000000000
|
|
||||||
internalID: 8399826700379746764
|
|
||||||
vertices: []
|
vertices: []
|
||||||
indices:
|
indices:
|
||||||
edges: []
|
edges: []
|
||||||
@@ -188,7 +157,7 @@ TextureImporter:
|
|||||||
customData:
|
customData:
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
bones: []
|
bones: []
|
||||||
spriteID:
|
spriteID: 0237d2dc4e0b36349b6d9875bf3c9da0
|
||||||
internalID: 0
|
internalID: 0
|
||||||
vertices: []
|
vertices: []
|
||||||
indices:
|
indices:
|
||||||
@@ -196,11 +165,11 @@ TextureImporter:
|
|||||||
weights: []
|
weights: []
|
||||||
secondaryTextures: []
|
secondaryTextures: []
|
||||||
spriteCustomMetadata:
|
spriteCustomMetadata:
|
||||||
entries: []
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":593.0,"y":576.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
nameFileIdTable:
|
nameFileIdTable:
|
||||||
MormorMarmor 1_0: 8096915581896476643
|
MormorMarmor_0: -1694013536
|
||||||
MormorMarmor 1_1: -1061958557215928755
|
|
||||||
MormorMarmor 1_2: 8399826700379746764
|
|
||||||
mipmapLimitGroupName:
|
mipmapLimitGroupName:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
userData:
|
userData:
|
||||||
8
Assets/Art/Textures/Cards/Frames.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 86479a54bd33318418ff5bdbba95c4b4
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
8
Assets/Art/Textures/Cards/Shapes.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9358e697801b5fb46905ddad3bdde0a9
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape1.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape1.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bc13c4091da05074ba208ec060326153
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 151469255044700166
|
||||||
|
second: Shape1 1_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape1_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: fdc7020a9b279c849a1fd17fef5c0b28
|
||||||
|
internalID: -555031247
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 701d6ac32af69ae4f9220407f367fa07
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape1_0: -555031247
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape1R.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape1R.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2049b6df7b55c9d43a65125944ed7c01
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: -7781690445634620112
|
||||||
|
second: Shape1R_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape1R_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: -1
|
||||||
|
bones: []
|
||||||
|
spriteID: 035b5e3d4c1e10490800000000000000
|
||||||
|
internalID: -7781690445634620112
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 23a994cd4e0d2a147a49aed2b56c204b
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape1R_0: -7781690445634620112
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape2.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape2.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a58017e7b840e654babc7465a400dc79
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: -4742994778240462112
|
||||||
|
second: Shape2 1_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape2_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: f60d37f9444c1b543973f33601f44743
|
||||||
|
internalID: -885559016
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: c6ae4e89cdbd3f2409d37ad7fd13c22b
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape2_0: -885559016
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape2R.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape2R.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f0acfac6598fd754d9cebe517674fc93
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: -4123633659264056548
|
||||||
|
second: Shape2R_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape2R_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: -1
|
||||||
|
bones: []
|
||||||
|
spriteID: c13c8bbe809e5c6c0800000000000000
|
||||||
|
internalID: -4123633659264056548
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5cbd03b694ce61440943f17b9e83a025
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape2R_0: -4123633659264056548
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape3.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape3.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: aa0c0c32fd1585a438555ffc5cde2a90
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 8150879738541135729
|
||||||
|
second: Shape3 1_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape3_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 1cef8be3ee7c10b4bba3d7a997132c3e
|
||||||
|
internalID: 412684597
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: f1cc23f07fc26f344b3a1c4f48ad3ec3
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape3_0: 412684597
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape3R.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape3R.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cef2ffe5a4f771e488c8255a643396a1
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 4758665976143856727
|
||||||
|
second: Shape3R_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape3R_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: -1
|
||||||
|
bones: []
|
||||||
|
spriteID: 754cac82e7d2a0240800000000000000
|
||||||
|
internalID: 4758665976143856727
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: df59fef7221f7fe48a6a1e6618ce1438
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape3R_0: 4758665976143856727
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape4.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape4.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 91b8773f57580aa4587f68b5855d2bec
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 2545779567312839559
|
||||||
|
second: Shape4 1_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape4_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 86ab83bbffa5164448f3f5eec7b93811
|
||||||
|
internalID: -1617033473
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 7d54bdacf69692e4fa04fcfad9f2c5ca
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape4_0: -1617033473
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape4R.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape4R.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b178c902d0ba24e41b157bea5d138997
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 7781173432231136668
|
||||||
|
second: Shape4R_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape4R_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: -1
|
||||||
|
bones: []
|
||||||
|
spriteID: c9d08db92084cfb60800000000000000
|
||||||
|
internalID: 7781173432231136668
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: b3d322268746d7e45ae22d894e9191dc
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape4R_0: 7781173432231136668
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape5.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape5.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0f156ba9342239c46aed04d6d76f63df
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 4512308759043327336
|
||||||
|
second: Shape5 1_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape5_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 77e3eed9f04178e4f9c0bf90a2a02e95
|
||||||
|
internalID: 545085061
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: f9ebac905a28300409fc506b11c5d602
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape5_0: 545085061
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape5R.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape5R.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 31176c1dad1528648b981c3f381538e6
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: -3226689649940064328
|
||||||
|
second: Shape5R_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape5R_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: -1
|
||||||
|
bones: []
|
||||||
|
spriteID: 8b794eeebde7833d0800000000000000
|
||||||
|
internalID: -3226689649940064328
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 155f656c7dd60e84487270a13b751ff9
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape5R_0: -3226689649940064328
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape6.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape6.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c9b141c0ca8516547a8e99ca77c515b2
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 8275124760050778245
|
||||||
|
second: Shape6 1_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape6_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 4a4a70681bb5f644aa29b589afdea51f
|
||||||
|
internalID: 398718069
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 7543fc55583240843abd7de748569ec6
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape6_0: 398718069
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape6R.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape6R.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1d3449d55dc75084798fbfe7f80b498c
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: -468958562667066170
|
||||||
|
second: Shape6R_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape6R_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: -1
|
||||||
|
bones: []
|
||||||
|
spriteID: 6cc0ad10caced79f0800000000000000
|
||||||
|
internalID: -468958562667066170
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: feebd1d4426d44d46ba939744443c22e
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape6R_0: -468958562667066170
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape7.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape7.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2876a4a9ee4ac0147a40b9aef4f5735d
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 6470684185449142315
|
||||||
|
second: Shape7 1_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape7_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: e7b475b9855c39e46bfa4078bbecabc0
|
||||||
|
internalID: 2139176427
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 300da23d9637cb84cbd484c9719cc3b5
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape7_0: 2139176427
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Art/Textures/Cards/Shapes/Shape7R.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
171
Assets/Art/Textures/Cards/Shapes/Shape7R.png.meta
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cea8b6b9894c1a448a63c4aa955ac29d
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 5214814687588184791
|
||||||
|
second: Shape7R_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Shape7R_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 675
|
||||||
|
height: 900
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: -1
|
||||||
|
bones: []
|
||||||
|
spriteID: 7d2fe2f345ebe5840800000000000000
|
||||||
|
internalID: 5214814687588184791
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: ee8a1858de3879a46a4da7663241b9c2
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries:
|
||||||
|
- key: SpriteEditor.SliceSettings
|
||||||
|
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":675.0,"y":900.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
|
||||||
|
nameFileIdTable:
|
||||||
|
Shape7R_0: 5214814687588184791
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -17,3 +17,5 @@ MonoBehaviour:
|
|||||||
description: A pack of Burguer Buns, they need to be combined with the headband
|
description: A pack of Burguer Buns, they need to be combined with the headband
|
||||||
to get "Bunfflers"
|
to get "Bunfflers"
|
||||||
mapSprite: {fileID: 7029408211075050325, guid: 00637ce2d8f2923419b6ed4e91792dc0, type: 3}
|
mapSprite: {fileID: 7029408211075050325, guid: 00637ce2d8f2923419b6ed4e91792dc0, type: 3}
|
||||||
|
pickUpSound: {fileID: 6418180475301049370, guid: ee2166600ebe2b84ea8b22d20e34a691, type: 2}
|
||||||
|
dropSound: {fileID: 6418180475301049370, guid: ee2166600ebe2b84ea8b22d20e34a691, type: 2}
|
||||||
|
|||||||
@@ -16,3 +16,5 @@ MonoBehaviour:
|
|||||||
targetMinigameSceneName: DivingForPictures
|
targetMinigameSceneName: DivingForPictures
|
||||||
description: Level loading for Quarry
|
description: Level loading for Quarry
|
||||||
mapSprite: {fileID: -3645797367086948227, guid: fea1a8662ef819746b8073c9ba0d9047, type: 3}
|
mapSprite: {fileID: -3645797367086948227, guid: fea1a8662ef819746b8073c9ba0d9047, type: 3}
|
||||||
|
menuSprite: {fileID: 0}
|
||||||
|
minigameMenuSprite: {fileID: 6579828237621196356, guid: 7031dc4d177f92b4f970e104cdd6de51, type: 3}
|
||||||
|
|||||||
@@ -13,5 +13,7 @@ MonoBehaviour:
|
|||||||
m_Name: Quarry_MiniGame
|
m_Name: Quarry_MiniGame
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
targetLevelSceneName: DivingForPictures
|
targetLevelSceneName: DivingForPictures
|
||||||
|
targetMinigameSceneName:
|
||||||
description: Level loading for Quarry
|
description: Level loading for Quarry
|
||||||
mapSprite: {fileID: 2730440365418504821, guid: 55ac8382720be7e4c856d9fc8864902c, type: 3}
|
mapSprite: {fileID: 2730440365418504821, guid: 55ac8382720be7e4c856d9fc8864902c, type: 3}
|
||||||
|
menuSprite: {fileID: 6579828237621196356, guid: 7031dc4d177f92b4f970e104cdd6de51, type: 3}
|
||||||
|
|||||||
@@ -530,4 +530,4 @@ MonoBehaviour:
|
|||||||
- rid: 7545630068434796549
|
- rid: 7545630068434796549
|
||||||
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
|
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
|
||||||
data:
|
data:
|
||||||
m_Value: 0
|
m_Value: 1
|
||||||
|
|||||||
@@ -530,4 +530,4 @@ MonoBehaviour:
|
|||||||
- rid: 7545630068434796550
|
- rid: 7545630068434796550
|
||||||
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
|
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
|
||||||
data:
|
data:
|
||||||
m_Value: 0
|
m_Value: 1
|
||||||
|
|||||||
@@ -530,4 +530,4 @@ MonoBehaviour:
|
|||||||
- rid: 7545630068434796545
|
- rid: 7545630068434796545
|
||||||
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
|
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
|
||||||
data:
|
data:
|
||||||
m_Value: 0
|
m_Value: 1
|
||||||
|
|||||||
@@ -6,7 +6,8 @@
|
|||||||
"GUID:69448af7b92c7f342b298e06a37122aa",
|
"GUID:69448af7b92c7f342b298e06a37122aa",
|
||||||
"GUID:9e24947de15b9834991c9d8411ea37cf",
|
"GUID:9e24947de15b9834991c9d8411ea37cf",
|
||||||
"GUID:70ef9a24f4cfc4aec911c1414e3f90ad",
|
"GUID:70ef9a24f4cfc4aec911c1414e3f90ad",
|
||||||
"GUID:d1e08c06f8f9473888c892637c83c913"
|
"GUID:d1e08c06f8f9473888c892637c83c913",
|
||||||
|
"GUID:db4a9769b2b9c5a4788bcd189eea1f0b"
|
||||||
],
|
],
|
||||||
"includePlatforms": [
|
"includePlatforms": [
|
||||||
"Editor"
|
"Editor"
|
||||||
|
|||||||
369
Assets/Editor/CardSystem/CardSystemTesterWindow.cs
Normal file
@@ -0,0 +1,369 @@
|
|||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
using AppleHills.Data.CardSystem;
|
||||||
|
using Data.CardSystem;
|
||||||
|
using Core;
|
||||||
|
using UI.CardSystem;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Editor.CardSystem
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Editor window for testing the Card System in play mode.
|
||||||
|
/// Provides buttons to test core functionalities like adding booster packs, opening packs, and generating cards.
|
||||||
|
/// </summary>
|
||||||
|
public class CardSystemTesterWindow : EditorWindow
|
||||||
|
{
|
||||||
|
// Test Settings
|
||||||
|
private int boosterPacksToAdd = 3;
|
||||||
|
private int cardsToGenerate = 10;
|
||||||
|
private bool autoOpenPacksWhenAdded = false;
|
||||||
|
|
||||||
|
// Debug Info
|
||||||
|
private int currentBoosterCount;
|
||||||
|
private int totalCardsInCollection;
|
||||||
|
private string lastActionMessage = "";
|
||||||
|
|
||||||
|
// UI State
|
||||||
|
private Vector2 scrollPosition;
|
||||||
|
private CardAlbumUI cachedCardAlbumUI;
|
||||||
|
|
||||||
|
[MenuItem("AppleHills/Card System Tester")]
|
||||||
|
public static void ShowWindow()
|
||||||
|
{
|
||||||
|
var window = GetWindow<CardSystemTesterWindow>(false, "Card System Tester", true);
|
||||||
|
window.minSize = new Vector2(400, 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDisable()
|
||||||
|
{
|
||||||
|
EditorApplication.playModeStateChanged -= OnPlayModeStateChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnPlayModeStateChanged(PlayModeStateChange state)
|
||||||
|
{
|
||||||
|
if (state == PlayModeStateChange.EnteredPlayMode)
|
||||||
|
{
|
||||||
|
cachedCardAlbumUI = null;
|
||||||
|
RefreshDebugInfo();
|
||||||
|
}
|
||||||
|
else if (state == PlayModeStateChange.ExitingPlayMode)
|
||||||
|
{
|
||||||
|
cachedCardAlbumUI = null;
|
||||||
|
lastActionMessage = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
Repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGUI()
|
||||||
|
{
|
||||||
|
scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);
|
||||||
|
|
||||||
|
// Header
|
||||||
|
EditorGUILayout.Space(10);
|
||||||
|
EditorGUILayout.LabelField("Card System Tester", EditorStyles.boldLabel);
|
||||||
|
EditorGUILayout.HelpBox("This tool allows you to test the card system in play mode. " +
|
||||||
|
"Enter play mode to enable the testing functions.", MessageType.Info);
|
||||||
|
|
||||||
|
EditorGUILayout.Space(10);
|
||||||
|
|
||||||
|
// Test Settings Section
|
||||||
|
DrawTestSettings();
|
||||||
|
|
||||||
|
EditorGUILayout.Space(10);
|
||||||
|
|
||||||
|
// Debug Info Section
|
||||||
|
DrawDebugInfo();
|
||||||
|
|
||||||
|
EditorGUILayout.Space(10);
|
||||||
|
|
||||||
|
// Test Actions Section
|
||||||
|
DrawTestActions();
|
||||||
|
|
||||||
|
EditorGUILayout.EndScrollView();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawTestSettings()
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField("Test Settings", EditorStyles.boldLabel);
|
||||||
|
|
||||||
|
EditorGUI.BeginDisabledGroup(!Application.isPlaying);
|
||||||
|
|
||||||
|
boosterPacksToAdd = EditorGUILayout.IntSlider("Booster Packs to Add", boosterPacksToAdd, 1, 10);
|
||||||
|
cardsToGenerate = EditorGUILayout.IntSlider("Cards to Generate", cardsToGenerate, 1, 100);
|
||||||
|
autoOpenPacksWhenAdded = EditorGUILayout.Toggle("Auto-Open Packs When Added", autoOpenPacksWhenAdded);
|
||||||
|
|
||||||
|
EditorGUI.EndDisabledGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawDebugInfo()
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField("Debug Info", EditorStyles.boldLabel);
|
||||||
|
|
||||||
|
if (Application.isPlaying)
|
||||||
|
{
|
||||||
|
EditorGUI.BeginDisabledGroup(true);
|
||||||
|
EditorGUILayout.IntField("Current Booster Count", currentBoosterCount);
|
||||||
|
EditorGUILayout.IntField("Total Cards in Collection", totalCardsInCollection);
|
||||||
|
EditorGUI.EndDisabledGroup();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(lastActionMessage))
|
||||||
|
{
|
||||||
|
EditorGUILayout.Space(5);
|
||||||
|
EditorGUILayout.HelpBox(lastActionMessage, MessageType.None);
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.Space(5);
|
||||||
|
if (GUILayout.Button("Refresh Debug Info"))
|
||||||
|
{
|
||||||
|
RefreshDebugInfo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EditorGUILayout.HelpBox("Debug info available in play mode.", MessageType.Warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawTestActions()
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField("Test Actions", EditorStyles.boldLabel);
|
||||||
|
|
||||||
|
if (!Application.isPlaying)
|
||||||
|
{
|
||||||
|
EditorGUILayout.HelpBox("Enter Play Mode to use these testing functions.", MessageType.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Booster Pack Actions
|
||||||
|
EditorGUILayout.Space(5);
|
||||||
|
EditorGUILayout.LabelField("Booster Pack Actions", EditorStyles.miniBoldLabel);
|
||||||
|
|
||||||
|
if (GUILayout.Button("Add Booster Packs", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
AddBoosterPacks();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GUILayout.Button("Open Card Menu", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
SimulateBackpackClick();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GUILayout.Button("Open Booster Pack", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
OpenBoosterPack();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GUILayout.Button("Open Album View", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
OpenAlbumView();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Card Generation Actions
|
||||||
|
EditorGUILayout.Space(10);
|
||||||
|
EditorGUILayout.LabelField("Card Generation Actions", EditorStyles.miniBoldLabel);
|
||||||
|
|
||||||
|
if (GUILayout.Button("Generate Random Cards", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
GenerateRandomCards();
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.Space(5);
|
||||||
|
|
||||||
|
// Danger Zone
|
||||||
|
EditorGUILayout.Space(10);
|
||||||
|
EditorGUILayout.LabelField("Danger Zone", EditorStyles.miniBoldLabel);
|
||||||
|
|
||||||
|
GUI.backgroundColor = new Color(1f, 0.6f, 0.6f);
|
||||||
|
if (GUILayout.Button("Clear All Cards", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
if (EditorUtility.DisplayDialog("Clear All Cards",
|
||||||
|
"Are you sure you want to clear all cards from the inventory? This cannot be undone in this play session.",
|
||||||
|
"Clear All", "Cancel"))
|
||||||
|
{
|
||||||
|
ClearAllCards();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
GUI.backgroundColor = Color.white;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Refresh the debug information
|
||||||
|
private void RefreshDebugInfo()
|
||||||
|
{
|
||||||
|
if (!Application.isPlaying)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (CardSystemManager.Instance != null)
|
||||||
|
{
|
||||||
|
currentBoosterCount = CardSystemManager.Instance.GetBoosterPackCount();
|
||||||
|
totalCardsInCollection = CardSystemManager.Instance.GetCardInventory().GetAllCards().Count;
|
||||||
|
Repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private CardAlbumUI GetCardAlbumUI()
|
||||||
|
{
|
||||||
|
if (cachedCardAlbumUI == null)
|
||||||
|
{
|
||||||
|
cachedCardAlbumUI = Object.FindAnyObjectByType<CardAlbumUI>();
|
||||||
|
|
||||||
|
if (cachedCardAlbumUI == null)
|
||||||
|
{
|
||||||
|
lastActionMessage = "Error: No CardAlbumUI found in the scene!";
|
||||||
|
Debug.LogError("[CardSystemTesterWindow] " + lastActionMessage);
|
||||||
|
Repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return cachedCardAlbumUI;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test Action Methods
|
||||||
|
|
||||||
|
private void AddBoosterPacks()
|
||||||
|
{
|
||||||
|
if (CardSystemManager.Instance != null)
|
||||||
|
{
|
||||||
|
CardSystemManager.Instance.AddBoosterPack(boosterPacksToAdd);
|
||||||
|
lastActionMessage = $"Added {boosterPacksToAdd} booster pack(s)";
|
||||||
|
Logging.Debug($"[CardSystemTesterWindow] {lastActionMessage}");
|
||||||
|
RefreshDebugInfo();
|
||||||
|
|
||||||
|
if (autoOpenPacksWhenAdded && GetCardAlbumUI() != null)
|
||||||
|
{
|
||||||
|
SimulateBackpackClick();
|
||||||
|
cachedCardAlbumUI.OpenBoosterPack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lastActionMessage = "Error: CardSystemManager instance not found!";
|
||||||
|
Debug.LogError("[CardSystemTesterWindow] " + lastActionMessage);
|
||||||
|
Repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SimulateBackpackClick()
|
||||||
|
{
|
||||||
|
CardAlbumUI cardAlbumUI = GetCardAlbumUI();
|
||||||
|
|
||||||
|
if (cardAlbumUI != null)
|
||||||
|
{
|
||||||
|
if (cardAlbumUI.BackpackIcon != null)
|
||||||
|
{
|
||||||
|
Button backpackButton = cardAlbumUI.BackpackIcon.GetComponent<Button>();
|
||||||
|
if (backpackButton != null)
|
||||||
|
{
|
||||||
|
backpackButton.onClick.Invoke();
|
||||||
|
lastActionMessage = "Opened card menu via backpack click";
|
||||||
|
Logging.Debug($"[CardSystemTesterWindow] {lastActionMessage}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lastActionMessage = "Failed to find Button component on backpack icon";
|
||||||
|
Logging.Warning($"[CardSystemTesterWindow] {lastActionMessage}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lastActionMessage = "BackpackIcon reference is null";
|
||||||
|
Logging.Warning($"[CardSystemTesterWindow] {lastActionMessage}");
|
||||||
|
}
|
||||||
|
|
||||||
|
Repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OpenBoosterPack()
|
||||||
|
{
|
||||||
|
CardAlbumUI cardAlbumUI = GetCardAlbumUI();
|
||||||
|
|
||||||
|
if (cardAlbumUI != null)
|
||||||
|
{
|
||||||
|
SimulateBackpackClick();
|
||||||
|
cardAlbumUI.OpenBoosterPack();
|
||||||
|
lastActionMessage = "Opening booster pack";
|
||||||
|
Logging.Debug($"[CardSystemTesterWindow] {lastActionMessage}");
|
||||||
|
RefreshDebugInfo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OpenAlbumView()
|
||||||
|
{
|
||||||
|
CardAlbumUI cardAlbumUI = GetCardAlbumUI();
|
||||||
|
|
||||||
|
if (cardAlbumUI != null)
|
||||||
|
{
|
||||||
|
SimulateBackpackClick();
|
||||||
|
cardAlbumUI.OpenAlbumView();
|
||||||
|
lastActionMessage = "Opening album view";
|
||||||
|
Logging.Debug($"[CardSystemTesterWindow] {lastActionMessage}");
|
||||||
|
Repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GenerateRandomCards()
|
||||||
|
{
|
||||||
|
if (CardSystemManager.Instance != null)
|
||||||
|
{
|
||||||
|
int cardsAdded = 0;
|
||||||
|
List<CardDefinition> allDefinitions = CardSystemManager.Instance.GetAllCardDefinitions();
|
||||||
|
|
||||||
|
if (allDefinitions.Count == 0)
|
||||||
|
{
|
||||||
|
lastActionMessage = "Error: No card definitions available";
|
||||||
|
Logging.Warning($"[CardSystemTesterWindow] {lastActionMessage}");
|
||||||
|
Repaint();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < cardsToGenerate; i++)
|
||||||
|
{
|
||||||
|
// Get a random card definition
|
||||||
|
CardDefinition randomDef = allDefinitions[Random.Range(0, allDefinitions.Count)];
|
||||||
|
|
||||||
|
// Create a card data instance and add it to inventory
|
||||||
|
CardData newCard = randomDef.CreateCardData();
|
||||||
|
CardSystemManager.Instance.GetCardInventory().AddCard(newCard);
|
||||||
|
cardsAdded++;
|
||||||
|
}
|
||||||
|
|
||||||
|
lastActionMessage = $"Generated {cardsAdded} random cards";
|
||||||
|
Logging.Debug($"[CardSystemTesterWindow] {lastActionMessage}");
|
||||||
|
RefreshDebugInfo();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lastActionMessage = "Error: CardSystemManager instance not found!";
|
||||||
|
Debug.LogError("[CardSystemTesterWindow] " + lastActionMessage);
|
||||||
|
Repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ClearAllCards()
|
||||||
|
{
|
||||||
|
if (CardSystemManager.Instance != null)
|
||||||
|
{
|
||||||
|
int count = CardSystemManager.Instance.GetCardInventory().GetAllCards().Count;
|
||||||
|
CardSystemManager.Instance.GetCardInventory().ClearAllCards();
|
||||||
|
lastActionMessage = $"Cleared {count} cards from inventory";
|
||||||
|
Logging.Debug($"[CardSystemTesterWindow] {lastActionMessage}");
|
||||||
|
RefreshDebugInfo();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lastActionMessage = "Error: CardSystemManager instance not found!";
|
||||||
|
Debug.LogError("[CardSystemTesterWindow] " + lastActionMessage);
|
||||||
|
Repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
3
Assets/Editor/CardSystem/CardSystemTesterWindow.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8af3bdff6ac2404e91e0ed505d2e617d
|
||||||
|
timeCreated: 1761829755
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
|
|
||||||
namespace Interactions
|
namespace Interactions
|
||||||
{
|
{
|
||||||
[CustomEditor(typeof(Interactable))]
|
[CustomEditor(typeof(InteractableBase), true)]
|
||||||
public class InteractableEditor : UnityEditor.Editor
|
public class InteractableEditor : UnityEditor.Editor
|
||||||
{
|
{
|
||||||
SerializedProperty isOneTimeProp;
|
SerializedProperty isOneTimeProp;
|
||||||
@@ -14,6 +14,9 @@ namespace Interactions
|
|||||||
SerializedProperty characterArrivedProp;
|
SerializedProperty characterArrivedProp;
|
||||||
SerializedProperty interactionCompleteProp;
|
SerializedProperty interactionCompleteProp;
|
||||||
|
|
||||||
|
private bool showBaseSettings = true;
|
||||||
|
private bool showEvents = false;
|
||||||
|
|
||||||
private void OnEnable()
|
private void OnEnable()
|
||||||
{
|
{
|
||||||
isOneTimeProp = serializedObject.FindProperty("isOneTime");
|
isOneTimeProp = serializedObject.FindProperty("isOneTime");
|
||||||
@@ -29,70 +32,96 @@ namespace Interactions
|
|||||||
{
|
{
|
||||||
serializedObject.Update();
|
serializedObject.Update();
|
||||||
|
|
||||||
EditorGUILayout.LabelField("Interaction Settings", EditorStyles.boldLabel);
|
// Draw child-specific properties first (anything not part of base class)
|
||||||
EditorGUILayout.PropertyField(isOneTimeProp);
|
DrawPropertiesExcluding(serializedObject,
|
||||||
EditorGUILayout.PropertyField(cooldownProp);
|
"m_Script",
|
||||||
EditorGUILayout.PropertyField(characterToInteractProp);
|
"isOneTime",
|
||||||
|
"cooldown",
|
||||||
|
"characterToInteract",
|
||||||
|
"interactionStarted",
|
||||||
|
"interactionInterrupted",
|
||||||
|
"characterArrived",
|
||||||
|
"interactionComplete");
|
||||||
|
|
||||||
// Add the buttons for creating move targets
|
// Base Interaction Settings (Collapsible)
|
||||||
EditorGUILayout.Space(10);
|
EditorGUILayout.Space(10);
|
||||||
EditorGUILayout.LabelField("Character Move Targets", EditorStyles.boldLabel);
|
showBaseSettings = EditorGUILayout.Foldout(showBaseSettings, "Base Interaction Settings", true, EditorStyles.foldoutHeader);
|
||||||
|
if (showBaseSettings)
|
||||||
|
{
|
||||||
|
EditorGUI.indentLevel++;
|
||||||
|
EditorGUILayout.PropertyField(isOneTimeProp);
|
||||||
|
EditorGUILayout.PropertyField(cooldownProp);
|
||||||
|
EditorGUILayout.PropertyField(characterToInteractProp);
|
||||||
|
|
||||||
|
// Character Move Targets (sub-section)
|
||||||
|
EditorGUILayout.Space(5);
|
||||||
|
EditorGUILayout.LabelField("Character Move Targets", EditorStyles.boldLabel);
|
||||||
|
|
||||||
EditorGUILayout.BeginHorizontal();
|
EditorGUILayout.BeginHorizontal();
|
||||||
if (GUILayout.Button("Add Trafalgar Target"))
|
if (GUILayout.Button("Add Trafalgar Target"))
|
||||||
{
|
{
|
||||||
CreateMoveTarget(CharacterToInteract.Trafalgar);
|
CreateMoveTarget(CharacterToInteract.Trafalgar);
|
||||||
}
|
}
|
||||||
if (GUILayout.Button("Add Pulver Target"))
|
if (GUILayout.Button("Add Pulver Target"))
|
||||||
{
|
{
|
||||||
CreateMoveTarget(CharacterToInteract.Pulver);
|
CreateMoveTarget(CharacterToInteract.Pulver);
|
||||||
}
|
}
|
||||||
EditorGUILayout.EndHorizontal();
|
EditorGUILayout.EndHorizontal();
|
||||||
|
|
||||||
// Add a button for creating a "Both" target
|
// Add a button for creating a "Both" target
|
||||||
if (GUILayout.Button("Add Both Characters Target"))
|
if (GUILayout.Button("Add Both Characters Target"))
|
||||||
{
|
{
|
||||||
CreateMoveTarget(CharacterToInteract.Both);
|
CreateMoveTarget(CharacterToInteract.Both);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Display character target counts
|
// Display character target counts
|
||||||
Interactable interactable = (Interactable)target;
|
InteractableBase interactable = (InteractableBase)target;
|
||||||
CharacterMoveToTarget[] moveTargets = interactable.GetComponentsInChildren<CharacterMoveToTarget>();
|
CharacterMoveToTarget[] moveTargets = interactable.GetComponentsInChildren<CharacterMoveToTarget>();
|
||||||
int trafalgarTargets = 0;
|
int trafalgarTargets = 0;
|
||||||
int pulverTargets = 0;
|
int pulverTargets = 0;
|
||||||
int bothTargets = 0;
|
int bothTargets = 0;
|
||||||
|
|
||||||
foreach (var target in moveTargets)
|
foreach (var target in moveTargets)
|
||||||
{
|
{
|
||||||
if (target.characterType == CharacterToInteract.Trafalgar)
|
if (target.characterType == CharacterToInteract.Trafalgar)
|
||||||
trafalgarTargets++;
|
trafalgarTargets++;
|
||||||
else if (target.characterType == CharacterToInteract.Pulver)
|
else if (target.characterType == CharacterToInteract.Pulver)
|
||||||
pulverTargets++;
|
pulverTargets++;
|
||||||
else if (target.characterType == CharacterToInteract.Both)
|
else if (target.characterType == CharacterToInteract.Both)
|
||||||
bothTargets++;
|
bothTargets++;
|
||||||
}
|
}
|
||||||
|
|
||||||
EditorGUILayout.LabelField($"Trafalgar Targets: {trafalgarTargets}, Pulver Targets: {pulverTargets}, Both Targets: {bothTargets}");
|
EditorGUILayout.LabelField($"Trafalgar Targets: {trafalgarTargets}, Pulver Targets: {pulverTargets}, Both Targets: {bothTargets}");
|
||||||
|
|
||||||
if (trafalgarTargets > 1 || pulverTargets > 1 || bothTargets > 1 ||
|
if (trafalgarTargets > 1 || pulverTargets > 1 || bothTargets > 1 ||
|
||||||
(bothTargets > 0 && (trafalgarTargets > 0 || pulverTargets > 0)))
|
(bothTargets > 0 && (trafalgarTargets > 0 || pulverTargets > 0)))
|
||||||
{
|
{
|
||||||
EditorGUILayout.HelpBox("Warning: Multiple move targets found that may conflict. Priority order: Both > Character-specific targets.", MessageType.Warning);
|
EditorGUILayout.HelpBox("Warning: Multiple move targets found that may conflict. Priority order: Both > Character-specific targets.", MessageType.Warning);
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUI.indentLevel--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Interaction Events (Collapsible)
|
||||||
EditorGUILayout.Space(10);
|
EditorGUILayout.Space(10);
|
||||||
EditorGUILayout.LabelField("Interaction Events", EditorStyles.boldLabel);
|
showEvents = EditorGUILayout.Foldout(showEvents, "Interaction Events", true, EditorStyles.foldoutHeader);
|
||||||
EditorGUILayout.PropertyField(interactionStartedProp);
|
if (showEvents)
|
||||||
EditorGUILayout.PropertyField(interactionInterruptedProp);
|
{
|
||||||
EditorGUILayout.PropertyField(characterArrivedProp);
|
EditorGUI.indentLevel++;
|
||||||
EditorGUILayout.PropertyField(interactionCompleteProp);
|
EditorGUILayout.PropertyField(interactionStartedProp);
|
||||||
|
EditorGUILayout.PropertyField(interactionInterruptedProp);
|
||||||
|
EditorGUILayout.PropertyField(characterArrivedProp);
|
||||||
|
EditorGUILayout.PropertyField(interactionCompleteProp);
|
||||||
|
EditorGUI.indentLevel--;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
serializedObject.ApplyModifiedProperties();
|
serializedObject.ApplyModifiedProperties();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CreateMoveTarget(CharacterToInteract characterType)
|
private void CreateMoveTarget(CharacterToInteract characterType)
|
||||||
{
|
{
|
||||||
Interactable interactable = (Interactable)target;
|
InteractableBase interactable = (InteractableBase)target;
|
||||||
|
|
||||||
// Create a new GameObject
|
// Create a new GameObject
|
||||||
GameObject targetObj = new GameObject($"{characterType}MoveTarget");
|
GameObject targetObj = new GameObject($"{characterType}MoveTarget");
|
||||||
|
|||||||
649
Assets/Editor/RemoveInteractableBaseComponents.cs
Normal file
@@ -0,0 +1,649 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.SceneManagement;
|
||||||
|
using UnityEngine.SceneManagement;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using Interactions;
|
||||||
|
|
||||||
|
namespace Editor
|
||||||
|
{
|
||||||
|
public class RemoveInteractableBaseComponents : EditorWindow
|
||||||
|
{
|
||||||
|
private List<string> problematicPrefabs = new List<string>();
|
||||||
|
private List<string> problematicScenes = new List<string>();
|
||||||
|
private Vector2 scrollPosition;
|
||||||
|
private bool hasScanned;
|
||||||
|
private int componentsFound;
|
||||||
|
|
||||||
|
[MenuItem("AppleHills/Remove InteractableBase Components")]
|
||||||
|
public static void ShowWindow()
|
||||||
|
{
|
||||||
|
var window = GetWindow<RemoveInteractableBaseComponents>("Remove InteractableBase");
|
||||||
|
window.minSize = new Vector2(700, 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGUI()
|
||||||
|
{
|
||||||
|
GUILayout.Label("Remove InteractableBase Component References", EditorStyles.boldLabel);
|
||||||
|
|
||||||
|
EditorGUILayout.HelpBox(
|
||||||
|
"This tool finds and removes EXACT InteractableBase components from prefabs and scenes.\n\n" +
|
||||||
|
"Only finds the bare base class, NOT derived types like Pickup/ItemSlot/OneClickInteraction.\n\n" +
|
||||||
|
"If components depend on InteractableBase, you'll be prompted to replace it.",
|
||||||
|
MessageType.Info);
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
if (GUILayout.Button("Scan All Prefabs and Scenes", GUILayout.Height(35)))
|
||||||
|
{
|
||||||
|
ScanAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
if (hasScanned)
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField($"Found {componentsFound} exact InteractableBase components", EditorStyles.boldLabel);
|
||||||
|
EditorGUILayout.LabelField($"In {problematicPrefabs.Count} prefabs");
|
||||||
|
EditorGUILayout.LabelField($"In {problematicScenes.Count} scenes");
|
||||||
|
|
||||||
|
if (componentsFound > 0)
|
||||||
|
{
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
EditorGUILayout.BeginHorizontal();
|
||||||
|
|
||||||
|
if (problematicPrefabs.Count > 0 && GUILayout.Button($"Remove from Prefabs ({problematicPrefabs.Count})", GUILayout.Height(35)))
|
||||||
|
{
|
||||||
|
RemoveFromAllPrefabs();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (problematicScenes.Count > 0 && GUILayout.Button($"Remove from Scenes ({problematicScenes.Count})", GUILayout.Height(35)))
|
||||||
|
{
|
||||||
|
RemoveFromAllScenes();
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
if (GUILayout.Button("Remove All (Prefabs + Scenes)", GUILayout.Height(35)))
|
||||||
|
{
|
||||||
|
RemoveAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);
|
||||||
|
|
||||||
|
if (problematicPrefabs.Count > 0)
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField("Prefabs:", EditorStyles.boldLabel);
|
||||||
|
foreach (var prefabPath in problematicPrefabs)
|
||||||
|
{
|
||||||
|
EditorGUILayout.BeginHorizontal("box");
|
||||||
|
EditorGUILayout.LabelField(prefabPath);
|
||||||
|
if (GUILayout.Button("Remove", GUILayout.Width(80)))
|
||||||
|
{
|
||||||
|
RemoveFromPrefab(prefabPath);
|
||||||
|
}
|
||||||
|
EditorGUILayout.EndHorizontal();
|
||||||
|
}
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (problematicScenes.Count > 0)
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField("Scenes:", EditorStyles.boldLabel);
|
||||||
|
foreach (var scenePath in problematicScenes)
|
||||||
|
{
|
||||||
|
EditorGUILayout.BeginHorizontal("box");
|
||||||
|
EditorGUILayout.LabelField(scenePath);
|
||||||
|
if (GUILayout.Button("Remove", GUILayout.Width(80)))
|
||||||
|
{
|
||||||
|
RemoveFromScene(scenePath);
|
||||||
|
}
|
||||||
|
EditorGUILayout.EndHorizontal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.EndScrollView();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EditorGUILayout.HelpBox("No exact InteractableBase components found! All clean.", MessageType.Info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ScanAll()
|
||||||
|
{
|
||||||
|
problematicPrefabs.Clear();
|
||||||
|
problematicScenes.Clear();
|
||||||
|
componentsFound = 0;
|
||||||
|
hasScanned = true;
|
||||||
|
|
||||||
|
ScanPrefabs();
|
||||||
|
ScanScenes();
|
||||||
|
|
||||||
|
Debug.Log($"<color=cyan>[Scan Complete]</color> Found {componentsFound} exact InteractableBase components in {problematicPrefabs.Count} prefabs and {problematicScenes.Count} scenes.");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ScanPrefabs()
|
||||||
|
{
|
||||||
|
string[] prefabGuids = AssetDatabase.FindAssets("t:Prefab", new[] { "Assets" });
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("Scanning Prefabs", "Starting...", 0f);
|
||||||
|
|
||||||
|
for (int i = 0; i < prefabGuids.Length; i++)
|
||||||
|
{
|
||||||
|
string path = AssetDatabase.GUIDToAssetPath(prefabGuids[i]);
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("Scanning Prefabs",
|
||||||
|
$"Checking {i + 1}/{prefabGuids.Length}: {Path.GetFileName(path)}",
|
||||||
|
(float)i / prefabGuids.Length);
|
||||||
|
|
||||||
|
GameObject prefab = AssetDatabase.LoadAssetAtPath<GameObject>(path);
|
||||||
|
if (prefab != null)
|
||||||
|
{
|
||||||
|
// Check if this prefab or any of its children have EXACTLY InteractableBase (not derived types)
|
||||||
|
InteractableBase[] components = prefab.GetComponentsInChildren<InteractableBase>(true);
|
||||||
|
int exactMatches = 0;
|
||||||
|
foreach (var component in components)
|
||||||
|
{
|
||||||
|
if (component != null && component.GetType() == typeof(InteractableBase))
|
||||||
|
{
|
||||||
|
exactMatches++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exactMatches > 0)
|
||||||
|
{
|
||||||
|
problematicPrefabs.Add(path);
|
||||||
|
componentsFound += exactMatches;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorUtility.ClearProgressBar();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ScanScenes()
|
||||||
|
{
|
||||||
|
string[] sceneGuids = AssetDatabase.FindAssets("t:Scene", new[] { "Assets/Scenes" });
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("Scanning Scenes", "Starting...", 0f);
|
||||||
|
|
||||||
|
string currentScenePath = SceneManager.GetActiveScene().path;
|
||||||
|
|
||||||
|
for (int i = 0; i < sceneGuids.Length; i++)
|
||||||
|
{
|
||||||
|
string path = AssetDatabase.GUIDToAssetPath(sceneGuids[i]);
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("Scanning Scenes",
|
||||||
|
$"Checking {i + 1}/{sceneGuids.Length}: {Path.GetFileName(path)}",
|
||||||
|
(float)i / sceneGuids.Length);
|
||||||
|
|
||||||
|
EditorSceneManager.OpenScene(path, OpenSceneMode.Single);
|
||||||
|
|
||||||
|
// Find all InteractableBase components in the scene
|
||||||
|
InteractableBase[] components = GameObject.FindObjectsByType<InteractableBase>(FindObjectsSortMode.None);
|
||||||
|
|
||||||
|
int exactMatches = 0;
|
||||||
|
foreach (var component in components)
|
||||||
|
{
|
||||||
|
if (component != null && component.GetType() == typeof(InteractableBase))
|
||||||
|
{
|
||||||
|
exactMatches++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exactMatches > 0)
|
||||||
|
{
|
||||||
|
problematicScenes.Add(path);
|
||||||
|
componentsFound += exactMatches;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Restore original scene
|
||||||
|
if (!string.IsNullOrEmpty(currentScenePath))
|
||||||
|
{
|
||||||
|
EditorSceneManager.OpenScene(currentScenePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorUtility.ClearProgressBar();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RemoveFromAllPrefabs()
|
||||||
|
{
|
||||||
|
if (!EditorUtility.DisplayDialog("Confirm Removal",
|
||||||
|
$"This will remove InteractableBase components from {problematicPrefabs.Count} prefabs.\n\n" +
|
||||||
|
"This cannot be undone (unless you use version control).\n\nContinue?",
|
||||||
|
"Yes, Remove", "Cancel"))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int removedCount = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < problematicPrefabs.Count; i++)
|
||||||
|
{
|
||||||
|
string path = problematicPrefabs[i];
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("Removing Components from Prefabs",
|
||||||
|
$"Processing {i + 1}/{problematicPrefabs.Count}: {Path.GetFileName(path)}",
|
||||||
|
(float)i / problematicPrefabs.Count);
|
||||||
|
|
||||||
|
removedCount += RemoveFromPrefab(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorUtility.ClearProgressBar();
|
||||||
|
AssetDatabase.SaveAssets();
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
|
||||||
|
Debug.Log($"<color=green>[Prefab Cleanup Complete]</color> Removed {removedCount} InteractableBase components from prefabs.");
|
||||||
|
|
||||||
|
ScanAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RemoveFromAllScenes()
|
||||||
|
{
|
||||||
|
if (!EditorUtility.DisplayDialog("Confirm Removal",
|
||||||
|
$"This will remove InteractableBase components from {problematicScenes.Count} scenes.\n\n" +
|
||||||
|
"This cannot be undone (unless you use version control).\n\nContinue?",
|
||||||
|
"Yes, Remove", "Cancel"))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int removedCount = 0;
|
||||||
|
string currentScenePath = SceneManager.GetActiveScene().path;
|
||||||
|
|
||||||
|
for (int i = 0; i < problematicScenes.Count; i++)
|
||||||
|
{
|
||||||
|
string path = problematicScenes[i];
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("Removing Components from Scenes",
|
||||||
|
$"Processing {i + 1}/{problematicScenes.Count}: {Path.GetFileName(path)}",
|
||||||
|
(float)i / problematicScenes.Count);
|
||||||
|
|
||||||
|
removedCount += RemoveFromScene(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Restore original scene
|
||||||
|
if (!string.IsNullOrEmpty(currentScenePath))
|
||||||
|
{
|
||||||
|
EditorSceneManager.OpenScene(currentScenePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorUtility.ClearProgressBar();
|
||||||
|
AssetDatabase.SaveAssets();
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
|
||||||
|
Debug.Log($"<color=green>[Scene Cleanup Complete]</color> Removed {removedCount} InteractableBase components from scenes.");
|
||||||
|
|
||||||
|
ScanAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RemoveAll()
|
||||||
|
{
|
||||||
|
if (!EditorUtility.DisplayDialog("Confirm Removal",
|
||||||
|
$"This will remove {componentsFound} InteractableBase components from:\n" +
|
||||||
|
$"• {problematicPrefabs.Count} prefabs\n" +
|
||||||
|
$"• {problematicScenes.Count} scenes\n\n" +
|
||||||
|
"This cannot be undone (unless you use version control).\n\nContinue?",
|
||||||
|
"Yes, Remove", "Cancel"))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int removedCount = 0;
|
||||||
|
|
||||||
|
// Remove from prefabs
|
||||||
|
for (int i = 0; i < problematicPrefabs.Count; i++)
|
||||||
|
{
|
||||||
|
string path = problematicPrefabs[i];
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("Removing Components",
|
||||||
|
$"Prefabs {i + 1}/{problematicPrefabs.Count}: {Path.GetFileName(path)}",
|
||||||
|
(float)i / (problematicPrefabs.Count + problematicScenes.Count));
|
||||||
|
|
||||||
|
removedCount += RemoveFromPrefab(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove from scenes
|
||||||
|
string currentScenePath = SceneManager.GetActiveScene().path;
|
||||||
|
|
||||||
|
for (int i = 0; i < problematicScenes.Count; i++)
|
||||||
|
{
|
||||||
|
string path = problematicScenes[i];
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("Removing Components",
|
||||||
|
$"Scenes {i + 1}/{problematicScenes.Count}: {Path.GetFileName(path)}",
|
||||||
|
(float)(problematicPrefabs.Count + i) / (problematicPrefabs.Count + problematicScenes.Count));
|
||||||
|
|
||||||
|
removedCount += RemoveFromScene(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Restore original scene
|
||||||
|
if (!string.IsNullOrEmpty(currentScenePath))
|
||||||
|
{
|
||||||
|
EditorSceneManager.OpenScene(currentScenePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorUtility.ClearProgressBar();
|
||||||
|
AssetDatabase.SaveAssets();
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
|
||||||
|
Debug.Log($"<color=green>[Removal Complete]</color> Removed {removedCount} InteractableBase components.");
|
||||||
|
|
||||||
|
ScanAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
private int RemoveFromPrefab(string assetPath)
|
||||||
|
{
|
||||||
|
int removed = 0;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
GameObject prefab = AssetDatabase.LoadAssetAtPath<GameObject>(assetPath);
|
||||||
|
if (prefab == null)
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"Could not load prefab at path: {assetPath}");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
string prefabPath = AssetDatabase.GetAssetPath(prefab);
|
||||||
|
GameObject prefabContents = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
prefabContents = PrefabUtility.LoadPrefabContents(prefabPath);
|
||||||
|
}
|
||||||
|
catch (Exception loadEx)
|
||||||
|
{
|
||||||
|
Debug.LogError($"Failed to load prefab contents for {assetPath}: {loadEx.Message}");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prefabContents == null)
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"Prefab contents are null for: {assetPath}");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
InteractableBase[] components = prefabContents.GetComponentsInChildren<InteractableBase>(true);
|
||||||
|
|
||||||
|
if (components == null || components.Length == 0)
|
||||||
|
{
|
||||||
|
PrefabUtility.UnloadPrefabContents(prefabContents);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var component in components)
|
||||||
|
{
|
||||||
|
if (component == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Check if it's EXACTLY InteractableBase (not a derived type)
|
||||||
|
if (component.GetType() == typeof(InteractableBase))
|
||||||
|
{
|
||||||
|
// Cache references before destroying
|
||||||
|
GameObject targetObject = component.gameObject;
|
||||||
|
string objectName = targetObject != null ? targetObject.name : "Unknown";
|
||||||
|
|
||||||
|
// Check if GameObject already has a derived InteractableBase type
|
||||||
|
bool hasPickup = targetObject.GetComponent<Pickup>() != null;
|
||||||
|
bool hasItemSlot = targetObject.GetComponent<ItemSlot>() != null;
|
||||||
|
bool hasOneClick = targetObject.GetComponent<OneClickInteraction>() != null;
|
||||||
|
|
||||||
|
if (hasPickup || hasItemSlot || hasOneClick)
|
||||||
|
{
|
||||||
|
// GameObject already has a concrete type, safe to remove bare base class
|
||||||
|
DestroyImmediate(component);
|
||||||
|
removed++;
|
||||||
|
string existingType = hasItemSlot ? "ItemSlot" : (hasPickup ? "Pickup" : "OneClickInteraction");
|
||||||
|
Debug.Log($"<color=green>[Removed]</color> Bare InteractableBase from '{objectName}' (already has {existingType}) in prefab '{Path.GetFileName(assetPath)}'");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check what other components depend on InteractableBase
|
||||||
|
Component[] allComponents = targetObject.GetComponents<Component>();
|
||||||
|
List<string> dependentComponents = new List<string>();
|
||||||
|
|
||||||
|
foreach (var otherComponent in allComponents)
|
||||||
|
{
|
||||||
|
if (otherComponent == null || otherComponent == component)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var requireAttributes = otherComponent.GetType().GetCustomAttributes(typeof(RequireComponent), true);
|
||||||
|
foreach (RequireComponent attr in requireAttributes)
|
||||||
|
{
|
||||||
|
if (attr.m_Type0 == typeof(InteractableBase) ||
|
||||||
|
attr.m_Type1 == typeof(InteractableBase) ||
|
||||||
|
attr.m_Type2 == typeof(InteractableBase))
|
||||||
|
{
|
||||||
|
dependentComponents.Add(otherComponent.GetType().Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dependentComponents.Count > 0)
|
||||||
|
{
|
||||||
|
string dependencyList = string.Join(", ", dependentComponents);
|
||||||
|
string message = $"GameObject '{objectName}' in prefab '{Path.GetFileName(assetPath)}' has InteractableBase, " +
|
||||||
|
$"but these components depend on it:\n\n{dependencyList}\n\n" +
|
||||||
|
"Replace InteractableBase with:";
|
||||||
|
|
||||||
|
int choice = EditorUtility.DisplayDialogComplex(
|
||||||
|
"Component Dependency Detected",
|
||||||
|
message,
|
||||||
|
"Pickup",
|
||||||
|
"ItemSlot",
|
||||||
|
"OneClickInteraction");
|
||||||
|
|
||||||
|
Type replacementType = choice switch
|
||||||
|
{
|
||||||
|
0 => typeof(Pickup),
|
||||||
|
1 => typeof(ItemSlot),
|
||||||
|
2 => typeof(OneClickInteraction),
|
||||||
|
_ => null
|
||||||
|
};
|
||||||
|
|
||||||
|
if (replacementType != null)
|
||||||
|
{
|
||||||
|
// Cache component data before destroying
|
||||||
|
bool isOneTime = component.isOneTime;
|
||||||
|
float cooldown = component.cooldown;
|
||||||
|
CharacterToInteract characterToInteract = component.characterToInteract;
|
||||||
|
|
||||||
|
DestroyImmediate(component);
|
||||||
|
|
||||||
|
var newComponent = targetObject.AddComponent(replacementType) as InteractableBase;
|
||||||
|
if (newComponent != null)
|
||||||
|
{
|
||||||
|
newComponent.isOneTime = isOneTime;
|
||||||
|
newComponent.cooldown = cooldown;
|
||||||
|
newComponent.characterToInteract = characterToInteract;
|
||||||
|
|
||||||
|
removed++;
|
||||||
|
Debug.Log($"<color=cyan>[Replaced]</color> InteractableBase with {replacementType.Name} on '{objectName}' in prefab '{Path.GetFileName(assetPath)}'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"Skipped removing InteractableBase from '{objectName}' - no replacement chosen");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DestroyImmediate(component);
|
||||||
|
removed++;
|
||||||
|
Debug.Log($"<color=yellow>[Removed]</color> InteractableBase from '{objectName}' in prefab '{Path.GetFileName(assetPath)}'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (removed > 0)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
PrefabUtility.SaveAsPrefabAsset(prefabContents, prefabPath);
|
||||||
|
}
|
||||||
|
catch (Exception saveEx)
|
||||||
|
{
|
||||||
|
Debug.LogError($"Failed to save prefab {assetPath}: {saveEx.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PrefabUtility.UnloadPrefabContents(prefabContents);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.LogError($"Error removing components from prefab {assetPath}: {ex.Message}\nStack: {ex.StackTrace}");
|
||||||
|
}
|
||||||
|
|
||||||
|
return removed;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int RemoveFromScene(string scenePath)
|
||||||
|
{
|
||||||
|
int removed = 0;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Scene scene = EditorSceneManager.OpenScene(scenePath, OpenSceneMode.Single);
|
||||||
|
|
||||||
|
if (!scene.isLoaded)
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"Scene not loaded: {scenePath}");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
InteractableBase[] components = GameObject.FindObjectsByType<InteractableBase>(FindObjectsSortMode.None);
|
||||||
|
|
||||||
|
if (components == null || components.Length == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var component in components)
|
||||||
|
{
|
||||||
|
if (component == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (component.GetType() == typeof(InteractableBase))
|
||||||
|
{
|
||||||
|
// Cache references before destroying
|
||||||
|
GameObject targetObject = component.gameObject;
|
||||||
|
string objectName = targetObject != null ? targetObject.name : "Unknown";
|
||||||
|
|
||||||
|
// Check if GameObject already has a derived InteractableBase type
|
||||||
|
bool hasPickup = targetObject.GetComponent<Pickup>() != null;
|
||||||
|
bool hasItemSlot = targetObject.GetComponent<ItemSlot>() != null;
|
||||||
|
bool hasOneClick = targetObject.GetComponent<OneClickInteraction>() != null;
|
||||||
|
|
||||||
|
if (hasPickup || hasItemSlot || hasOneClick)
|
||||||
|
{
|
||||||
|
// GameObject already has a concrete type, safe to remove bare base class
|
||||||
|
DestroyImmediate(component);
|
||||||
|
removed++;
|
||||||
|
string existingType = hasItemSlot ? "ItemSlot" : (hasPickup ? "Pickup" : "OneClickInteraction");
|
||||||
|
Debug.Log($"<color=green>[Removed]</color> Bare InteractableBase from '{objectName}' (already has {existingType}) in scene '{Path.GetFileName(scenePath)}'");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Component[] allComponents = targetObject.GetComponents<Component>();
|
||||||
|
List<string> dependentComponents = new List<string>();
|
||||||
|
|
||||||
|
foreach (var otherComponent in allComponents)
|
||||||
|
{
|
||||||
|
if (otherComponent == null || otherComponent == component)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var requireAttributes = otherComponent.GetType().GetCustomAttributes(typeof(RequireComponent), true);
|
||||||
|
foreach (RequireComponent attr in requireAttributes)
|
||||||
|
{
|
||||||
|
if (attr.m_Type0 == typeof(InteractableBase) ||
|
||||||
|
attr.m_Type1 == typeof(InteractableBase) ||
|
||||||
|
attr.m_Type2 == typeof(InteractableBase))
|
||||||
|
{
|
||||||
|
dependentComponents.Add(otherComponent.GetType().Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dependentComponents.Count > 0)
|
||||||
|
{
|
||||||
|
string dependencyList = string.Join(", ", dependentComponents);
|
||||||
|
string message = $"GameObject '{objectName}' in scene '{Path.GetFileName(scenePath)}' has InteractableBase, " +
|
||||||
|
$"but these components depend on it:\n\n{dependencyList}\n\n" +
|
||||||
|
"Replace InteractableBase with:";
|
||||||
|
|
||||||
|
int choice = EditorUtility.DisplayDialogComplex(
|
||||||
|
"Component Dependency Detected",
|
||||||
|
message,
|
||||||
|
"Pickup",
|
||||||
|
"ItemSlot",
|
||||||
|
"OneClickInteraction");
|
||||||
|
|
||||||
|
Type replacementType = choice switch
|
||||||
|
{
|
||||||
|
0 => typeof(Pickup),
|
||||||
|
1 => typeof(ItemSlot),
|
||||||
|
2 => typeof(OneClickInteraction),
|
||||||
|
_ => null
|
||||||
|
};
|
||||||
|
|
||||||
|
if (replacementType != null)
|
||||||
|
{
|
||||||
|
// Cache component data before destroying
|
||||||
|
bool isOneTime = component.isOneTime;
|
||||||
|
float cooldown = component.cooldown;
|
||||||
|
CharacterToInteract characterToInteract = component.characterToInteract;
|
||||||
|
|
||||||
|
DestroyImmediate(component);
|
||||||
|
|
||||||
|
var newComponent = targetObject.AddComponent(replacementType) as InteractableBase;
|
||||||
|
if (newComponent != null)
|
||||||
|
{
|
||||||
|
newComponent.isOneTime = isOneTime;
|
||||||
|
newComponent.cooldown = cooldown;
|
||||||
|
newComponent.characterToInteract = characterToInteract;
|
||||||
|
|
||||||
|
removed++;
|
||||||
|
Debug.Log($"<color=cyan>[Replaced]</color> InteractableBase with {replacementType.Name} on '{objectName}' in scene '{Path.GetFileName(scenePath)}'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"Skipped removing InteractableBase from '{objectName}' - no replacement chosen");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DestroyImmediate(component);
|
||||||
|
removed++;
|
||||||
|
Debug.Log($"<color=yellow>[Removed]</color> InteractableBase from '{objectName}' in scene '{Path.GetFileName(scenePath)}'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (removed > 0)
|
||||||
|
{
|
||||||
|
EditorSceneManager.MarkSceneDirty(scene);
|
||||||
|
EditorSceneManager.SaveScene(scene);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.LogError($"Error removing components from scene {scenePath}: {ex.Message}\nStack: {ex.StackTrace}");
|
||||||
|
}
|
||||||
|
|
||||||
|
return removed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
3
Assets/Editor/RemoveInteractableBaseComponents.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: da895c0622e34ef8a18675993eec9877
|
||||||
|
timeCreated: 1762024152
|
||||||
228
Assets/Editor/RemoveOldInteractableReferences.cs
Normal file
@@ -0,0 +1,228 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace Editor
|
||||||
|
{
|
||||||
|
public class RemoveOldInteractableReferences : EditorWindow
|
||||||
|
{
|
||||||
|
private List<string> problematicPrefabs = new List<string>();
|
||||||
|
private Vector2 scrollPosition;
|
||||||
|
private bool hasScanned = false;
|
||||||
|
|
||||||
|
[MenuItem("AppleHills/Remove Old Interactable References")]
|
||||||
|
public static void ShowWindow()
|
||||||
|
{
|
||||||
|
var window = GetWindow<RemoveOldInteractableReferences>("Clean Old Interactables");
|
||||||
|
window.minSize = new Vector2(600, 400);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGUI()
|
||||||
|
{
|
||||||
|
GUILayout.Label("Remove Old Interactable/InteractableBase References", EditorStyles.boldLabel);
|
||||||
|
|
||||||
|
EditorGUILayout.HelpBox(
|
||||||
|
"This tool finds and removes references to:\n" +
|
||||||
|
"- Interactable (old script name)\n" +
|
||||||
|
"- InteractableBase (abstract class - not allowed on prefabs)\n\n" +
|
||||||
|
"These should be replaced by concrete types: Pickup, ItemSlot, or OneClickInteraction",
|
||||||
|
MessageType.Info);
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
if (GUILayout.Button("Scan All Prefabs", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
ScanPrefabs();
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
if (hasScanned)
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField($"Found {problematicPrefabs.Count} prefabs with old references", EditorStyles.boldLabel);
|
||||||
|
|
||||||
|
if (problematicPrefabs.Count > 0)
|
||||||
|
{
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
if (GUILayout.Button("Clean All Prefabs", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
CleanAllPrefabs();
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);
|
||||||
|
|
||||||
|
foreach (var prefabPath in problematicPrefabs)
|
||||||
|
{
|
||||||
|
EditorGUILayout.BeginHorizontal("box");
|
||||||
|
EditorGUILayout.LabelField(prefabPath);
|
||||||
|
if (GUILayout.Button("Clean This", GUILayout.Width(80)))
|
||||||
|
{
|
||||||
|
CleanSinglePrefab(prefabPath);
|
||||||
|
}
|
||||||
|
EditorGUILayout.EndHorizontal();
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.EndScrollView();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EditorGUILayout.HelpBox("No problematic prefabs found! All clean.", MessageType.Info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ScanPrefabs()
|
||||||
|
{
|
||||||
|
problematicPrefabs.Clear();
|
||||||
|
hasScanned = true;
|
||||||
|
|
||||||
|
string[] prefabGuids = AssetDatabase.FindAssets("t:Prefab", new[] { "Assets" });
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("Scanning Prefabs", "Starting...", 0f);
|
||||||
|
|
||||||
|
for (int i = 0; i < prefabGuids.Length; i++)
|
||||||
|
{
|
||||||
|
string path = AssetDatabase.GUIDToAssetPath(prefabGuids[i]);
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("Scanning Prefabs",
|
||||||
|
$"Checking {i + 1}/{prefabGuids.Length}: {Path.GetFileName(path)}",
|
||||||
|
(float)i / prefabGuids.Length);
|
||||||
|
|
||||||
|
if (PrefabHasOldInteractableReference(path))
|
||||||
|
{
|
||||||
|
problematicPrefabs.Add(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorUtility.ClearProgressBar();
|
||||||
|
|
||||||
|
Debug.Log($"<color=cyan>[Scan Complete]</color> Found {problematicPrefabs.Count} prefabs with old Interactable/InteractableBase references.");
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool PrefabHasOldInteractableReference(string assetPath)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string fullPath = Path.GetFullPath(assetPath);
|
||||||
|
string content = File.ReadAllText(fullPath);
|
||||||
|
|
||||||
|
// Look for GUID of Interactable script (11500000 is MonoBehaviour type)
|
||||||
|
// We're looking for the script reference pattern in YAML
|
||||||
|
// Pattern: m_Script: {fileID: 11500000, guid: SCRIPT_GUID, type: 3}
|
||||||
|
|
||||||
|
// Check if content contains "Interactable" class name references
|
||||||
|
// This is a simple text search - if the YAML contains these class names, it likely references them
|
||||||
|
if (content.Contains("InteractableBase") ||
|
||||||
|
(content.Contains("Interactable") && !content.Contains("OneClickInteraction")))
|
||||||
|
{
|
||||||
|
// Additional check: Look for MonoBehaviour blocks with missing scripts (fileID: 0)
|
||||||
|
if (Regex.IsMatch(content, @"m_Script:\s*\{fileID:\s*0\}"))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for direct class name matches in script references
|
||||||
|
if (Regex.IsMatch(content, @"m_Name:\s*(Interactable|InteractableBase)"))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
catch (System.Exception ex)
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"Error scanning {assetPath}: {ex.Message}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CleanAllPrefabs()
|
||||||
|
{
|
||||||
|
if (!EditorUtility.DisplayDialog("Confirm Cleanup",
|
||||||
|
$"This will remove old Interactable/InteractableBase references from {problematicPrefabs.Count} prefabs.\n\nThis cannot be undone (unless you use version control).\n\nContinue?",
|
||||||
|
"Yes, Clean", "Cancel"))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int cleanedCount = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < problematicPrefabs.Count; i++)
|
||||||
|
{
|
||||||
|
string path = problematicPrefabs[i];
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("Cleaning Prefabs",
|
||||||
|
$"Cleaning {i + 1}/{problematicPrefabs.Count}: {Path.GetFileName(path)}",
|
||||||
|
(float)i / problematicPrefabs.Count);
|
||||||
|
|
||||||
|
if (CleanPrefabFile(path))
|
||||||
|
{
|
||||||
|
cleanedCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorUtility.ClearProgressBar();
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
|
||||||
|
Debug.Log($"<color=green>[Cleanup Complete]</color> Cleaned {cleanedCount} prefabs.");
|
||||||
|
|
||||||
|
// Re-scan to update the list
|
||||||
|
ScanPrefabs();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CleanSinglePrefab(string assetPath)
|
||||||
|
{
|
||||||
|
if (CleanPrefabFile(assetPath))
|
||||||
|
{
|
||||||
|
Debug.Log($"<color=green>[Cleaned]</color> {assetPath}");
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
|
||||||
|
// Re-scan to update the list
|
||||||
|
ScanPrefabs();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool CleanPrefabFile(string assetPath)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string fullPath = Path.GetFullPath(assetPath);
|
||||||
|
string content = File.ReadAllText(fullPath);
|
||||||
|
string originalContent = content;
|
||||||
|
|
||||||
|
// Pattern 1: Remove entire MonoBehaviour component blocks with missing scripts (fileID: 0)
|
||||||
|
// This removes the component header and all its properties until the next component or end
|
||||||
|
string missingScriptPattern = @"--- !u!114 &\d+\r?\nMonoBehaviour:(?:\r?\n(?!---).+)*?\r?\n m_Script: \{fileID: 0\}(?:\r?\n(?!---).+)*";
|
||||||
|
content = Regex.Replace(content, missingScriptPattern, "", RegexOptions.Multiline);
|
||||||
|
|
||||||
|
// Pattern 2: Remove MonoBehaviour blocks that explicitly reference InteractableBase or Interactable
|
||||||
|
// This is more aggressive and targets the class name directly
|
||||||
|
string interactablePattern = @"--- !u!114 &\d+\r?\nMonoBehaviour:(?:\r?\n(?!---).+)*?\r?\n m_Name: (?:Interactable|InteractableBase)(?:\r?\n(?!---).+)*";
|
||||||
|
content = Regex.Replace(content, interactablePattern, "", RegexOptions.Multiline);
|
||||||
|
|
||||||
|
if (content != originalContent)
|
||||||
|
{
|
||||||
|
// Clean up any double blank lines that might have been created
|
||||||
|
content = Regex.Replace(content, @"(\r?\n){3,}", "\n\n");
|
||||||
|
|
||||||
|
File.WriteAllText(fullPath, content);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
catch (System.Exception ex)
|
||||||
|
{
|
||||||
|
Debug.LogError($"Error cleaning {assetPath}: {ex.Message}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
3
Assets/Editor/RemoveOldInteractableReferences.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d898bc44012542c0942b632b56cea3dc
|
||||||
|
timeCreated: 1762023714
|
||||||
575
Assets/Editor/StateMachineMigrationTool.cs
Normal file
@@ -0,0 +1,575 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.SceneManagement;
|
||||||
|
using Core.SaveLoad;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace Editor
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Editor utility to migrate StateMachine components to SaveableStateMachine.
|
||||||
|
/// </summary>
|
||||||
|
public class StateMachineMigrationTool : EditorWindow
|
||||||
|
{
|
||||||
|
private Vector2 scrollPosition;
|
||||||
|
private List<StateMachineInfo> foundStateMachines = new List<StateMachineInfo>();
|
||||||
|
private bool showPrefabs = true;
|
||||||
|
private bool showScenes = true;
|
||||||
|
|
||||||
|
[MenuItem("Tools/AppleHills/Migrate StateMachines to Saveable")]
|
||||||
|
public static void ShowWindow()
|
||||||
|
{
|
||||||
|
var window = GetWindow<StateMachineMigrationTool>("StateMachine Migration");
|
||||||
|
window.minSize = new Vector2(600, 400);
|
||||||
|
window.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGUI()
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField("StateMachine → SaveableStateMachine Migration", EditorStyles.boldLabel);
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
EditorGUILayout.HelpBox(
|
||||||
|
"This tool will replace all StateMachine components with SaveableStateMachine.\n" +
|
||||||
|
"All properties and references will be preserved.",
|
||||||
|
MessageType.Info
|
||||||
|
);
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
// Scan options
|
||||||
|
EditorGUILayout.LabelField("Scan Options:", EditorStyles.boldLabel);
|
||||||
|
showPrefabs = EditorGUILayout.Toggle("Include Prefabs", showPrefabs);
|
||||||
|
showScenes = EditorGUILayout.Toggle("Include Scenes", showScenes);
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
if (GUILayout.Button("Scan Project", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
ScanProject();
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
// Display results
|
||||||
|
if (foundStateMachines.Count > 0)
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField($"Found {foundStateMachines.Count} StateMachine(s):", EditorStyles.boldLabel);
|
||||||
|
|
||||||
|
scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);
|
||||||
|
|
||||||
|
foreach (var info in foundStateMachines)
|
||||||
|
{
|
||||||
|
// Set background color for migrated items
|
||||||
|
Color originalBgColor = GUI.backgroundColor;
|
||||||
|
if (info.isAlreadySaveable)
|
||||||
|
{
|
||||||
|
GUI.backgroundColor = new Color(0.5f, 1f, 0.5f); // Light green
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.BeginHorizontal("box");
|
||||||
|
|
||||||
|
GUI.backgroundColor = originalBgColor; // Reset for content
|
||||||
|
|
||||||
|
EditorGUILayout.LabelField(info.name, GUILayout.Width(200));
|
||||||
|
EditorGUILayout.LabelField(info.path, GUILayout.ExpandWidth(true));
|
||||||
|
|
||||||
|
// Ping button (for scene objects or prefabs)
|
||||||
|
if (GUILayout.Button("Ping", GUILayout.Width(50)))
|
||||||
|
{
|
||||||
|
PingObject(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (info.isAlreadySaveable)
|
||||||
|
{
|
||||||
|
// Green checkmark with bold style
|
||||||
|
GUIStyle greenStyle = new GUIStyle(GUI.skin.label);
|
||||||
|
greenStyle.normal.textColor = new Color(0f, 0.6f, 0f);
|
||||||
|
greenStyle.fontStyle = FontStyle.Bold;
|
||||||
|
EditorGUILayout.LabelField("✓ Migrated", greenStyle, GUILayout.Width(120));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (GUILayout.Button("Migrate", GUILayout.Width(80)))
|
||||||
|
{
|
||||||
|
if (MigrateSingle(info))
|
||||||
|
{
|
||||||
|
// Refresh the list to show updated status
|
||||||
|
ScanProject();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
GUI.backgroundColor = originalBgColor; // Final reset
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.EndScrollView();
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
int migrateCount = foundStateMachines.Count(sm => !sm.isAlreadySaveable);
|
||||||
|
if (migrateCount > 0)
|
||||||
|
{
|
||||||
|
if (GUILayout.Button($"Migrate All ({migrateCount})", GUILayout.Height(40)))
|
||||||
|
{
|
||||||
|
if (EditorUtility.DisplayDialog(
|
||||||
|
"Confirm Migration",
|
||||||
|
$"This will migrate {migrateCount} StateMachine(s) to SaveableStateMachine.\n\nContinue?",
|
||||||
|
"Yes, Migrate All",
|
||||||
|
"Cancel"))
|
||||||
|
{
|
||||||
|
MigrateAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EditorGUILayout.HelpBox("Click 'Scan Project' to find StateMachine components.", MessageType.Info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ScanProject()
|
||||||
|
{
|
||||||
|
foundStateMachines.Clear();
|
||||||
|
|
||||||
|
// Find all prefabs
|
||||||
|
if (showPrefabs)
|
||||||
|
{
|
||||||
|
string[] prefabGuids = AssetDatabase.FindAssets("t:Prefab");
|
||||||
|
foreach (string guid in prefabGuids)
|
||||||
|
{
|
||||||
|
string path = AssetDatabase.GUIDToAssetPath(guid);
|
||||||
|
GameObject prefab = AssetDatabase.LoadAssetAtPath<GameObject>(path);
|
||||||
|
|
||||||
|
if (prefab != null)
|
||||||
|
{
|
||||||
|
// Use GetComponents to find Pixelplacement.StateMachine
|
||||||
|
var components = prefab.GetComponentsInChildren<Component>(true);
|
||||||
|
foreach (var component in components)
|
||||||
|
{
|
||||||
|
if (component == null) continue;
|
||||||
|
|
||||||
|
var componentType = component.GetType();
|
||||||
|
if (componentType.Name == "StateMachine" && componentType.Namespace == "Pixelplacement")
|
||||||
|
{
|
||||||
|
bool isAlreadySaveable = component is AppleMachine;
|
||||||
|
foundStateMachines.Add(new StateMachineInfo
|
||||||
|
{
|
||||||
|
name = component.gameObject.name,
|
||||||
|
path = path,
|
||||||
|
isPrefab = true,
|
||||||
|
isAlreadySaveable = isAlreadySaveable,
|
||||||
|
assetPath = path
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find all in scenes
|
||||||
|
if (showScenes)
|
||||||
|
{
|
||||||
|
string[] sceneGuids = AssetDatabase.FindAssets("t:Scene");
|
||||||
|
foreach (string guid in sceneGuids)
|
||||||
|
{
|
||||||
|
string scenePath = AssetDatabase.GUIDToAssetPath(guid);
|
||||||
|
var scene = EditorSceneManager.OpenScene(scenePath, OpenSceneMode.Additive);
|
||||||
|
|
||||||
|
var allComponents = GameObject.FindObjectsOfType<Component>(true);
|
||||||
|
foreach (var component in allComponents)
|
||||||
|
{
|
||||||
|
if (component == null || component.gameObject.scene != scene) continue;
|
||||||
|
|
||||||
|
var componentType = component.GetType();
|
||||||
|
if (componentType.Name == "StateMachine" && componentType.Namespace == "Pixelplacement")
|
||||||
|
{
|
||||||
|
bool isAlreadySaveable = component is AppleMachine;
|
||||||
|
foundStateMachines.Add(new StateMachineInfo
|
||||||
|
{
|
||||||
|
name = component.gameObject.name,
|
||||||
|
path = $"{scenePath} → {component.transform.GetHierarchyPath()}",
|
||||||
|
isPrefab = false,
|
||||||
|
isAlreadySaveable = isAlreadySaveable,
|
||||||
|
assetPath = scenePath,
|
||||||
|
gameObject = component.gameObject
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorSceneManager.CloseScene(scene, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.Log($"[StateMachine Migration] Found {foundStateMachines.Count} StateMachine(s)");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PingObject(StateMachineInfo info)
|
||||||
|
{
|
||||||
|
if (info.isPrefab)
|
||||||
|
{
|
||||||
|
// Load and ping the prefab asset
|
||||||
|
GameObject prefab = AssetDatabase.LoadAssetAtPath<GameObject>(info.assetPath);
|
||||||
|
if (prefab != null)
|
||||||
|
{
|
||||||
|
EditorGUIUtility.PingObject(prefab);
|
||||||
|
Selection.activeObject = prefab;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// For scene objects, we need to open the scene if it's not already open
|
||||||
|
var currentScene = UnityEngine.SceneManagement.SceneManager.GetActiveScene();
|
||||||
|
|
||||||
|
if (currentScene.path != info.assetPath)
|
||||||
|
{
|
||||||
|
// Scene is not currently open
|
||||||
|
if (EditorUtility.DisplayDialog(
|
||||||
|
"Open Scene?",
|
||||||
|
$"The object is in scene:\n{info.assetPath}\n\nDo you want to open this scene?",
|
||||||
|
"Yes, Open Scene",
|
||||||
|
"Cancel"))
|
||||||
|
{
|
||||||
|
if (EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo())
|
||||||
|
{
|
||||||
|
EditorSceneManager.OpenScene(info.assetPath, OpenSceneMode.Single);
|
||||||
|
|
||||||
|
// Find the object in the newly opened scene
|
||||||
|
if (info.gameObject != null)
|
||||||
|
{
|
||||||
|
// The gameObject reference might be stale, find by path
|
||||||
|
GameObject obj = GameObject.Find(info.gameObject.name);
|
||||||
|
if (obj != null)
|
||||||
|
{
|
||||||
|
Selection.activeGameObject = obj;
|
||||||
|
EditorGUIUtility.PingObject(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Scene is already open
|
||||||
|
if (info.gameObject != null)
|
||||||
|
{
|
||||||
|
Selection.activeGameObject = info.gameObject;
|
||||||
|
EditorGUIUtility.PingObject(info.gameObject);
|
||||||
|
// Also scroll to it in hierarchy
|
||||||
|
EditorApplication.ExecuteMenuItem("Window/General/Hierarchy");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MigrateAll()
|
||||||
|
{
|
||||||
|
int migratedCount = 0;
|
||||||
|
int errorCount = 0;
|
||||||
|
|
||||||
|
foreach (var info in foundStateMachines)
|
||||||
|
{
|
||||||
|
if (!info.isAlreadySaveable)
|
||||||
|
{
|
||||||
|
if (MigrateSingle(info))
|
||||||
|
{
|
||||||
|
migratedCount++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
errorCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AssetDatabase.SaveAssets();
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
|
||||||
|
EditorUtility.DisplayDialog(
|
||||||
|
"Migration Complete",
|
||||||
|
$"Migrated: {migratedCount}\nErrors: {errorCount}",
|
||||||
|
"OK"
|
||||||
|
);
|
||||||
|
|
||||||
|
// Refresh list to show green highlighting for newly migrated items
|
||||||
|
ScanProject();
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool MigrateSingle(StateMachineInfo info)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (info.isPrefab)
|
||||||
|
{
|
||||||
|
return MigratePrefab(info.assetPath);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return MigrateSceneObject(info.assetPath, info.gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (System.Exception ex)
|
||||||
|
{
|
||||||
|
Debug.LogError($"[StateMachine Migration] Error migrating '{info.name}': {ex.Message}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool MigratePrefab(string prefabPath)
|
||||||
|
{
|
||||||
|
GameObject prefabRoot = PrefabUtility.LoadPrefabContents(prefabPath);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var components = prefabRoot.GetComponentsInChildren<Component>(true);
|
||||||
|
int migratedInPrefab = 0;
|
||||||
|
|
||||||
|
foreach (var component in components)
|
||||||
|
{
|
||||||
|
if (component == null) continue;
|
||||||
|
|
||||||
|
var componentType = component.GetType();
|
||||||
|
if (componentType.Name == "StateMachine" &&
|
||||||
|
componentType.Namespace == "Pixelplacement" &&
|
||||||
|
!(component is AppleMachine))
|
||||||
|
{
|
||||||
|
if (MigrateComponent(component.gameObject, component))
|
||||||
|
{
|
||||||
|
migratedInPrefab++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PrefabUtility.SaveAsPrefabAsset(prefabRoot, prefabPath);
|
||||||
|
Debug.Log($"[StateMachine Migration] Migrated {migratedInPrefab} component(s) in prefab: {prefabPath}");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
PrefabUtility.UnloadPrefabContents(prefabRoot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool MigrateSceneObject(string scenePath, GameObject gameObject)
|
||||||
|
{
|
||||||
|
var scene = EditorSceneManager.OpenScene(scenePath, OpenSceneMode.Additive);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var components = gameObject.GetComponents<Component>();
|
||||||
|
foreach (var component in components)
|
||||||
|
{
|
||||||
|
if (component == null) continue;
|
||||||
|
|
||||||
|
var componentType = component.GetType();
|
||||||
|
if (componentType.Name == "StateMachine" &&
|
||||||
|
componentType.Namespace == "Pixelplacement" &&
|
||||||
|
!(component is AppleMachine))
|
||||||
|
{
|
||||||
|
bool success = MigrateComponent(gameObject, component);
|
||||||
|
|
||||||
|
if (success)
|
||||||
|
{
|
||||||
|
EditorSceneManager.MarkSceneDirty(scene);
|
||||||
|
EditorSceneManager.SaveScene(scene);
|
||||||
|
Debug.Log($"[StateMachine Migration] Migrated component in scene: {scenePath}");
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
EditorSceneManager.CloseScene(scene, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool MigrateComponent(GameObject gameObject, Component oldComponent)
|
||||||
|
{
|
||||||
|
// Capture old component data using SerializedObject
|
||||||
|
SerializedObject oldSO = new SerializedObject(oldComponent);
|
||||||
|
|
||||||
|
var defaultState = oldSO.FindProperty("defaultState");
|
||||||
|
var verbose = oldSO.FindProperty("verbose");
|
||||||
|
var allowReentry = oldSO.FindProperty("allowReentry");
|
||||||
|
var returnToDefaultOnDisable = oldSO.FindProperty("returnToDefaultOnDisable");
|
||||||
|
var onStateExited = oldSO.FindProperty("OnStateExited");
|
||||||
|
var onStateEntered = oldSO.FindProperty("OnStateEntered");
|
||||||
|
var onFirstStateEntered = oldSO.FindProperty("OnFirstStateEntered");
|
||||||
|
var onFirstStateExited = oldSO.FindProperty("OnFirstStateExited");
|
||||||
|
var onLastStateEntered = oldSO.FindProperty("OnLastStateEntered");
|
||||||
|
var onLastStateExited = oldSO.FindProperty("OnLastStateExited");
|
||||||
|
|
||||||
|
// Remove old component
|
||||||
|
Object.DestroyImmediate(oldComponent);
|
||||||
|
|
||||||
|
// Add new component
|
||||||
|
var newSM = gameObject.AddComponent<AppleMachine>();
|
||||||
|
|
||||||
|
// Restore data using SerializedObject
|
||||||
|
SerializedObject newSO = new SerializedObject(newSM);
|
||||||
|
CopySerializedProperty(defaultState, newSO.FindProperty("defaultState"));
|
||||||
|
CopySerializedProperty(verbose, newSO.FindProperty("verbose"));
|
||||||
|
CopySerializedProperty(allowReentry, newSO.FindProperty("allowReentry"));
|
||||||
|
CopySerializedProperty(returnToDefaultOnDisable, newSO.FindProperty("returnToDefaultOnDisable"));
|
||||||
|
CopySerializedProperty(onStateExited, newSO.FindProperty("OnStateExited"));
|
||||||
|
CopySerializedProperty(onStateEntered, newSO.FindProperty("OnStateEntered"));
|
||||||
|
CopySerializedProperty(onFirstStateEntered, newSO.FindProperty("OnFirstStateEntered"));
|
||||||
|
CopySerializedProperty(onFirstStateExited, newSO.FindProperty("OnFirstStateExited"));
|
||||||
|
CopySerializedProperty(onLastStateEntered, newSO.FindProperty("OnLastStateEntered"));
|
||||||
|
CopySerializedProperty(onLastStateExited, newSO.FindProperty("OnLastStateExited"));
|
||||||
|
|
||||||
|
// Set a custom Save ID based on GameObject name (simple and readable)
|
||||||
|
// Users can customize this in the inspector if needed
|
||||||
|
var customSaveIdProperty = newSO.FindProperty("customSaveId");
|
||||||
|
if (customSaveIdProperty != null)
|
||||||
|
{
|
||||||
|
// Use GameObject name as the custom ID (scene name will be added automatically by GetSaveId)
|
||||||
|
customSaveIdProperty.stringValue = gameObject.name;
|
||||||
|
Debug.Log($"[Migration] Set custom Save ID: '{customSaveIdProperty.stringValue}' for '{gameObject.name}'");
|
||||||
|
}
|
||||||
|
|
||||||
|
newSO.ApplyModifiedProperties();
|
||||||
|
|
||||||
|
EditorUtility.SetDirty(gameObject);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CopySerializedProperty(SerializedProperty source, SerializedProperty dest)
|
||||||
|
{
|
||||||
|
if (source == null || dest == null) return;
|
||||||
|
|
||||||
|
switch (source.propertyType)
|
||||||
|
{
|
||||||
|
case SerializedPropertyType.Integer:
|
||||||
|
dest.intValue = source.intValue;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.Boolean:
|
||||||
|
dest.boolValue = source.boolValue;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.Float:
|
||||||
|
dest.floatValue = source.floatValue;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.String:
|
||||||
|
dest.stringValue = source.stringValue;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.Color:
|
||||||
|
dest.colorValue = source.colorValue;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.ObjectReference:
|
||||||
|
dest.objectReferenceValue = source.objectReferenceValue;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.LayerMask:
|
||||||
|
dest.intValue = source.intValue;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.Enum:
|
||||||
|
dest.enumValueIndex = source.enumValueIndex;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.Vector2:
|
||||||
|
dest.vector2Value = source.vector2Value;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.Vector3:
|
||||||
|
dest.vector3Value = source.vector3Value;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.Vector4:
|
||||||
|
dest.vector4Value = source.vector4Value;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.Rect:
|
||||||
|
dest.rectValue = source.rectValue;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.ArraySize:
|
||||||
|
dest.arraySize = source.arraySize;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.Character:
|
||||||
|
dest.intValue = source.intValue;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.AnimationCurve:
|
||||||
|
dest.animationCurveValue = source.animationCurveValue;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.Bounds:
|
||||||
|
dest.boundsValue = source.boundsValue;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.Quaternion:
|
||||||
|
dest.quaternionValue = source.quaternionValue;
|
||||||
|
break;
|
||||||
|
case SerializedPropertyType.Generic:
|
||||||
|
// Handle UnityEvent and other generic types by copying children
|
||||||
|
CopyGenericProperty(source, dest);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CopyGenericProperty(SerializedProperty source, SerializedProperty dest)
|
||||||
|
{
|
||||||
|
// For arrays and lists
|
||||||
|
if (source.isArray)
|
||||||
|
{
|
||||||
|
dest.arraySize = source.arraySize;
|
||||||
|
for (int i = 0; i < source.arraySize; i++)
|
||||||
|
{
|
||||||
|
CopySerializedProperty(source.GetArrayElementAtIndex(i), dest.GetArrayElementAtIndex(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// For complex objects, copy all children
|
||||||
|
SerializedProperty sourceIterator = source.Copy();
|
||||||
|
SerializedProperty destIterator = dest.Copy();
|
||||||
|
|
||||||
|
bool enterChildren = true;
|
||||||
|
while (sourceIterator.Next(enterChildren))
|
||||||
|
{
|
||||||
|
// Only process immediate children
|
||||||
|
if (!sourceIterator.propertyPath.StartsWith(source.propertyPath + "."))
|
||||||
|
break;
|
||||||
|
|
||||||
|
enterChildren = false;
|
||||||
|
|
||||||
|
// Find corresponding property in destination
|
||||||
|
string relativePath = sourceIterator.propertyPath.Substring(source.propertyPath.Length + 1);
|
||||||
|
SerializedProperty destChild = dest.FindPropertyRelative(relativePath);
|
||||||
|
|
||||||
|
if (destChild != null)
|
||||||
|
{
|
||||||
|
CopySerializedProperty(sourceIterator, destChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class StateMachineInfo
|
||||||
|
{
|
||||||
|
public string name;
|
||||||
|
public string path;
|
||||||
|
public bool isPrefab;
|
||||||
|
public bool isAlreadySaveable;
|
||||||
|
public string assetPath;
|
||||||
|
public GameObject gameObject;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static class TransformExtensions
|
||||||
|
{
|
||||||
|
public static string GetHierarchyPath(this Transform transform)
|
||||||
|
{
|
||||||
|
string path = transform.name;
|
||||||
|
while (transform.parent != null)
|
||||||
|
{
|
||||||
|
transform = transform.parent;
|
||||||
|
path = transform.name + "/" + path;
|
||||||
|
}
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
3
Assets/Editor/StateMachineMigrationTool.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 13897a2afcff4d21a3eb20fe5092bf7a
|
||||||
|
timeCreated: 1762121174
|
||||||
550
Assets/Editor/Tools/ComponentSearchReplaceWindow.cs
Normal file
@@ -0,0 +1,550 @@
|
|||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using UnityEditor.SceneManagement;
|
||||||
|
using UnityEngine.SceneManagement;
|
||||||
|
using UnityEditor.IMGUI.Controls;
|
||||||
|
|
||||||
|
namespace Editor.Tools
|
||||||
|
{
|
||||||
|
public class ComponentSearchReplaceWindow : EditorWindow
|
||||||
|
{
|
||||||
|
private Type selectedSearchType;
|
||||||
|
private Type selectedReplaceType;
|
||||||
|
private List<ComponentInfo> foundComponents = new List<ComponentInfo>();
|
||||||
|
private Vector2 scrollPos;
|
||||||
|
private int selectedComponentIndex = -1;
|
||||||
|
private string searchTypeName = "Select a Component...";
|
||||||
|
private string replaceTypeName = "Select a Component...";
|
||||||
|
private List<Type> allMonoBehaviourTypes = new List<Type>();
|
||||||
|
|
||||||
|
[MenuItem("Tools/Component Search & Replace")]
|
||||||
|
public static void ShowWindow()
|
||||||
|
{
|
||||||
|
var window = GetWindow<ComponentSearchReplaceWindow>("Component Search & Replace");
|
||||||
|
window.minSize = new Vector2(700, 500);
|
||||||
|
window.maxSize = new Vector2(1400, 1000);
|
||||||
|
window.position = new Rect(120, 120, 800, 600);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
CacheMonoBehaviourTypes();
|
||||||
|
EditorSceneManager.sceneOpened += (scene, mode) => ClearSearch();
|
||||||
|
SceneManager.activeSceneChanged += (oldScene, newScene) => ClearSearch();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDisable()
|
||||||
|
{
|
||||||
|
EditorSceneManager.sceneOpened -= (scene, mode) => ClearSearch();
|
||||||
|
SceneManager.activeSceneChanged -= (oldScene, newScene) => ClearSearch();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CacheMonoBehaviourTypes()
|
||||||
|
{
|
||||||
|
allMonoBehaviourTypes.Clear();
|
||||||
|
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
|
||||||
|
|
||||||
|
foreach (var assembly in assemblies)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var types = assembly.GetTypes()
|
||||||
|
.Where(t => (t.IsSubclassOf(typeof(MonoBehaviour)) || t.IsSubclassOf(typeof(Component)))
|
||||||
|
&& !t.IsAbstract
|
||||||
|
&& t != typeof(Transform)) // Exclude Transform as it can't be removed
|
||||||
|
.OrderBy(t => t.Name);
|
||||||
|
allMonoBehaviourTypes.AddRange(types);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
// Some assemblies may throw exceptions when getting types
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ClearSearch()
|
||||||
|
{
|
||||||
|
foundComponents.Clear();
|
||||||
|
selectedComponentIndex = -1;
|
||||||
|
Repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGUI()
|
||||||
|
{
|
||||||
|
GUILayout.Space(10);
|
||||||
|
|
||||||
|
// Search Section
|
||||||
|
EditorGUILayout.BeginVertical("box");
|
||||||
|
EditorGUILayout.LabelField("Search for Component", EditorStyles.boldLabel);
|
||||||
|
GUILayout.Space(5);
|
||||||
|
|
||||||
|
EditorGUILayout.BeginHorizontal();
|
||||||
|
EditorGUILayout.LabelField("Component Type:", GUILayout.Width(120));
|
||||||
|
|
||||||
|
if (GUILayout.Button(searchTypeName, EditorStyles.popup, GUILayout.ExpandWidth(true)))
|
||||||
|
{
|
||||||
|
var dropdown = new ComponentTypeDropdown(
|
||||||
|
new AdvancedDropdownState(),
|
||||||
|
(type) =>
|
||||||
|
{
|
||||||
|
selectedSearchType = type;
|
||||||
|
searchTypeName = type != null ? type.Name : "Select a Component...";
|
||||||
|
ClearSearch();
|
||||||
|
Repaint();
|
||||||
|
});
|
||||||
|
dropdown.Show(GUILayoutUtility.GetLastRect());
|
||||||
|
}
|
||||||
|
EditorGUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
GUILayout.Space(5);
|
||||||
|
|
||||||
|
EditorGUI.BeginDisabledGroup(selectedSearchType == null);
|
||||||
|
if (GUILayout.Button("Search Scene", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
SearchForComponents();
|
||||||
|
}
|
||||||
|
EditorGUI.EndDisabledGroup();
|
||||||
|
|
||||||
|
EditorGUILayout.EndVertical();
|
||||||
|
|
||||||
|
GUILayout.Space(10);
|
||||||
|
|
||||||
|
// Results Section
|
||||||
|
EditorGUILayout.BeginVertical("box");
|
||||||
|
EditorGUILayout.LabelField($"Search Results ({foundComponents.Count} found)", EditorStyles.boldLabel);
|
||||||
|
GUILayout.Space(5);
|
||||||
|
|
||||||
|
scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.ExpandHeight(true));
|
||||||
|
|
||||||
|
if (foundComponents.Count == 0)
|
||||||
|
{
|
||||||
|
EditorGUILayout.HelpBox("No components found. Select a component type and click 'Search Scene'.", MessageType.Info);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 0; i < foundComponents.Count; i++)
|
||||||
|
{
|
||||||
|
var info = foundComponents[i];
|
||||||
|
if (info.component == null) continue;
|
||||||
|
|
||||||
|
bool isSelected = selectedComponentIndex == i;
|
||||||
|
Color originalColor = GUI.backgroundColor;
|
||||||
|
|
||||||
|
if (isSelected)
|
||||||
|
{
|
||||||
|
GUI.backgroundColor = new Color(0.3f, 0.6f, 1f, 0.5f);
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.BeginVertical("box");
|
||||||
|
GUI.backgroundColor = originalColor;
|
||||||
|
|
||||||
|
EditorGUILayout.BeginHorizontal();
|
||||||
|
|
||||||
|
// Selection toggle
|
||||||
|
bool newSelected = GUILayout.Toggle(isSelected, "", GUILayout.Width(20));
|
||||||
|
if (newSelected != isSelected)
|
||||||
|
{
|
||||||
|
selectedComponentIndex = newSelected ? i : -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.BeginVertical();
|
||||||
|
EditorGUILayout.LabelField($"GameObject: {info.gameObject.name}", EditorStyles.boldLabel);
|
||||||
|
EditorGUILayout.LabelField($"Path: {info.hierarchyPath}", EditorStyles.miniLabel);
|
||||||
|
EditorGUILayout.LabelField($"Component: {info.component.GetType().Name}", EditorStyles.miniLabel);
|
||||||
|
EditorGUILayout.EndVertical();
|
||||||
|
|
||||||
|
if (GUILayout.Button("Ping", GUILayout.Width(80)))
|
||||||
|
{
|
||||||
|
Selection.activeObject = info.gameObject;
|
||||||
|
EditorGUIUtility.PingObject(info.gameObject);
|
||||||
|
SceneView.FrameLastActiveSceneView();
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.EndHorizontal();
|
||||||
|
EditorGUILayout.EndVertical();
|
||||||
|
|
||||||
|
GUILayout.Space(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.EndScrollView();
|
||||||
|
EditorGUILayout.EndVertical();
|
||||||
|
|
||||||
|
GUILayout.Space(10);
|
||||||
|
|
||||||
|
// Replace Section
|
||||||
|
EditorGUILayout.BeginVertical("box");
|
||||||
|
EditorGUILayout.LabelField("Replace Component", EditorStyles.boldLabel);
|
||||||
|
GUILayout.Space(5);
|
||||||
|
|
||||||
|
EditorGUILayout.BeginHorizontal();
|
||||||
|
EditorGUILayout.LabelField("Replace With:", GUILayout.Width(120));
|
||||||
|
|
||||||
|
if (GUILayout.Button(replaceTypeName, EditorStyles.popup, GUILayout.ExpandWidth(true)))
|
||||||
|
{
|
||||||
|
var dropdown = new ComponentTypeDropdown(
|
||||||
|
new AdvancedDropdownState(),
|
||||||
|
(type) =>
|
||||||
|
{
|
||||||
|
selectedReplaceType = type;
|
||||||
|
replaceTypeName = type != null ? type.Name : "Select a Component...";
|
||||||
|
Repaint();
|
||||||
|
});
|
||||||
|
dropdown.Show(GUILayoutUtility.GetLastRect());
|
||||||
|
}
|
||||||
|
EditorGUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
GUILayout.Space(5);
|
||||||
|
|
||||||
|
bool canReplace = selectedComponentIndex >= 0 &&
|
||||||
|
selectedComponentIndex < foundComponents.Count &&
|
||||||
|
selectedReplaceType != null;
|
||||||
|
|
||||||
|
EditorGUI.BeginDisabledGroup(!canReplace);
|
||||||
|
|
||||||
|
if (!canReplace && selectedComponentIndex >= 0 && selectedReplaceType == null)
|
||||||
|
{
|
||||||
|
EditorGUILayout.HelpBox("Select a component type to replace with.", MessageType.Warning);
|
||||||
|
}
|
||||||
|
else if (!canReplace && selectedReplaceType != null)
|
||||||
|
{
|
||||||
|
EditorGUILayout.HelpBox("Select an object from the search results above.", MessageType.Warning);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GUILayout.Button("Replace Selected Component", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
ReplaceComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUI.EndDisabledGroup();
|
||||||
|
|
||||||
|
EditorGUILayout.EndVertical();
|
||||||
|
|
||||||
|
GUILayout.Space(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SearchForComponents()
|
||||||
|
{
|
||||||
|
if (selectedSearchType == null)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("No component type selected for search.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
foundComponents.Clear();
|
||||||
|
selectedComponentIndex = -1;
|
||||||
|
|
||||||
|
var allObjects = FindObjectsByType<GameObject>(FindObjectsInactive.Include, FindObjectsSortMode.None);
|
||||||
|
|
||||||
|
foreach (var go in allObjects)
|
||||||
|
{
|
||||||
|
var component = go.GetComponent(selectedSearchType);
|
||||||
|
if (component != null)
|
||||||
|
{
|
||||||
|
foundComponents.Add(new ComponentInfo
|
||||||
|
{
|
||||||
|
gameObject = go,
|
||||||
|
component = component,
|
||||||
|
hierarchyPath = GetHierarchyPath(go)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foundComponents = foundComponents.OrderBy(c => c.hierarchyPath).ToList();
|
||||||
|
|
||||||
|
Debug.Log($"Found {foundComponents.Count} objects with component type '{selectedSearchType.Name}'");
|
||||||
|
Repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ReplaceComponent()
|
||||||
|
{
|
||||||
|
if (selectedComponentIndex < 0 || selectedComponentIndex >= foundComponents.Count)
|
||||||
|
{
|
||||||
|
Debug.LogError("No component selected to replace.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedReplaceType == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("No replacement component type selected.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var info = foundComponents[selectedComponentIndex];
|
||||||
|
var go = info.gameObject;
|
||||||
|
var oldComponent = info.component;
|
||||||
|
|
||||||
|
if (go == null || oldComponent == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("Selected component or GameObject is null.");
|
||||||
|
foundComponents.RemoveAt(selectedComponentIndex);
|
||||||
|
selectedComponentIndex = -1;
|
||||||
|
Repaint();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Confirm the replacement
|
||||||
|
bool confirmed = EditorUtility.DisplayDialog(
|
||||||
|
"Replace Component",
|
||||||
|
$"Are you sure you want to replace '{selectedSearchType.Name}' with '{selectedReplaceType.Name}' on GameObject '{go.name}'?\n\n" +
|
||||||
|
"This action can be undone with Ctrl+Z.",
|
||||||
|
"Replace",
|
||||||
|
"Cancel"
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!confirmed)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Record undo
|
||||||
|
Undo.RegisterCompleteObjectUndo(go, "Replace Component");
|
||||||
|
|
||||||
|
// Copy serialized data if possible (optional enhancement)
|
||||||
|
// This attempts to preserve common fields between components
|
||||||
|
var serializedOldComponent = new SerializedObject(oldComponent);
|
||||||
|
|
||||||
|
// Remove old component
|
||||||
|
Undo.DestroyObjectImmediate(oldComponent);
|
||||||
|
|
||||||
|
// Add new component
|
||||||
|
var newComponent = Undo.AddComponent(go, selectedReplaceType);
|
||||||
|
|
||||||
|
// Try to copy matching serialized properties
|
||||||
|
var serializedNewComponent = new SerializedObject(newComponent);
|
||||||
|
CopyMatchingSerializedProperties(serializedOldComponent, serializedNewComponent);
|
||||||
|
serializedNewComponent.ApplyModifiedProperties();
|
||||||
|
|
||||||
|
// Mark scene as dirty
|
||||||
|
EditorSceneManager.MarkSceneDirty(go.scene);
|
||||||
|
|
||||||
|
Debug.Log($"Replaced '{selectedSearchType.Name}' with '{selectedReplaceType.Name}' on '{go.name}'");
|
||||||
|
|
||||||
|
// Update the found components list
|
||||||
|
foundComponents[selectedComponentIndex] = new ComponentInfo
|
||||||
|
{
|
||||||
|
gameObject = go,
|
||||||
|
component = newComponent,
|
||||||
|
hierarchyPath = info.hierarchyPath
|
||||||
|
};
|
||||||
|
|
||||||
|
// Update search type if needed
|
||||||
|
if (selectedSearchType != selectedReplaceType)
|
||||||
|
{
|
||||||
|
foundComponents.RemoveAt(selectedComponentIndex);
|
||||||
|
selectedComponentIndex = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CopyMatchingSerializedProperties(SerializedObject source, SerializedObject destination)
|
||||||
|
{
|
||||||
|
SerializedProperty iterator = source.GetIterator();
|
||||||
|
bool enterChildren = true;
|
||||||
|
|
||||||
|
while (iterator.NextVisible(enterChildren))
|
||||||
|
{
|
||||||
|
enterChildren = false;
|
||||||
|
|
||||||
|
// Skip script reference
|
||||||
|
if (iterator.propertyPath == "m_Script")
|
||||||
|
continue;
|
||||||
|
|
||||||
|
SerializedProperty destProp = destination.FindProperty(iterator.propertyPath);
|
||||||
|
if (destProp != null && destProp.propertyType == iterator.propertyType)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
destination.CopyFromSerializedProperty(iterator);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// Some properties may not be copyable
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private string GetHierarchyPath(GameObject go)
|
||||||
|
{
|
||||||
|
string path = go.name;
|
||||||
|
Transform t = go.transform.parent;
|
||||||
|
while (t != null)
|
||||||
|
{
|
||||||
|
path = t.name + "/" + path;
|
||||||
|
t = t.parent;
|
||||||
|
}
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ComponentInfo
|
||||||
|
{
|
||||||
|
public GameObject gameObject;
|
||||||
|
public Component component;
|
||||||
|
public string hierarchyPath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Advanced Dropdown for Component Type Selection (including Unity built-in components)
|
||||||
|
public class ComponentTypeDropdown : AdvancedDropdown
|
||||||
|
{
|
||||||
|
private Action<Type> onTypeSelected;
|
||||||
|
private static List<Type> cachedTypes;
|
||||||
|
|
||||||
|
public ComponentTypeDropdown(AdvancedDropdownState state, Action<Type> onTypeSelected)
|
||||||
|
: base(state)
|
||||||
|
{
|
||||||
|
this.onTypeSelected = onTypeSelected;
|
||||||
|
minimumSize = new Vector2(300, 400);
|
||||||
|
|
||||||
|
if (cachedTypes == null)
|
||||||
|
{
|
||||||
|
CacheTypes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CacheTypes()
|
||||||
|
{
|
||||||
|
cachedTypes = new List<Type>();
|
||||||
|
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
|
||||||
|
|
||||||
|
foreach (var assembly in assemblies)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var types = assembly.GetTypes()
|
||||||
|
.Where(t => (t.IsSubclassOf(typeof(MonoBehaviour)) || t.IsSubclassOf(typeof(Component)))
|
||||||
|
&& !t.IsAbstract
|
||||||
|
&& t != typeof(Transform)) // Exclude Transform as it can't be removed
|
||||||
|
.OrderBy(t => t.Name);
|
||||||
|
cachedTypes.AddRange(types);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
// Some assemblies may throw exceptions when getting types
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override AdvancedDropdownItem BuildRoot()
|
||||||
|
{
|
||||||
|
var root = new AdvancedDropdownItem("Component Types");
|
||||||
|
|
||||||
|
// Add "None" option
|
||||||
|
var noneItem = new TypeDropdownItem("None", null);
|
||||||
|
root.AddChild(noneItem);
|
||||||
|
|
||||||
|
root.AddSeparator();
|
||||||
|
|
||||||
|
// Separate Unity built-in components from custom ones
|
||||||
|
var unityComponents = cachedTypes.Where(t =>
|
||||||
|
t.Namespace != null && t.Namespace.StartsWith("UnityEngine")).ToList();
|
||||||
|
var customComponents = cachedTypes.Except(unityComponents).ToList();
|
||||||
|
|
||||||
|
// Add Unity Components section
|
||||||
|
if (unityComponents.Any())
|
||||||
|
{
|
||||||
|
var unitySection = new AdvancedDropdownItem("Unity Components");
|
||||||
|
|
||||||
|
// Group Unity components by category (second part of namespace)
|
||||||
|
var unityGrouped = unityComponents.GroupBy(t =>
|
||||||
|
{
|
||||||
|
if (t.Namespace == "UnityEngine")
|
||||||
|
return "Core";
|
||||||
|
var parts = t.Namespace.Split('.');
|
||||||
|
return parts.Length > 1 ? parts[1] : "Other";
|
||||||
|
}).OrderBy(g => g.Key);
|
||||||
|
|
||||||
|
foreach (var group in unityGrouped)
|
||||||
|
{
|
||||||
|
if (group.Count() <= 5)
|
||||||
|
{
|
||||||
|
// Add directly if few items
|
||||||
|
foreach (var type in group.OrderBy(t => t.Name))
|
||||||
|
{
|
||||||
|
var typeItem = new TypeDropdownItem(type.Name, type);
|
||||||
|
unitySection.AddChild(typeItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Create subcategory
|
||||||
|
var categoryItem = new AdvancedDropdownItem(group.Key);
|
||||||
|
foreach (var type in group.OrderBy(t => t.Name))
|
||||||
|
{
|
||||||
|
var typeItem = new TypeDropdownItem(type.Name, type);
|
||||||
|
categoryItem.AddChild(typeItem);
|
||||||
|
}
|
||||||
|
unitySection.AddChild(categoryItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
root.AddChild(unitySection);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add Custom Components section
|
||||||
|
if (customComponents.Any())
|
||||||
|
{
|
||||||
|
root.AddSeparator();
|
||||||
|
|
||||||
|
// Group by namespace
|
||||||
|
var groupedTypes = customComponents.GroupBy(t =>
|
||||||
|
string.IsNullOrEmpty(t.Namespace) ? "(No Namespace)" : t.Namespace);
|
||||||
|
|
||||||
|
foreach (var group in groupedTypes.OrderBy(g => g.Key))
|
||||||
|
{
|
||||||
|
// For small namespaces or no namespace, add directly to root
|
||||||
|
if (group.Count() <= 3 || group.Key == "(No Namespace)")
|
||||||
|
{
|
||||||
|
foreach (var type in group)
|
||||||
|
{
|
||||||
|
var typeItem = new TypeDropdownItem(
|
||||||
|
group.Key == "(No Namespace)" ? type.Name : $"{group.Key}.{type.Name}",
|
||||||
|
type);
|
||||||
|
root.AddChild(typeItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Create namespace folder
|
||||||
|
var namespaceItem = new AdvancedDropdownItem(group.Key);
|
||||||
|
|
||||||
|
foreach (var type in group)
|
||||||
|
{
|
||||||
|
var typeItem = new TypeDropdownItem(type.Name, type);
|
||||||
|
namespaceItem.AddChild(typeItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
root.AddChild(namespaceItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void ItemSelected(AdvancedDropdownItem item)
|
||||||
|
{
|
||||||
|
var typeItem = item as TypeDropdownItem;
|
||||||
|
if (typeItem != null)
|
||||||
|
{
|
||||||
|
onTypeSelected?.Invoke(typeItem.Type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class TypeDropdownItem : AdvancedDropdownItem
|
||||||
|
{
|
||||||
|
public Type Type { get; private set; }
|
||||||
|
|
||||||
|
public TypeDropdownItem(string name, Type type) : base(name)
|
||||||
|
{
|
||||||
|
Type = type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
3
Assets/Editor/Tools/ComponentSearchReplaceWindow.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 604b18a354fa44a49723ab9f9173762e
|
||||||
|
timeCreated: 1761816008
|
||||||
@@ -8,7 +8,7 @@ namespace Editor
|
|||||||
public class ItemPrefabEditorWindow : EditorWindow
|
public class ItemPrefabEditorWindow : EditorWindow
|
||||||
{
|
{
|
||||||
private GameObject _selectedGameObject;
|
private GameObject _selectedGameObject;
|
||||||
private Interactable _interactable;
|
private InteractableBase _interactable;
|
||||||
private PickupItemData _pickupData;
|
private PickupItemData _pickupData;
|
||||||
private PuzzleStepSO _objectiveData;
|
private PuzzleStepSO _objectiveData;
|
||||||
private UnityEditor.Editor _soEditor;
|
private UnityEditor.Editor _soEditor;
|
||||||
@@ -42,17 +42,17 @@ namespace Editor
|
|||||||
if (Selection.activeGameObject != null)
|
if (Selection.activeGameObject != null)
|
||||||
{
|
{
|
||||||
_selectedGameObject = Selection.activeGameObject;
|
_selectedGameObject = Selection.activeGameObject;
|
||||||
_interactable = _selectedGameObject.GetComponent<Interactable>();
|
_interactable = _selectedGameObject.GetComponent<InteractableBase>();
|
||||||
}
|
}
|
||||||
else if (Selection.activeObject is GameObject go)
|
else if (Selection.activeObject is GameObject go)
|
||||||
{
|
{
|
||||||
_selectedGameObject = go;
|
_selectedGameObject = go;
|
||||||
_interactable = go.GetComponent<Interactable>();
|
_interactable = go.GetComponent<InteractableBase>();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_selectedGameObject == null || _interactable == null)
|
if (_selectedGameObject == null || _interactable == null)
|
||||||
{
|
{
|
||||||
EditorGUILayout.HelpBox("Select a GameObject or prefab with an Interactable component to edit.", MessageType.Info);
|
EditorGUILayout.HelpBox("Select a GameObject or prefab with an InteractableBase component to edit.", MessageType.Info);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using Interactions;
|
using Interactions;
|
||||||
@@ -124,7 +124,7 @@ namespace Editor
|
|||||||
private void CreatePrefab()
|
private void CreatePrefab()
|
||||||
{
|
{
|
||||||
var go = new GameObject(_prefabName);
|
var go = new GameObject(_prefabName);
|
||||||
go.AddComponent<Interactable>();
|
// Note: No need to add InteractableBase separately - Pickup and ItemSlot inherit from it
|
||||||
go.AddComponent<BoxCollider>();
|
go.AddComponent<BoxCollider>();
|
||||||
int interactableLayer = LayerMask.NameToLayer("Interactable");
|
int interactableLayer = LayerMask.NameToLayer("Interactable");
|
||||||
if (interactableLayer != -1)
|
if (interactableLayer != -1)
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ using UnityEngine.Events;
|
|||||||
namespace Pixelplacement
|
namespace Pixelplacement
|
||||||
{
|
{
|
||||||
[RequireComponent (typeof (Initialization))]
|
[RequireComponent (typeof (Initialization))]
|
||||||
public class StateMachine : MonoBehaviour
|
public class StateMachine : MonoBehaviour
|
||||||
{
|
{
|
||||||
//Public Variables:
|
//Public Variables:
|
||||||
public GameObject defaultState;
|
public GameObject defaultState;
|
||||||
|
|||||||
BIN
Assets/External/Placeholders/applehills_kort.png
vendored
Normal file
|
After Width: | Height: | Size: 98 KiB |
195
Assets/External/Placeholders/applehills_kort.png.meta
vendored
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c3d03e932743da340b8b2a2c290013f0
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: -6037909929086895425
|
||||||
|
second: applehills_kort_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: WebGL
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: WindowsStoreApps
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: applehills_kort_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 8
|
||||||
|
y: 21
|
||||||
|
width: 498
|
||||||
|
height: 491
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: -1
|
||||||
|
bones: []
|
||||||
|
spriteID: fbab8f2e8e8053ca0800000000000000
|
||||||
|
internalID: -6037909929086895425
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable:
|
||||||
|
applehills_kort_0: -6037909929086895425
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/External/Placeholders/diving_minigame_icon.png
vendored
Normal file
|
After Width: | Height: | Size: 69 KiB |
195
Assets/External/Placeholders/diving_minigame_icon.png.meta
vendored
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7031dc4d177f92b4f970e104cdd6de51
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 6579828237621196356
|
||||||
|
second: diving_minigame_icon_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: WebGL
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: WindowsStoreApps
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: diving_minigame_icon_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 490
|
||||||
|
height: 490
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: -1
|
||||||
|
bones: []
|
||||||
|
spriteID: 446fe72bbee305b50800000000000000
|
||||||
|
internalID: 6579828237621196356
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable:
|
||||||
|
diving_minigame_icon_0: 6579828237621196356
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/External/Placeholders/polaroid.png
vendored
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
195
Assets/External/Placeholders/polaroid.png.meta
vendored
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b9e3bc189ede987488d90ea237dd5176
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 49104727208924248
|
||||||
|
second: polaroid_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: iOS
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: WebGL
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: WindowsStoreApps
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: polaroid_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 657
|
||||||
|
height: 825
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: -1
|
||||||
|
bones: []
|
||||||
|
spriteID: 854941e3d747ea000800000000000000
|
||||||
|
internalID: 49104727208924248
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable:
|
||||||
|
polaroid_0: 49104727208924248
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||