game: ui groundwork
This commit is contained in:
parent
603ae382e7
commit
4aa6329bdf
13
SheKnowsWhatYouAreToHerGame/.idea/.idea.SheKnowsWhatYouAreToHerGame/.idea/.gitignore
vendored
Normal file
13
SheKnowsWhatYouAreToHerGame/.idea/.idea.SheKnowsWhatYouAreToHerGame/.idea/.gitignore
vendored
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Rider ignored files
|
||||||
|
/modules.xml
|
||||||
|
/.idea.SheKnowsWhatYouAreToHerGame.iml
|
||||||
|
/contentModel.xml
|
||||||
|
/projectSettingsUpdater.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
||||||
|
</project>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="UserContentModel">
|
||||||
|
<attachedFolders />
|
||||||
|
<explicitIncludes />
|
||||||
|
<explicitExcludes />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,6 @@
|
||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="ProblematicWhitespace" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||||
|
</profile>
|
||||||
|
</component>
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
8
SheKnowsWhatYouAreToHerGame/Assets/Audio.meta
Normal file
8
SheKnowsWhatYouAreToHerGame/Assets/Audio.meta
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 15f503fa4a2f5124fbe1af1b910e9c10
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
SheKnowsWhatYouAreToHerGame/Assets/Audio/menuClick.ogg
(Stored with Git LFS)
Normal file
BIN
SheKnowsWhatYouAreToHerGame/Assets/Audio/menuClick.ogg
(Stored with Git LFS)
Normal file
Binary file not shown.
23
SheKnowsWhatYouAreToHerGame/Assets/Audio/menuClick.ogg.meta
Normal file
23
SheKnowsWhatYouAreToHerGame/Assets/Audio/menuClick.ogg.meta
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f50962c9ad4017b40ac7fbfb0c24eb47
|
||||||
|
AudioImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 7
|
||||||
|
defaultSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
loadType: 0
|
||||||
|
sampleRateSetting: 0
|
||||||
|
sampleRateOverride: 44100
|
||||||
|
compressionFormat: 1
|
||||||
|
quality: 1
|
||||||
|
conversionMode: 0
|
||||||
|
preloadAudioData: 0
|
||||||
|
platformSettingOverrides: {}
|
||||||
|
forceToMono: 0
|
||||||
|
normalize: 1
|
||||||
|
loadInBackground: 0
|
||||||
|
ambisonic: 0
|
||||||
|
3D: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
SheKnowsWhatYouAreToHerGame/Assets/Audio/menuHover.ogg
(Stored with Git LFS)
Normal file
BIN
SheKnowsWhatYouAreToHerGame/Assets/Audio/menuHover.ogg
(Stored with Git LFS)
Normal file
Binary file not shown.
23
SheKnowsWhatYouAreToHerGame/Assets/Audio/menuHover.ogg.meta
Normal file
23
SheKnowsWhatYouAreToHerGame/Assets/Audio/menuHover.ogg.meta
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5e07e339ddf1eea44b3c4db9a02dd75c
|
||||||
|
AudioImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 7
|
||||||
|
defaultSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
loadType: 0
|
||||||
|
sampleRateSetting: 0
|
||||||
|
sampleRateOverride: 44100
|
||||||
|
compressionFormat: 1
|
||||||
|
quality: 1
|
||||||
|
conversionMode: 0
|
||||||
|
preloadAudioData: 0
|
||||||
|
platformSettingOverrides: {}
|
||||||
|
forceToMono: 0
|
||||||
|
normalize: 1
|
||||||
|
loadInBackground: 0
|
||||||
|
ambisonic: 0
|
||||||
|
3D: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
316
SheKnowsWhatYouAreToHerGame/Assets/Scenes/Intro.unity
Normal file
316
SheKnowsWhatYouAreToHerGame/Assets/Scenes/Intro.unity
Normal file
|
@ -0,0 +1,316 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!29 &1
|
||||||
|
OcclusionCullingSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_OcclusionBakeSettings:
|
||||||
|
smallestOccluder: 5
|
||||||
|
smallestHole: 0.25
|
||||||
|
backfaceThreshold: 100
|
||||||
|
m_SceneGUID: 00000000000000000000000000000000
|
||||||
|
m_OcclusionCullingData: {fileID: 0}
|
||||||
|
--- !u!104 &2
|
||||||
|
RenderSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 9
|
||||||
|
m_Fog: 0
|
||||||
|
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
m_FogMode: 3
|
||||||
|
m_FogDensity: 0.01
|
||||||
|
m_LinearFogStart: 0
|
||||||
|
m_LinearFogEnd: 300
|
||||||
|
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||||
|
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||||
|
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||||
|
m_AmbientIntensity: 1
|
||||||
|
m_AmbientMode: 0
|
||||||
|
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||||
|
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_HaloStrength: 0.5
|
||||||
|
m_FlareStrength: 1
|
||||||
|
m_FlareFadeSpeed: 3
|
||||||
|
m_HaloTexture: {fileID: 0}
|
||||||
|
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_DefaultReflectionMode: 0
|
||||||
|
m_DefaultReflectionResolution: 128
|
||||||
|
m_ReflectionBounces: 1
|
||||||
|
m_ReflectionIntensity: 1
|
||||||
|
m_CustomReflection: {fileID: 0}
|
||||||
|
m_Sun: {fileID: 0}
|
||||||
|
m_UseRadianceAmbientProbe: 0
|
||||||
|
--- !u!157 &3
|
||||||
|
LightmapSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 12
|
||||||
|
m_GIWorkflowMode: 1
|
||||||
|
m_GISettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_BounceScale: 1
|
||||||
|
m_IndirectOutputScale: 1
|
||||||
|
m_AlbedoBoost: 1
|
||||||
|
m_EnvironmentLightingMode: 0
|
||||||
|
m_EnableBakedLightmaps: 1
|
||||||
|
m_EnableRealtimeLightmaps: 0
|
||||||
|
m_LightmapEditorSettings:
|
||||||
|
serializedVersion: 12
|
||||||
|
m_Resolution: 2
|
||||||
|
m_BakeResolution: 40
|
||||||
|
m_AtlasSize: 1024
|
||||||
|
m_AO: 0
|
||||||
|
m_AOMaxDistance: 1
|
||||||
|
m_CompAOExponent: 1
|
||||||
|
m_CompAOExponentDirect: 0
|
||||||
|
m_ExtractAmbientOcclusion: 0
|
||||||
|
m_Padding: 2
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_LightmapsBakeMode: 1
|
||||||
|
m_TextureCompression: 1
|
||||||
|
m_FinalGather: 0
|
||||||
|
m_FinalGatherFiltering: 1
|
||||||
|
m_FinalGatherRayCount: 256
|
||||||
|
m_ReflectionCompression: 2
|
||||||
|
m_MixedBakeMode: 2
|
||||||
|
m_BakeBackend: 1
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 512
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVREnvironmentSampleCount: 256
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_PVRFilteringMode: 1
|
||||||
|
m_PVRDenoiserTypeDirect: 1
|
||||||
|
m_PVRDenoiserTypeIndirect: 1
|
||||||
|
m_PVRDenoiserTypeAO: 1
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVREnvironmentMIS: 1
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 5
|
||||||
|
m_PVRFilteringGaussRadiusAO: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||||
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||||
|
m_ExportTrainingData: 0
|
||||||
|
m_TrainingDataDestination: TrainingData
|
||||||
|
m_LightProbeSampleCountMultiplier: 4
|
||||||
|
m_LightingDataAsset: {fileID: 0}
|
||||||
|
m_LightingSettings: {fileID: 0}
|
||||||
|
--- !u!196 &4
|
||||||
|
NavMeshSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_BuildSettings:
|
||||||
|
serializedVersion: 3
|
||||||
|
agentTypeID: 0
|
||||||
|
agentRadius: 0.5
|
||||||
|
agentHeight: 2
|
||||||
|
agentSlope: 45
|
||||||
|
agentClimb: 0.4
|
||||||
|
ledgeDropHeight: 0
|
||||||
|
maxJumpAcrossDistance: 0
|
||||||
|
minRegionArea: 2
|
||||||
|
manualCellSize: 0
|
||||||
|
cellSize: 0.16666667
|
||||||
|
manualTileSize: 0
|
||||||
|
tileSize: 256
|
||||||
|
buildHeightMesh: 0
|
||||||
|
maxJobWorkers: 0
|
||||||
|
preserveTilesOutsideBounds: 0
|
||||||
|
debug:
|
||||||
|
m_Flags: 0
|
||||||
|
m_NavMeshData: {fileID: 0}
|
||||||
|
--- !u!1 &322360228
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 322360230}
|
||||||
|
- component: {fileID: 322360229}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Directional Light
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!108 &322360229
|
||||||
|
Light:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 322360228}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 10
|
||||||
|
m_Type: 1
|
||||||
|
m_Shape: 0
|
||||||
|
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
||||||
|
m_Intensity: 1
|
||||||
|
m_Range: 10
|
||||||
|
m_SpotAngle: 30
|
||||||
|
m_InnerSpotAngle: 21.80208
|
||||||
|
m_CookieSize: 10
|
||||||
|
m_Shadows:
|
||||||
|
m_Type: 2
|
||||||
|
m_Resolution: -1
|
||||||
|
m_CustomResolution: -1
|
||||||
|
m_Strength: 1
|
||||||
|
m_Bias: 0.05
|
||||||
|
m_NormalBias: 0.4
|
||||||
|
m_NearPlane: 0.2
|
||||||
|
m_CullingMatrixOverride:
|
||||||
|
e00: 1
|
||||||
|
e01: 0
|
||||||
|
e02: 0
|
||||||
|
e03: 0
|
||||||
|
e10: 0
|
||||||
|
e11: 1
|
||||||
|
e12: 0
|
||||||
|
e13: 0
|
||||||
|
e20: 0
|
||||||
|
e21: 0
|
||||||
|
e22: 1
|
||||||
|
e23: 0
|
||||||
|
e30: 0
|
||||||
|
e31: 0
|
||||||
|
e32: 0
|
||||||
|
e33: 1
|
||||||
|
m_UseCullingMatrixOverride: 0
|
||||||
|
m_Cookie: {fileID: 0}
|
||||||
|
m_DrawHalo: 0
|
||||||
|
m_Flare: {fileID: 0}
|
||||||
|
m_RenderMode: 0
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_Lightmapping: 4
|
||||||
|
m_LightShadowCasterMode: 0
|
||||||
|
m_AreaSize: {x: 1, y: 1}
|
||||||
|
m_BounceIntensity: 1
|
||||||
|
m_ColorTemperature: 6570
|
||||||
|
m_UseColorTemperature: 0
|
||||||
|
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_UseBoundingSphereOverride: 0
|
||||||
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
|
m_ShadowRadius: 0
|
||||||
|
m_ShadowAngle: 0
|
||||||
|
--- !u!4 &322360230
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 322360228}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||||
|
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||||
|
--- !u!1 &1680593428
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1680593431}
|
||||||
|
- component: {fileID: 1680593430}
|
||||||
|
- component: {fileID: 1680593429}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Main Camera
|
||||||
|
m_TagString: MainCamera
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!81 &1680593429
|
||||||
|
AudioListener:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1680593428}
|
||||||
|
m_Enabled: 1
|
||||||
|
--- !u!20 &1680593430
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1680593428}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 1
|
||||||
|
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||||
|
m_projectionMatrixMode: 1
|
||||||
|
m_GateFitMode: 2
|
||||||
|
m_FOVAxisMode: 0
|
||||||
|
m_Iso: 200
|
||||||
|
m_ShutterSpeed: 0.005
|
||||||
|
m_Aperture: 16
|
||||||
|
m_FocusDistance: 10
|
||||||
|
m_FocalLength: 50
|
||||||
|
m_BladeCount: 5
|
||||||
|
m_Curvature: {x: 2, y: 11}
|
||||||
|
m_BarrelClipping: 0.25
|
||||||
|
m_Anamorphism: 0
|
||||||
|
m_SensorSize: {x: 36, y: 24}
|
||||||
|
m_LensShift: {x: 0, y: 0}
|
||||||
|
m_NormalizedViewPortRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
near clip plane: 0.3
|
||||||
|
far clip plane: 1000
|
||||||
|
field of view: 60
|
||||||
|
orthographic: 0
|
||||||
|
orthographic size: 5
|
||||||
|
m_Depth: -1
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingPath: -1
|
||||||
|
m_TargetTexture: {fileID: 0}
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
m_TargetEye: 3
|
||||||
|
m_HDR: 1
|
||||||
|
m_AllowMSAA: 1
|
||||||
|
m_AllowDynamicResolution: 0
|
||||||
|
m_ForceIntoRT: 0
|
||||||
|
m_OcclusionCulling: 1
|
||||||
|
m_StereoConvergence: 10
|
||||||
|
m_StereoSeparation: 0.022
|
||||||
|
--- !u!4 &1680593431
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1680593428}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 1, z: -10}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1660057539 &9223372036854775807
|
||||||
|
SceneRoots:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Roots:
|
||||||
|
- {fileID: 1680593431}
|
||||||
|
- {fileID: 322360230}
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cbc5bbc717010644f970fce52b18866d
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -37,8 +37,7 @@ RenderSettings:
|
||||||
m_ReflectionBounces: 1
|
m_ReflectionBounces: 1
|
||||||
m_ReflectionIntensity: 1
|
m_ReflectionIntensity: 1
|
||||||
m_CustomReflection: {fileID: 0}
|
m_CustomReflection: {fileID: 0}
|
||||||
m_Sun: {fileID: 705507994}
|
m_Sun: {fileID: 0}
|
||||||
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
|
|
||||||
m_UseRadianceAmbientProbe: 0
|
m_UseRadianceAmbientProbe: 0
|
||||||
--- !u!157 &3
|
--- !u!157 &3
|
||||||
LightmapSettings:
|
LightmapSettings:
|
||||||
|
@ -75,18 +74,18 @@ LightmapSettings:
|
||||||
m_BakeBackend: 1
|
m_BakeBackend: 1
|
||||||
m_PVRSampling: 1
|
m_PVRSampling: 1
|
||||||
m_PVRDirectSampleCount: 32
|
m_PVRDirectSampleCount: 32
|
||||||
m_PVRSampleCount: 500
|
m_PVRSampleCount: 512
|
||||||
m_PVRBounces: 2
|
m_PVRBounces: 2
|
||||||
m_PVREnvironmentSampleCount: 500
|
m_PVREnvironmentSampleCount: 256
|
||||||
m_PVREnvironmentReferencePointCount: 2048
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
m_PVRFilteringMode: 2
|
m_PVRFilteringMode: 1
|
||||||
m_PVRDenoiserTypeDirect: 0
|
m_PVRDenoiserTypeDirect: 1
|
||||||
m_PVRDenoiserTypeIndirect: 0
|
m_PVRDenoiserTypeIndirect: 1
|
||||||
m_PVRDenoiserTypeAO: 0
|
m_PVRDenoiserTypeAO: 1
|
||||||
m_PVRFilterTypeDirect: 0
|
m_PVRFilterTypeDirect: 0
|
||||||
m_PVRFilterTypeIndirect: 0
|
m_PVRFilterTypeIndirect: 0
|
||||||
m_PVRFilterTypeAO: 0
|
m_PVRFilterTypeAO: 0
|
||||||
m_PVREnvironmentMIS: 0
|
m_PVREnvironmentMIS: 1
|
||||||
m_PVRCulling: 1
|
m_PVRCulling: 1
|
||||||
m_PVRFilteringGaussRadiusDirect: 1
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
m_PVRFilteringGaussRadiusIndirect: 5
|
m_PVRFilteringGaussRadiusIndirect: 5
|
||||||
|
@ -104,7 +103,7 @@ NavMeshSettings:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_BuildSettings:
|
m_BuildSettings:
|
||||||
serializedVersion: 2
|
serializedVersion: 3
|
||||||
agentTypeID: 0
|
agentTypeID: 0
|
||||||
agentRadius: 0.5
|
agentRadius: 0.5
|
||||||
agentHeight: 2
|
agentHeight: 2
|
||||||
|
@ -117,19 +116,22 @@ NavMeshSettings:
|
||||||
cellSize: 0.16666667
|
cellSize: 0.16666667
|
||||||
manualTileSize: 0
|
manualTileSize: 0
|
||||||
tileSize: 256
|
tileSize: 256
|
||||||
accuratePlacement: 0
|
buildHeightMesh: 0
|
||||||
|
maxJobWorkers: 0
|
||||||
|
preserveTilesOutsideBounds: 0
|
||||||
debug:
|
debug:
|
||||||
m_Flags: 0
|
m_Flags: 0
|
||||||
m_NavMeshData: {fileID: 0}
|
m_NavMeshData: {fileID: 0}
|
||||||
--- !u!1 &705507993
|
--- !u!1 &387335166
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInternal: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 705507995}
|
- component: {fileID: 387335168}
|
||||||
- component: {fileID: 705507994}
|
- component: {fileID: 387335167}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Directional Light
|
m_Name: Directional Light
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
|
@ -137,19 +139,22 @@ GameObject:
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 1
|
||||||
--- !u!108 &705507994
|
--- !u!108 &387335167
|
||||||
Light:
|
Light:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInternal: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_GameObject: {fileID: 705507993}
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 387335166}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
serializedVersion: 8
|
serializedVersion: 10
|
||||||
m_Type: 1
|
m_Type: 1
|
||||||
|
m_Shape: 0
|
||||||
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
||||||
m_Intensity: 1
|
m_Intensity: 1
|
||||||
m_Range: 10
|
m_Range: 10
|
||||||
m_SpotAngle: 30
|
m_SpotAngle: 30
|
||||||
|
m_InnerSpotAngle: 21.80208
|
||||||
m_CookieSize: 10
|
m_CookieSize: 10
|
||||||
m_Shadows:
|
m_Shadows:
|
||||||
m_Type: 2
|
m_Type: 2
|
||||||
|
@ -159,6 +164,24 @@ Light:
|
||||||
m_Bias: 0.05
|
m_Bias: 0.05
|
||||||
m_NormalBias: 0.4
|
m_NormalBias: 0.4
|
||||||
m_NearPlane: 0.2
|
m_NearPlane: 0.2
|
||||||
|
m_CullingMatrixOverride:
|
||||||
|
e00: 1
|
||||||
|
e01: 0
|
||||||
|
e02: 0
|
||||||
|
e03: 0
|
||||||
|
e10: 0
|
||||||
|
e11: 1
|
||||||
|
e12: 0
|
||||||
|
e13: 0
|
||||||
|
e20: 0
|
||||||
|
e21: 0
|
||||||
|
e22: 1
|
||||||
|
e23: 0
|
||||||
|
e30: 0
|
||||||
|
e31: 0
|
||||||
|
e32: 0
|
||||||
|
e33: 1
|
||||||
|
m_UseCullingMatrixOverride: 0
|
||||||
m_Cookie: {fileID: 0}
|
m_Cookie: {fileID: 0}
|
||||||
m_DrawHalo: 0
|
m_DrawHalo: 0
|
||||||
m_Flare: {fileID: 0}
|
m_Flare: {fileID: 0}
|
||||||
|
@ -166,37 +189,44 @@ Light:
|
||||||
m_CullingMask:
|
m_CullingMask:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Bits: 4294967295
|
m_Bits: 4294967295
|
||||||
m_Lightmapping: 1
|
m_RenderingLayerMask: 1
|
||||||
|
m_Lightmapping: 4
|
||||||
m_LightShadowCasterMode: 0
|
m_LightShadowCasterMode: 0
|
||||||
m_AreaSize: {x: 1, y: 1}
|
m_AreaSize: {x: 1, y: 1}
|
||||||
m_BounceIntensity: 1
|
m_BounceIntensity: 1
|
||||||
m_ColorTemperature: 6570
|
m_ColorTemperature: 6570
|
||||||
m_UseColorTemperature: 0
|
m_UseColorTemperature: 0
|
||||||
|
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_UseBoundingSphereOverride: 0
|
||||||
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
m_ShadowRadius: 0
|
m_ShadowRadius: 0
|
||||||
m_ShadowAngle: 0
|
m_ShadowAngle: 0
|
||||||
--- !u!4 &705507995
|
--- !u!4 &387335168
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInternal: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_GameObject: {fileID: 705507993}
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 387335166}
|
||||||
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||||
m_LocalPosition: {x: 0, y: 3, z: 0}
|
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 1
|
|
||||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||||
--- !u!1 &963194225
|
--- !u!1 &969500135
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInternal: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 963194228}
|
- component: {fileID: 969500138}
|
||||||
- component: {fileID: 963194227}
|
- component: {fileID: 969500137}
|
||||||
- component: {fileID: 963194226}
|
- component: {fileID: 969500136}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Main Camera
|
m_Name: Main Camera
|
||||||
m_TagString: MainCamera
|
m_TagString: MainCamera
|
||||||
|
@ -204,28 +234,39 @@ GameObject:
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 1
|
||||||
--- !u!81 &963194226
|
--- !u!81 &969500136
|
||||||
AudioListener:
|
AudioListener:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInternal: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_GameObject: {fileID: 963194225}
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 969500135}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
--- !u!20 &963194227
|
--- !u!20 &969500137
|
||||||
Camera:
|
Camera:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInternal: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_GameObject: {fileID: 963194225}
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 969500135}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_ClearFlags: 1
|
m_ClearFlags: 1
|
||||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||||
m_projectionMatrixMode: 1
|
m_projectionMatrixMode: 1
|
||||||
|
m_GateFitMode: 2
|
||||||
|
m_FOVAxisMode: 0
|
||||||
|
m_Iso: 200
|
||||||
|
m_ShutterSpeed: 0.005
|
||||||
|
m_Aperture: 16
|
||||||
|
m_FocusDistance: 10
|
||||||
|
m_FocalLength: 50
|
||||||
|
m_BladeCount: 5
|
||||||
|
m_Curvature: {x: 2, y: 11}
|
||||||
|
m_BarrelClipping: 0.25
|
||||||
|
m_Anamorphism: 0
|
||||||
m_SensorSize: {x: 36, y: 24}
|
m_SensorSize: {x: 36, y: 24}
|
||||||
m_LensShift: {x: 0, y: 0}
|
m_LensShift: {x: 0, y: 0}
|
||||||
m_GateFitMode: 2
|
|
||||||
m_FocalLength: 50
|
|
||||||
m_NormalizedViewPortRect:
|
m_NormalizedViewPortRect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 0
|
x: 0
|
||||||
|
@ -252,16 +293,24 @@ Camera:
|
||||||
m_OcclusionCulling: 1
|
m_OcclusionCulling: 1
|
||||||
m_StereoConvergence: 10
|
m_StereoConvergence: 10
|
||||||
m_StereoSeparation: 0.022
|
m_StereoSeparation: 0.022
|
||||||
--- !u!4 &963194228
|
--- !u!4 &969500138
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInternal: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_GameObject: {fileID: 963194225}
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 969500135}
|
||||||
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 1, z: -10}
|
m_LocalPosition: {x: 0, y: 1, z: -10}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 0
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1660057539 &9223372036854775807
|
||||||
|
SceneRoots:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Roots:
|
||||||
|
- {fileID: 969500138}
|
||||||
|
- {fileID: 387335168}
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0cf90dd5474eda24da61fac0362199e7
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
958
SheKnowsWhatYouAreToHerGame/Assets/Scenes/World.unity
Normal file
958
SheKnowsWhatYouAreToHerGame/Assets/Scenes/World.unity
Normal file
|
@ -0,0 +1,958 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!29 &1
|
||||||
|
OcclusionCullingSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_OcclusionBakeSettings:
|
||||||
|
smallestOccluder: 5
|
||||||
|
smallestHole: 0.25
|
||||||
|
backfaceThreshold: 100
|
||||||
|
m_SceneGUID: 00000000000000000000000000000000
|
||||||
|
m_OcclusionCullingData: {fileID: 0}
|
||||||
|
--- !u!104 &2
|
||||||
|
RenderSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 9
|
||||||
|
m_Fog: 0
|
||||||
|
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
m_FogMode: 3
|
||||||
|
m_FogDensity: 0.01
|
||||||
|
m_LinearFogStart: 0
|
||||||
|
m_LinearFogEnd: 300
|
||||||
|
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||||
|
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||||
|
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||||
|
m_AmbientIntensity: 1
|
||||||
|
m_AmbientMode: 0
|
||||||
|
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||||
|
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_HaloStrength: 0.5
|
||||||
|
m_FlareStrength: 1
|
||||||
|
m_FlareFadeSpeed: 3
|
||||||
|
m_HaloTexture: {fileID: 0}
|
||||||
|
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_DefaultReflectionMode: 0
|
||||||
|
m_DefaultReflectionResolution: 128
|
||||||
|
m_ReflectionBounces: 1
|
||||||
|
m_ReflectionIntensity: 1
|
||||||
|
m_CustomReflection: {fileID: 0}
|
||||||
|
m_Sun: {fileID: 705507994}
|
||||||
|
m_UseRadianceAmbientProbe: 0
|
||||||
|
--- !u!157 &3
|
||||||
|
LightmapSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 12
|
||||||
|
m_GIWorkflowMode: 1
|
||||||
|
m_GISettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_BounceScale: 1
|
||||||
|
m_IndirectOutputScale: 1
|
||||||
|
m_AlbedoBoost: 1
|
||||||
|
m_EnvironmentLightingMode: 0
|
||||||
|
m_EnableBakedLightmaps: 1
|
||||||
|
m_EnableRealtimeLightmaps: 0
|
||||||
|
m_LightmapEditorSettings:
|
||||||
|
serializedVersion: 12
|
||||||
|
m_Resolution: 2
|
||||||
|
m_BakeResolution: 40
|
||||||
|
m_AtlasSize: 1024
|
||||||
|
m_AO: 0
|
||||||
|
m_AOMaxDistance: 1
|
||||||
|
m_CompAOExponent: 1
|
||||||
|
m_CompAOExponentDirect: 0
|
||||||
|
m_ExtractAmbientOcclusion: 0
|
||||||
|
m_Padding: 2
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_LightmapsBakeMode: 1
|
||||||
|
m_TextureCompression: 1
|
||||||
|
m_FinalGather: 0
|
||||||
|
m_FinalGatherFiltering: 1
|
||||||
|
m_FinalGatherRayCount: 256
|
||||||
|
m_ReflectionCompression: 2
|
||||||
|
m_MixedBakeMode: 2
|
||||||
|
m_BakeBackend: 1
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 500
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVREnvironmentSampleCount: 500
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_PVRFilteringMode: 2
|
||||||
|
m_PVRDenoiserTypeDirect: 0
|
||||||
|
m_PVRDenoiserTypeIndirect: 0
|
||||||
|
m_PVRDenoiserTypeAO: 0
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVREnvironmentMIS: 0
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 5
|
||||||
|
m_PVRFilteringGaussRadiusAO: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||||
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||||
|
m_ExportTrainingData: 0
|
||||||
|
m_TrainingDataDestination: TrainingData
|
||||||
|
m_LightProbeSampleCountMultiplier: 4
|
||||||
|
m_LightingDataAsset: {fileID: 0}
|
||||||
|
m_LightingSettings: {fileID: 0}
|
||||||
|
--- !u!196 &4
|
||||||
|
NavMeshSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_BuildSettings:
|
||||||
|
serializedVersion: 3
|
||||||
|
agentTypeID: 0
|
||||||
|
agentRadius: 0.5
|
||||||
|
agentHeight: 2
|
||||||
|
agentSlope: 45
|
||||||
|
agentClimb: 0.4
|
||||||
|
ledgeDropHeight: 0
|
||||||
|
maxJumpAcrossDistance: 0
|
||||||
|
minRegionArea: 2
|
||||||
|
manualCellSize: 0
|
||||||
|
cellSize: 0.16666667
|
||||||
|
manualTileSize: 0
|
||||||
|
tileSize: 256
|
||||||
|
buildHeightMesh: 0
|
||||||
|
maxJobWorkers: 0
|
||||||
|
preserveTilesOutsideBounds: 0
|
||||||
|
debug:
|
||||||
|
m_Flags: 0
|
||||||
|
m_NavMeshData: {fileID: 0}
|
||||||
|
--- !u!1 &494997877
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 494997880}
|
||||||
|
- component: {fileID: 494997879}
|
||||||
|
- component: {fileID: 494997878}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Event System
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &494997878
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 494997877}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_SendPointerHoverToParent: 1
|
||||||
|
m_HorizontalAxis: Horizontal
|
||||||
|
m_VerticalAxis: Vertical
|
||||||
|
m_SubmitButton: Submit
|
||||||
|
m_CancelButton: Cancel
|
||||||
|
m_InputActionsPerSecond: 10
|
||||||
|
m_RepeatDelay: 0.5
|
||||||
|
m_ForceModuleActive: 0
|
||||||
|
--- !u!114 &494997879
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 494997877}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_FirstSelected: {fileID: 0}
|
||||||
|
m_sendNavigationEvents: 1
|
||||||
|
m_DragThreshold: 10
|
||||||
|
--- !u!4 &494997880
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 494997877}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &576489397
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 576489398}
|
||||||
|
- component: {fileID: 576489399}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Music
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &576489398
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 576489397}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 1709072000}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!82 &576489399
|
||||||
|
AudioSource:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 576489397}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 4
|
||||||
|
OutputAudioMixerGroup: {fileID: 0}
|
||||||
|
m_audioClip: {fileID: 0}
|
||||||
|
m_PlayOnAwake: 1
|
||||||
|
m_Volume: 1
|
||||||
|
m_Pitch: 1
|
||||||
|
Loop: 0
|
||||||
|
Mute: 0
|
||||||
|
Spatialize: 0
|
||||||
|
SpatializePostEffects: 0
|
||||||
|
Priority: 128
|
||||||
|
DopplerLevel: 1
|
||||||
|
MinDistance: 1
|
||||||
|
MaxDistance: 500
|
||||||
|
Pan2D: 0
|
||||||
|
rolloffMode: 0
|
||||||
|
BypassEffects: 0
|
||||||
|
BypassListenerEffects: 0
|
||||||
|
BypassReverbZones: 0
|
||||||
|
rolloffCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
panLevelCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
spreadCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
reverbZoneMixCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
--- !u!1 &701582830
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 701582831}
|
||||||
|
- component: {fileID: 701582832}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: SFX
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &701582831
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 701582830}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 1709072000}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!82 &701582832
|
||||||
|
AudioSource:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 701582830}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 4
|
||||||
|
OutputAudioMixerGroup: {fileID: 0}
|
||||||
|
m_audioClip: {fileID: 0}
|
||||||
|
m_PlayOnAwake: 1
|
||||||
|
m_Volume: 1
|
||||||
|
m_Pitch: 1
|
||||||
|
Loop: 0
|
||||||
|
Mute: 0
|
||||||
|
Spatialize: 0
|
||||||
|
SpatializePostEffects: 0
|
||||||
|
Priority: 128
|
||||||
|
DopplerLevel: 1
|
||||||
|
MinDistance: 1
|
||||||
|
MaxDistance: 500
|
||||||
|
Pan2D: 0
|
||||||
|
rolloffMode: 0
|
||||||
|
BypassEffects: 0
|
||||||
|
BypassListenerEffects: 0
|
||||||
|
BypassReverbZones: 0
|
||||||
|
rolloffCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
panLevelCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
spreadCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
reverbZoneMixCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
--- !u!1 &705507993
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 705507995}
|
||||||
|
- component: {fileID: 705507994}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Directional Light
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!108 &705507994
|
||||||
|
Light:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 705507993}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 10
|
||||||
|
m_Type: 1
|
||||||
|
m_Shape: 0
|
||||||
|
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
||||||
|
m_Intensity: 1
|
||||||
|
m_Range: 10
|
||||||
|
m_SpotAngle: 30
|
||||||
|
m_InnerSpotAngle: 21.80208
|
||||||
|
m_CookieSize: 10
|
||||||
|
m_Shadows:
|
||||||
|
m_Type: 2
|
||||||
|
m_Resolution: -1
|
||||||
|
m_CustomResolution: -1
|
||||||
|
m_Strength: 1
|
||||||
|
m_Bias: 0.05
|
||||||
|
m_NormalBias: 0.4
|
||||||
|
m_NearPlane: 0.2
|
||||||
|
m_CullingMatrixOverride:
|
||||||
|
e00: 1
|
||||||
|
e01: 0
|
||||||
|
e02: 0
|
||||||
|
e03: 0
|
||||||
|
e10: 0
|
||||||
|
e11: 1
|
||||||
|
e12: 0
|
||||||
|
e13: 0
|
||||||
|
e20: 0
|
||||||
|
e21: 0
|
||||||
|
e22: 1
|
||||||
|
e23: 0
|
||||||
|
e30: 0
|
||||||
|
e31: 0
|
||||||
|
e32: 0
|
||||||
|
e33: 1
|
||||||
|
m_UseCullingMatrixOverride: 0
|
||||||
|
m_Cookie: {fileID: 0}
|
||||||
|
m_DrawHalo: 0
|
||||||
|
m_Flare: {fileID: 0}
|
||||||
|
m_RenderMode: 0
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_Lightmapping: 1
|
||||||
|
m_LightShadowCasterMode: 0
|
||||||
|
m_AreaSize: {x: 1, y: 1}
|
||||||
|
m_BounceIntensity: 1
|
||||||
|
m_ColorTemperature: 6570
|
||||||
|
m_UseColorTemperature: 0
|
||||||
|
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_UseBoundingSphereOverride: 0
|
||||||
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
|
m_ShadowRadius: 0
|
||||||
|
m_ShadowAngle: 0
|
||||||
|
--- !u!4 &705507995
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 705507993}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||||
|
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||||
|
--- !u!1 &717601780
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 717601782}
|
||||||
|
- component: {fileID: 717601781}
|
||||||
|
- component: {fileID: 717601783}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Main Menu
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 0
|
||||||
|
--- !u!114 &717601781
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 717601780}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_PanelSettings: {fileID: 11400000, guid: 21896e34ffd76694aa03bd08a51762a9, type: 2}
|
||||||
|
m_ParentUI: {fileID: 0}
|
||||||
|
sourceAsset: {fileID: 9197481963319205126, guid: a977416733e383f4ba2d60c04e23fca9, type: 3}
|
||||||
|
m_SortingOrder: 0
|
||||||
|
--- !u!4 &717601782
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 717601780}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 1789519738}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &717601783
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 717601780}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: dc2f00f7758fd1f4982aa4642d5f6d10, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
associatedState: 1
|
||||||
|
--- !u!1 &954318194
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 954318197}
|
||||||
|
- component: {fileID: 954318196}
|
||||||
|
- component: {fileID: 954318198}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Credits Menu
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 0
|
||||||
|
--- !u!114 &954318196
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 954318194}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_PanelSettings: {fileID: 11400000, guid: 21896e34ffd76694aa03bd08a51762a9, type: 2}
|
||||||
|
m_ParentUI: {fileID: 0}
|
||||||
|
sourceAsset: {fileID: 9197481963319205126, guid: 6678de4bb0bb5944db70d8a749190baf, type: 3}
|
||||||
|
m_SortingOrder: 0
|
||||||
|
--- !u!4 &954318197
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 954318194}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 1789519738}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &954318198
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 954318194}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: b1e6f3fe5b89c1c4f801375ed3d5ac94, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
associatedState: 3
|
||||||
|
--- !u!1 &963194225
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 963194228}
|
||||||
|
- component: {fileID: 963194227}
|
||||||
|
- component: {fileID: 963194226}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Main Camera
|
||||||
|
m_TagString: MainCamera
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!81 &963194226
|
||||||
|
AudioListener:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 963194225}
|
||||||
|
m_Enabled: 1
|
||||||
|
--- !u!20 &963194227
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 963194225}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 1
|
||||||
|
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||||
|
m_projectionMatrixMode: 1
|
||||||
|
m_GateFitMode: 2
|
||||||
|
m_FOVAxisMode: 0
|
||||||
|
m_Iso: 200
|
||||||
|
m_ShutterSpeed: 0.005
|
||||||
|
m_Aperture: 16
|
||||||
|
m_FocusDistance: 10
|
||||||
|
m_FocalLength: 50
|
||||||
|
m_BladeCount: 5
|
||||||
|
m_Curvature: {x: 2, y: 11}
|
||||||
|
m_BarrelClipping: 0.25
|
||||||
|
m_Anamorphism: 0
|
||||||
|
m_SensorSize: {x: 36, y: 24}
|
||||||
|
m_LensShift: {x: 0, y: 0}
|
||||||
|
m_NormalizedViewPortRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
near clip plane: 0.3
|
||||||
|
far clip plane: 1000
|
||||||
|
field of view: 60
|
||||||
|
orthographic: 0
|
||||||
|
orthographic size: 5
|
||||||
|
m_Depth: -1
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingPath: -1
|
||||||
|
m_TargetTexture: {fileID: 0}
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
m_TargetEye: 3
|
||||||
|
m_HDR: 1
|
||||||
|
m_AllowMSAA: 1
|
||||||
|
m_AllowDynamicResolution: 0
|
||||||
|
m_ForceIntoRT: 0
|
||||||
|
m_OcclusionCulling: 1
|
||||||
|
m_StereoConvergence: 10
|
||||||
|
m_StereoSeparation: 0.022
|
||||||
|
--- !u!4 &963194228
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 963194225}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 1, z: -10}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &1027994515
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1027994518}
|
||||||
|
- component: {fileID: 1027994517}
|
||||||
|
- component: {fileID: 1027994519}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Options Menu
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 0
|
||||||
|
--- !u!114 &1027994517
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1027994515}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_PanelSettings: {fileID: 11400000, guid: 21896e34ffd76694aa03bd08a51762a9, type: 2}
|
||||||
|
m_ParentUI: {fileID: 0}
|
||||||
|
sourceAsset: {fileID: 9197481963319205126, guid: d1d8f66cd6fc1254c88f9dd426ec316d, type: 3}
|
||||||
|
m_SortingOrder: 0
|
||||||
|
--- !u!4 &1027994518
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1027994515}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 1789519738}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &1027994519
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1027994515}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 9bd10c0f201ff3a439fd5e9ecdfe5a87, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
associatedState: 2
|
||||||
|
--- !u!1 &1651021209
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1651021210}
|
||||||
|
- component: {fileID: 1651021211}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Game Manager
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &1651021210
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1651021209}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &1651021211
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1651021209}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 633b0d9025532844ca48e257b026ac1a, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!1 &1709071999
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1709072000}
|
||||||
|
- component: {fileID: 1709072001}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Audio Manager
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &1709072000
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1709071999}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 576489398}
|
||||||
|
- {fileID: 701582831}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &1709072001
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1709071999}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: d841bbb61099e694db611ce2bbbefe48, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
musicSource: {fileID: 576489399}
|
||||||
|
sfxSource: {fileID: 701582832}
|
||||||
|
menuButtonClick: {fileID: 8300000, guid: f50962c9ad4017b40ac7fbfb0c24eb47, type: 3}
|
||||||
|
menuButtonHover: {fileID: 8300000, guid: 5e07e339ddf1eea44b3c4db9a02dd75c, type: 3}
|
||||||
|
--- !u!1 &1789519737
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1789519738}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Menus
|
||||||
|
m_TagString: Menus
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &1789519738
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1789519737}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 717601782}
|
||||||
|
- {fileID: 1027994518}
|
||||||
|
- {fileID: 954318197}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1660057539 &9223372036854775807
|
||||||
|
SceneRoots:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Roots:
|
||||||
|
- {fileID: 963194228}
|
||||||
|
- {fileID: 705507995}
|
||||||
|
- {fileID: 494997880}
|
||||||
|
- {fileID: 1709072000}
|
||||||
|
- {fileID: 1651021210}
|
||||||
|
- {fileID: 1789519738}
|
8
SheKnowsWhatYouAreToHerGame/Assets/Scripts.meta
Normal file
8
SheKnowsWhatYouAreToHerGame/Assets/Scripts.meta
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7b7afa9ccbb4ed54bbb2e3dbfb6bacff
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
135
SheKnowsWhatYouAreToHerGame/Assets/Scripts/AudioManager.cs
Normal file
135
SheKnowsWhatYouAreToHerGame/Assets/Scripts/AudioManager.cs
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
/*
|
||||||
|
* author: mark joshwel
|
||||||
|
* date: 29/5/2024
|
||||||
|
* description: audio manager for handling audio in the game
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// singleton class for handling audio in the game
|
||||||
|
/// </summary>
|
||||||
|
public class AudioManager : MonoBehaviour
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// singleton pattern: define instance field for accessing the singleton elsewhere
|
||||||
|
/// </summary>
|
||||||
|
public static AudioManager Instance;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// function to set don't destroy on load and check for multiple instances
|
||||||
|
/// </summary>
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
// check if instance hasn't been set yet
|
||||||
|
if (Instance == null)
|
||||||
|
{
|
||||||
|
// set this instance as the singleton instance
|
||||||
|
Instance = this;
|
||||||
|
// don't destroy this instance on scene load
|
||||||
|
DontDestroyOnLoad(gameObject);
|
||||||
|
|
||||||
|
Debug.Log("AudioManager: Awake as singleton instance");
|
||||||
|
}
|
||||||
|
// check if instance is already set and it's not this instance
|
||||||
|
else if (Instance != null && Instance != this)
|
||||||
|
{
|
||||||
|
Debug.Log("AudioManager: Awake as non-singleton instance, destroying self");
|
||||||
|
// destroy the new instance if it's not the singleton instance
|
||||||
|
Destroy(gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// declare separate audio sources for music and sfx
|
||||||
|
// so we can control their volumes separately
|
||||||
|
[Header("Audio Sources")]
|
||||||
|
|
||||||
|
// music audio source
|
||||||
|
[SerializeField]
|
||||||
|
private AudioSource musicSource;
|
||||||
|
|
||||||
|
// music source default volume
|
||||||
|
[SerializeField] private float musicSourceDefaultVolume = 0.6f;
|
||||||
|
|
||||||
|
// sfx audio source
|
||||||
|
[SerializeField] private AudioSource sfxSource;
|
||||||
|
|
||||||
|
// sfx source default volume
|
||||||
|
[SerializeField] private float sfxSourceDefaultVolume = 0.6f;
|
||||||
|
|
||||||
|
// declare audio clips for music and sfx
|
||||||
|
[Header("Audio Clips")]
|
||||||
|
|
||||||
|
// audio clip for menu button clicks
|
||||||
|
public AudioClip menuButtonClick;
|
||||||
|
|
||||||
|
// audio clip for menu button hover
|
||||||
|
public AudioClip menuButtonHover;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// function to set default volumes for the audio sources
|
||||||
|
/// </summary>
|
||||||
|
public void Start()
|
||||||
|
{
|
||||||
|
// set the default volume for the music source
|
||||||
|
musicSource.volume = musicSourceDefaultVolume;
|
||||||
|
|
||||||
|
// set the default volume for the sfx source
|
||||||
|
sfxSource.volume = sfxSourceDefaultVolume;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// plays the audio clip once on the music source/channel
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="clip">audio clip to play</param>
|
||||||
|
public void PlayOnMusicChannel(AudioClip clip)
|
||||||
|
{
|
||||||
|
musicSource.PlayOneShot(clip);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// plays the audio clip once on the sound effects (sfx) source/channel
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="clip">audio clip to play</param>
|
||||||
|
public void PlayOnSFXChannel(AudioClip clip)
|
||||||
|
{
|
||||||
|
sfxSource.PlayOneShot(clip);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// function to get the current volume of the music source/channel
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>volume as float from 0.0 to 1.0</returns>
|
||||||
|
public float GetMusicVolume()
|
||||||
|
{
|
||||||
|
return musicSource.volume;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// sets the volume of the music source/channel
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="volume">float (0.0-1.0) to set the channel volume to</param>
|
||||||
|
public void SetMusicVolume(float volume)
|
||||||
|
{
|
||||||
|
musicSource.volume = Math.Min(volume, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// function to get the current volume of the sound effects (sfx) source/channel
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>volume as float from 0.0 to 1.0</returns>
|
||||||
|
public float GetSfxVolume()
|
||||||
|
{
|
||||||
|
return sfxSource.volume;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// sets the volume of the sound effects (sfx) source/channel
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="volume">float (0.0-1.0) to set the channel volume to</param>
|
||||||
|
public void SetSfxVolume(float volume)
|
||||||
|
{
|
||||||
|
sfxSource.volume = Math.Min(volume, 1.0f);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d841bbb61099e694db611ce2bbbefe48
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: -49
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
124
SheKnowsWhatYouAreToHerGame/Assets/Scripts/CommonMenu.cs
Normal file
124
SheKnowsWhatYouAreToHerGame/Assets/Scripts/CommonMenu.cs
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
/*
|
||||||
|
* author: mark joshwel
|
||||||
|
* date: 29/5/2024
|
||||||
|
* description: common menu script for hover and click sound effects on ui toolkit buttons
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Serialization;
|
||||||
|
using UnityEngine.UIElements;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// common menu class for hover and click sound effects
|
||||||
|
/// on ui toolkit buttons.
|
||||||
|
/// override <c>OnEnable()</c> with the first call to <c>base.OnEnable()</c> or <c>PostEnable()</c>,
|
||||||
|
/// and set the variable <c>GameManager.DisplayState associatedState</c> to the respective menu state
|
||||||
|
/// </summary>
|
||||||
|
public class CommonMenu : MonoBehaviour
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// associated display state with the menu for the game manager to filter out menus in a scene
|
||||||
|
/// </summary>
|
||||||
|
public GameManager.DisplayState associatedState = GameManager.DisplayState.UnassociatedState;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// the visual element object for the menu
|
||||||
|
/// </summary>
|
||||||
|
public VisualElement UI;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// manager for the game state
|
||||||
|
/// </summary>
|
||||||
|
protected GameManager Game;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// manager for audio
|
||||||
|
/// </summary>
|
||||||
|
protected AudioManager Audio;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// override this class but call <c>base.OnEnable()</c> first.
|
||||||
|
/// also set the <c>associatedState</c> variable to the respective menu state
|
||||||
|
/// </summary>
|
||||||
|
public virtual void OnEnable()
|
||||||
|
{
|
||||||
|
// Debug.Log("CommonMenu: OnEnable");
|
||||||
|
PostEnable();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// function to subscribe to mouse events and assign managers
|
||||||
|
/// </summary>
|
||||||
|
public void PostEnable()
|
||||||
|
{
|
||||||
|
// get audio manager singleton instance from the world
|
||||||
|
UI = GetComponent<UIDocument>().rootVisualElement;
|
||||||
|
Audio = AudioManager.Instance;
|
||||||
|
Game = GameManager.Instance;
|
||||||
|
// Debug.Log($"{this}.PostEnable: UI={UI}");
|
||||||
|
// Debug.Log($"{this}.PostEnable: Audio={Audio}");
|
||||||
|
// Debug.Log($"{this}.PostEnable: Game={Game}");
|
||||||
|
|
||||||
|
// subscribe to hover events
|
||||||
|
UI.RegisterCallback<PointerOverEvent>(HoverListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// checks if The Menu (2022) was set up correctly
|
||||||
|
/// </summary>
|
||||||
|
/// <exception cref="Exception">throws an exception if UI, Game and Audio are not set</exception>
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
if (associatedState == GameManager.DisplayState.UnassociatedState)
|
||||||
|
throw new Exception("CommonMenu: associatedState not set");
|
||||||
|
|
||||||
|
if (Game == null)
|
||||||
|
throw new Exception("CommonMenu: Game not set (was base.OnEnable() or PostEnable() called?)");
|
||||||
|
|
||||||
|
if (Audio == null)
|
||||||
|
throw new Exception("CommonMenu: Audio not set (was base.OnEnable() or PostEnable() called?)");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// function listener for <c>PointerOverEvents</c> and plays a hover sound if it's a button
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="evt">event from UIE callback</param>
|
||||||
|
public virtual void HoverListener(PointerOverEvent evt)
|
||||||
|
{
|
||||||
|
// check for button
|
||||||
|
if (evt.target is Button)
|
||||||
|
// play hover sound
|
||||||
|
PlayHover();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// function listener for <c>ClickEvents</c> and plays a click sound if it's a button
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="evt">event from UIE callback</param>
|
||||||
|
public virtual void ClickListener(ClickEvent evt)
|
||||||
|
{
|
||||||
|
// check for button
|
||||||
|
if (evt.target is Button)
|
||||||
|
// play click sound
|
||||||
|
PlayClick();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// generic decoupled function to play click sound
|
||||||
|
/// </summary>
|
||||||
|
public virtual void PlayClick()
|
||||||
|
{
|
||||||
|
// play click sound
|
||||||
|
Audio.PlayOnSFXChannel(Audio.menuButtonClick);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// generic decoupled function to play hover sound
|
||||||
|
/// </summary>
|
||||||
|
public virtual void PlayHover()
|
||||||
|
{
|
||||||
|
// play hover sound
|
||||||
|
Audio.PlayOnSFXChannel(Audio.menuButtonHover);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 23fca74fa1e245409794f847bf922073
|
||||||
|
timeCreated: 1719996237
|
44
SheKnowsWhatYouAreToHerGame/Assets/Scripts/CreditsMenu.cs
Normal file
44
SheKnowsWhatYouAreToHerGame/Assets/Scripts/CreditsMenu.cs
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
* author: mark joshwel
|
||||||
|
* date: 30/5/2024
|
||||||
|
* description: credits menu script for handling credits menu button functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UIElements;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// class managing the credits menu and button function invocations
|
||||||
|
/// </summary>
|
||||||
|
public class CreditsMenu : CommonMenu
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// button to return to main menu
|
||||||
|
/// </summary>
|
||||||
|
public Button ButtonReturn;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// function to associate a display state with the menu,
|
||||||
|
/// and subscribe button events to their respective functions
|
||||||
|
/// </summary>
|
||||||
|
public override void OnEnable()
|
||||||
|
{
|
||||||
|
associatedState = GameManager.DisplayState.ScreenCreditsMenu;
|
||||||
|
base.OnEnable();
|
||||||
|
|
||||||
|
// get the start button from the ui root and subscribe appropriate functions
|
||||||
|
ButtonReturn = UI.Q<Button>("ButtonReturn");
|
||||||
|
ButtonReturn.clicked += PlayClick;
|
||||||
|
ButtonReturn.clicked += OptionReturnToMainMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// handles return to main menu button press,
|
||||||
|
/// signals the game manager appropriately
|
||||||
|
/// </summary>
|
||||||
|
private void OptionReturnToMainMenu()
|
||||||
|
{
|
||||||
|
// return to main menu
|
||||||
|
Game.SetDisplayState(GameManager.DisplayState.ScreenMainMenu);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b1e6f3fe5b89c1c4f801375ed3d5ac94
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
225
SheKnowsWhatYouAreToHerGame/Assets/Scripts/GameManager.cs
Normal file
225
SheKnowsWhatYouAreToHerGame/Assets/Scripts/GameManager.cs
Normal file
|
@ -0,0 +1,225 @@
|
||||||
|
/*
|
||||||
|
* author: mark joshwel
|
||||||
|
* date: 29/5/2024
|
||||||
|
* description: game manager singleton for single source of truth state management
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.SceneManagement;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// singleton class for managing the game state as a single source of truth
|
||||||
|
/// </summary>
|
||||||
|
public class GameManager : MonoBehaviour
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// singleton pattern: define instance field for accessing the singleton elsewhere
|
||||||
|
/// </summary>
|
||||||
|
public static GameManager Instance;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// the current state of the game
|
||||||
|
/// </summary>
|
||||||
|
private DisplayState _state = DisplayState.UnassociatedState;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// property to check if the game is paused based on the current <c>DisplayState</c>
|
||||||
|
/// </summary>
|
||||||
|
public bool Paused => _state != DisplayState.Game;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// function to set don't destroy on load and check for multiple instances
|
||||||
|
/// </summary>
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
// check if instance hasn't been set yet
|
||||||
|
if (Instance == null)
|
||||||
|
{
|
||||||
|
// set this instance as the singleton instance
|
||||||
|
Instance = this;
|
||||||
|
// don't destroy this instance on scene load
|
||||||
|
DontDestroyOnLoad(gameObject);
|
||||||
|
|
||||||
|
Debug.Log("GameManager: Awake as singleton instance");
|
||||||
|
}
|
||||||
|
// check if instance is already set and it's not this instance
|
||||||
|
else if (Instance != null && Instance != this)
|
||||||
|
{
|
||||||
|
Debug.Log("GameManager: Awake as non-singleton instance, destroying self");
|
||||||
|
|
||||||
|
// destroy the new instance if it's not the singleton instance
|
||||||
|
Destroy(gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// called when game starts, sets state to main menu
|
||||||
|
/// </summary>
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
SetDisplayState(DisplayState.ScreenMainMenu);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// enum for available menus in the game, for use with <c>ShowMenu()</c>
|
||||||
|
/// </summary>
|
||||||
|
public enum DisplayState
|
||||||
|
{
|
||||||
|
Game,
|
||||||
|
ScreenMainMenu,
|
||||||
|
ScreenOptionsMenu,
|
||||||
|
ScreenCreditsMenu,
|
||||||
|
ScreenPauseMenu,
|
||||||
|
ScreenCaughtPause,
|
||||||
|
ScreenEscapedMenu,
|
||||||
|
UnassociatedState
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// helper function to hide any menu that is currently showing
|
||||||
|
/// </summary>
|
||||||
|
private void HideMenuHelper()
|
||||||
|
{
|
||||||
|
// get parent object tagged "Menus"
|
||||||
|
foreach (var menu in GameObject.FindGameObjectsWithTag("Menus"))
|
||||||
|
{
|
||||||
|
// hide each menu under the parent object\
|
||||||
|
foreach (Transform menuChild in menu.transform)
|
||||||
|
{
|
||||||
|
Debug.Log($"GameManager: HideMenuHelper - hiding menu '{menuChild}'");
|
||||||
|
menuChild.gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// helper function for <c>SetDisplayState()</c> to pause the game,
|
||||||
|
/// called before the incoming game state is set
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="incomingState">the to-be-set state of the game</param>
|
||||||
|
private void PauseGameHelper(DisplayState incomingState)
|
||||||
|
{
|
||||||
|
// if we're transitioning from a state of gameplay to a state of non-gameplay,
|
||||||
|
// then we should pause the game
|
||||||
|
if (_state == DisplayState.Game && incomingState != DisplayState.Game)
|
||||||
|
{
|
||||||
|
Debug.Log("GameManager: PauseGameHelper - actually pausing game");
|
||||||
|
Time.timeScale = 0f;
|
||||||
|
Cursor.lockState = CursorLockMode.None;
|
||||||
|
Cursor.visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if the current and incoming states are the same, then we shouldn't do anything,
|
||||||
|
// so we return early
|
||||||
|
if (_state == incomingState)
|
||||||
|
{
|
||||||
|
Debug.Log("GameManager: PauseGameHelper - states are the same, returning early");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
// hide any menu that is currently showing
|
||||||
|
HideMenuHelper();
|
||||||
|
|
||||||
|
// show the menu based on the incoming state
|
||||||
|
// 1. get all menus via the parent object tagged "Menus"
|
||||||
|
foreach (var menuParent in GameObject.FindGameObjectsWithTag("Menus"))
|
||||||
|
{
|
||||||
|
// 2. get all menus under the parent object
|
||||||
|
foreach (Transform menu in menuParent.transform)
|
||||||
|
{
|
||||||
|
// 2. check its associated state
|
||||||
|
var associatedState = menu.gameObject.GetComponent<CommonMenu>().associatedState;
|
||||||
|
Debug.Log(
|
||||||
|
$"GameManager: PauseGameHelper - found menu '{menu}' with associated state {associatedState} against incoming state {incomingState}");
|
||||||
|
|
||||||
|
// 3. if the associated state is the same as the incoming state, then show the menu
|
||||||
|
if (associatedState != incomingState)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Debug.Log($"GameManager: PauseGameHelper - showing menu for {incomingState}");
|
||||||
|
menu.gameObject.SetActive(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// helper function for <c>SetDisplayState()</c> to resume the game,
|
||||||
|
/// called before the incoming game state is set
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="incomingState">the to-be-set state of the game</param>
|
||||||
|
private void ResumeGameHelper(DisplayState incomingState)
|
||||||
|
{
|
||||||
|
// if we're NOT transitioning from a state of non-gameplay to a state of gameplay,
|
||||||
|
// then we shouldn't do anything, because the game is already running,
|
||||||
|
// so we return early
|
||||||
|
if (_state != DisplayState.Game && incomingState == DisplayState.Game) return;
|
||||||
|
|
||||||
|
// else, we should resume the game
|
||||||
|
Time.timeScale = 1f;
|
||||||
|
Cursor.lockState = CursorLockMode.Locked;
|
||||||
|
Cursor.visible = false;
|
||||||
|
|
||||||
|
// hide any menu that is currently showing
|
||||||
|
HideMenuHelper();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// function to show a menu based on the enum passed,
|
||||||
|
/// and any other necessary actions
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="displayState">the game menu to show</param>
|
||||||
|
public void SetDisplayState(DisplayState displayState)
|
||||||
|
{
|
||||||
|
// check if the game is paused or not
|
||||||
|
if (displayState == DisplayState.Game)
|
||||||
|
{
|
||||||
|
Debug.Log($"GameManager: SetDisplayState({displayState}) - resuming game");
|
||||||
|
ResumeGameHelper(displayState);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log($"GameManager: SetDisplayState({displayState}) - pausing game");
|
||||||
|
PauseGameHelper(displayState);
|
||||||
|
}
|
||||||
|
|
||||||
|
// set the state of the game to the incoming state
|
||||||
|
_state = displayState;
|
||||||
|
|
||||||
|
// TODO: post-state change actions case switch
|
||||||
|
switch (displayState)
|
||||||
|
{
|
||||||
|
// if we're transitioning to the game state,
|
||||||
|
// change camera to the player camera
|
||||||
|
case DisplayState.Game:
|
||||||
|
// TODO
|
||||||
|
return;
|
||||||
|
|
||||||
|
// if we're transitioning to the main menu state,
|
||||||
|
// change camera to the main menu camera
|
||||||
|
case DisplayState.ScreenMainMenu:
|
||||||
|
// TODO
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// wrapper function to quit the game
|
||||||
|
/// in case of any cleanup needed
|
||||||
|
/// </summary>
|
||||||
|
public void Quit()
|
||||||
|
{
|
||||||
|
// quit the application
|
||||||
|
Application.Quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// resets game state and starts a new game, will call <c>SetDisplayState()</c>
|
||||||
|
/// </summary>
|
||||||
|
public void NewGame()
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 633b0d9025532844ca48e257b026ac1a
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: -60
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
106
SheKnowsWhatYouAreToHerGame/Assets/Scripts/MainMenu.cs
Normal file
106
SheKnowsWhatYouAreToHerGame/Assets/Scripts/MainMenu.cs
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
/*
|
||||||
|
* author: mark joshwel
|
||||||
|
* date: 29/5/2024
|
||||||
|
* description: main menu script for handling main menu button functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UIElements;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// class managing the main menu and button function invocations
|
||||||
|
/// </summary>
|
||||||
|
public class MainMenu : CommonMenu
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// button to play game
|
||||||
|
/// </summary>
|
||||||
|
public Button ButtonPlay;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// button to show options menu
|
||||||
|
/// </summary>
|
||||||
|
public Button ButtonOptions;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// button to show credits menu
|
||||||
|
/// </summary>
|
||||||
|
public Button ButtonCredits;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// button to quit game
|
||||||
|
/// </summary>
|
||||||
|
public Button ButtonExit;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// function to associate a display state with the menu,
|
||||||
|
/// and subscribe button events to their respective functions
|
||||||
|
/// </summary>
|
||||||
|
public override void OnEnable()
|
||||||
|
{
|
||||||
|
associatedState = GameManager.DisplayState.ScreenMainMenu;
|
||||||
|
base.OnEnable();
|
||||||
|
|
||||||
|
// get the start button from the ui root and subscribe appropriate functions
|
||||||
|
ButtonPlay = UI.Q<Button>("ButtonPlay");
|
||||||
|
ButtonPlay.clicked += PlayClick;
|
||||||
|
ButtonPlay.clicked += OptionStartGame;
|
||||||
|
|
||||||
|
// get the options button from the ui root and subscribe appropriate functions
|
||||||
|
ButtonOptions = UI.Q<Button>("ButtonOptions");
|
||||||
|
ButtonOptions.clicked += PlayClick;
|
||||||
|
ButtonOptions.clicked += OptionShowOptions;
|
||||||
|
|
||||||
|
// get the credits button from the ui root and subscribe appropriate functions
|
||||||
|
ButtonCredits = UI.Q<Button>("ButtonCredits");
|
||||||
|
ButtonCredits.clicked += PlayClick;
|
||||||
|
ButtonCredits.clicked += OptionShowCredits;
|
||||||
|
|
||||||
|
// get the quit button from the ui root and subscribe appropriate functions
|
||||||
|
ButtonExit = UI.Q<Button>("ButtonExit");
|
||||||
|
ButtonExit.clicked += PlayClick;
|
||||||
|
ButtonExit.clicked += OptionQuitGame;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// handles start button press,
|
||||||
|
/// signals the game manager appropriately
|
||||||
|
/// </summary>
|
||||||
|
private void OptionStartGame()
|
||||||
|
{
|
||||||
|
// start game
|
||||||
|
Game.SetDisplayState(GameManager.DisplayState.Game);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// handles credits button press,
|
||||||
|
/// signals the game manager appropriately
|
||||||
|
/// </summary>
|
||||||
|
private void OptionShowCredits()
|
||||||
|
{
|
||||||
|
// show credits menu
|
||||||
|
Game.SetDisplayState(GameManager.DisplayState.ScreenCreditsMenu);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// handles options button press,
|
||||||
|
/// signals the game manager appropriately
|
||||||
|
/// </summary>
|
||||||
|
private void OptionShowOptions()
|
||||||
|
{
|
||||||
|
// show options menu
|
||||||
|
Game.SetDisplayState(GameManager.DisplayState.ScreenOptionsMenu);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// handles quit button press,
|
||||||
|
/// signals the game manager appropriately
|
||||||
|
/// </summary>
|
||||||
|
private void OptionQuitGame()
|
||||||
|
{
|
||||||
|
// quit game
|
||||||
|
// TODO: do we need to integrate this with the game manager?
|
||||||
|
Debug.Log("quit button pressed");
|
||||||
|
Game.Quit();
|
||||||
|
}
|
||||||
|
}
|
11
SheKnowsWhatYouAreToHerGame/Assets/Scripts/MainMenu.cs.meta
Normal file
11
SheKnowsWhatYouAreToHerGame/Assets/Scripts/MainMenu.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dc2f00f7758fd1f4982aa4642d5f6d10
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
93
SheKnowsWhatYouAreToHerGame/Assets/Scripts/OptionsMenu.cs
Normal file
93
SheKnowsWhatYouAreToHerGame/Assets/Scripts/OptionsMenu.cs
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
/*
|
||||||
|
* author: mark joshwel
|
||||||
|
* date: 30/5/2024
|
||||||
|
* description: options menu script for handling credits menu button functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UIElements;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// class managing the credits menu and button function invocations
|
||||||
|
/// </summary>
|
||||||
|
public class OptionsMenu : CommonMenu
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// button to return to main menu
|
||||||
|
/// </summary>
|
||||||
|
public Button ButtonReturn;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// slider for music volume
|
||||||
|
/// </summary>
|
||||||
|
public Slider SliderAudioMusic;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// slider for sfx volume
|
||||||
|
/// </summary>
|
||||||
|
public Slider SliderAudioSfx;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// function to associate a display state with the menu,
|
||||||
|
/// and subscribe button events to their respective functions
|
||||||
|
/// </summary>
|
||||||
|
public override void OnEnable()
|
||||||
|
{
|
||||||
|
associatedState = GameManager.DisplayState.ScreenOptionsMenu;
|
||||||
|
base.OnEnable();
|
||||||
|
|
||||||
|
// get the start button from the ui root and subscribe appropriate functions
|
||||||
|
ButtonReturn = UI.Q<Button>("ButtonReturn");
|
||||||
|
Debug.Log($"ButtonReturn={ButtonReturn}");
|
||||||
|
ButtonReturn.clicked += PlayClick;
|
||||||
|
ButtonReturn.clicked += OptionReturnToMainMenu;
|
||||||
|
|
||||||
|
// get the music slider from the ui root
|
||||||
|
SliderAudioMusic = UI.Q<Slider>("Music");
|
||||||
|
// and set the initial value to the current music volume
|
||||||
|
SliderAudioMusic.value = Audio.GetMusicVolume() * 100;
|
||||||
|
// and subscribe appropriate functions
|
||||||
|
SliderAudioMusic.RegisterCallback<ChangeEvent<float>>(OptionSetMusicVolume);
|
||||||
|
|
||||||
|
// get the sfx slider from the ui root
|
||||||
|
SliderAudioSfx = UI.Q<Slider>("SFX");
|
||||||
|
// and set the initial value to the current sfx volume
|
||||||
|
SliderAudioSfx.value = Audio.GetSfxVolume() * 100;
|
||||||
|
// and subscribe appropriate functions
|
||||||
|
SliderAudioSfx.RegisterCallback<ChangeEvent<float>>(OptionSetSfxVolume);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// handles return to main menu button press,
|
||||||
|
/// signals the game manager appropriately
|
||||||
|
/// </summary>
|
||||||
|
private void OptionReturnToMainMenu()
|
||||||
|
{
|
||||||
|
// return to main menu
|
||||||
|
Game.SetDisplayState(GameManager.DisplayState.ScreenMainMenu);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// handle music volume slider change,
|
||||||
|
/// sets the music channel volume in the audio manager appropriately
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="evt"></param>
|
||||||
|
private void OptionSetMusicVolume(ChangeEvent<float> evt)
|
||||||
|
{
|
||||||
|
Debug.Log($"setting music volume to {evt.newValue / 100}");
|
||||||
|
// slider is from 0 to 100, convert to 0 to 1, and set
|
||||||
|
Audio.SetMusicVolume(evt.newValue / 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// handle sfx volume slider change,
|
||||||
|
/// sets the sfx channel volume in the audio manager appropriately
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="evt"></param>
|
||||||
|
private void OptionSetSfxVolume(ChangeEvent<float> evt)
|
||||||
|
{
|
||||||
|
Debug.Log($"setting sfx volume to {evt.newValue / 100}");
|
||||||
|
// slider is from 0 to 100, convert to 0 to 1, and set
|
||||||
|
Audio.SetSfxVolume(evt.newValue / 100);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9bd10c0f201ff3a439fd5e9ecdfe5a87
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
SheKnowsWhatYouAreToHerGame/Assets/TextMesh Pro.meta
Normal file
8
SheKnowsWhatYouAreToHerGame/Assets/TextMesh Pro.meta
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f54d1bd14bd3ca042bd867b519fee8cc
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 243e06394e614e5d99fab26083b707fa
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 731f1baa9d144a9897cb1d341c2092b8
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1442040525
|
||||||
|
licenseType: Pro
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1 @@
|
||||||
|
)]}〕〉》」』】〙〗〟’”⦆»ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻‐゠–〜?!‼⁇⁈⁉・、%,.:;。!?]):;=}¢°"†‡℃〆%,.
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fade42e8bc714b018fac513c043d323b
|
||||||
|
timeCreated: 1425440388
|
||||||
|
licenseType: Store
|
||||||
|
TextScriptImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1 @@
|
||||||
|
([{〔〈《「『【〘〖〝‘“⦅«$—…‥〳〴〵\[({£¥"々〇$¥₩ #
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d82c1b31c7e74239bff1220585707d2b
|
||||||
|
timeCreated: 1425440388
|
||||||
|
licenseType: Store
|
||||||
|
TextScriptImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 512a49d95c0c4332bdd98131869c23c9
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1441876896
|
||||||
|
licenseType: Pro
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,659 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!21 &2103686
|
||||||
|
Material:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: TextMeshPro/Sprite
|
||||||
|
m_Shader: {fileID: 4800000, guid: cf81c85f95fe47e1a27f6ae460cf182c, type: 3}
|
||||||
|
m_ShaderKeywords: UNITY_UI_CLIP_RECT
|
||||||
|
m_LightmapFlags: 5
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap: {}
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _MainTex:
|
||||||
|
m_Texture: {fileID: 2800000, guid: dffef66376be4fa480fb02b19edbe903, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Floats:
|
||||||
|
- _ColorMask: 15
|
||||||
|
- _CullMode: 0
|
||||||
|
- _Stencil: 0
|
||||||
|
- _StencilComp: 8
|
||||||
|
- _StencilOp: 0
|
||||||
|
- _StencilReadMask: 255
|
||||||
|
- _StencilWriteMask: 255
|
||||||
|
- _UseUIAlphaClip: 0
|
||||||
|
m_Colors:
|
||||||
|
- _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767}
|
||||||
|
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 84a92b25f83d49b9bc132d206b370281, type: 3}
|
||||||
|
m_Name: EmojiOne
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
hashCode: -1836805472
|
||||||
|
material: {fileID: 2103686}
|
||||||
|
materialHashCode: 0
|
||||||
|
m_Version: 1.1.0
|
||||||
|
m_FaceInfo:
|
||||||
|
m_FamilyName:
|
||||||
|
m_StyleName:
|
||||||
|
m_PointSize: 0
|
||||||
|
m_Scale: 0
|
||||||
|
m_LineHeight: 0
|
||||||
|
m_AscentLine: 0
|
||||||
|
m_CapLine: 0
|
||||||
|
m_MeanLine: 0
|
||||||
|
m_Baseline: 0
|
||||||
|
m_DescentLine: 0
|
||||||
|
m_SuperscriptOffset: 0
|
||||||
|
m_SuperscriptSize: 0
|
||||||
|
m_SubscriptOffset: 0
|
||||||
|
m_SubscriptSize: 0
|
||||||
|
m_UnderlineOffset: 0
|
||||||
|
m_UnderlineThickness: 0
|
||||||
|
m_StrikethroughOffset: 0
|
||||||
|
m_StrikethroughThickness: 0
|
||||||
|
m_TabWidth: 0
|
||||||
|
spriteSheet: {fileID: 2800000, guid: dffef66376be4fa480fb02b19edbe903, type: 3}
|
||||||
|
m_SpriteCharacterTable:
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 128522
|
||||||
|
m_GlyphIndex: 0
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: Smiling face with smiling eyes
|
||||||
|
m_HashCode: -1318250903
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 128523
|
||||||
|
m_GlyphIndex: 1
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: 1f60b
|
||||||
|
m_HashCode: 57188339
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 128525
|
||||||
|
m_GlyphIndex: 2
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: 1f60d
|
||||||
|
m_HashCode: 57188341
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 128526
|
||||||
|
m_GlyphIndex: 3
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: 1f60e
|
||||||
|
m_HashCode: 57188340
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 128512
|
||||||
|
m_GlyphIndex: 4
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: Grinning face
|
||||||
|
m_HashCode: -95541379
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 128513
|
||||||
|
m_GlyphIndex: 5
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: 1f601
|
||||||
|
m_HashCode: 57188256
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 128514
|
||||||
|
m_GlyphIndex: 6
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: Face with tears of joy
|
||||||
|
m_HashCode: 239522663
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 128515
|
||||||
|
m_GlyphIndex: 7
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: 1f603
|
||||||
|
m_HashCode: 57188258
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 128516
|
||||||
|
m_GlyphIndex: 8
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: 1f604
|
||||||
|
m_HashCode: 57188261
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 128517
|
||||||
|
m_GlyphIndex: 9
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: 1f605
|
||||||
|
m_HashCode: 57188260
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 128518
|
||||||
|
m_GlyphIndex: 10
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: 1f606
|
||||||
|
m_HashCode: 57188263
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 128521
|
||||||
|
m_GlyphIndex: 11
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: 1f609
|
||||||
|
m_HashCode: 57188264
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 0
|
||||||
|
m_GlyphIndex: 12
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: .notdef
|
||||||
|
m_HashCode: -600915428
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 129315
|
||||||
|
m_GlyphIndex: 13
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: 1f923
|
||||||
|
m_HashCode: 57200239
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 9786
|
||||||
|
m_GlyphIndex: 14
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: 263a
|
||||||
|
m_HashCode: 1748406
|
||||||
|
- m_ElementType: 2
|
||||||
|
m_Unicode: 9785
|
||||||
|
m_GlyphIndex: 15
|
||||||
|
m_Scale: 1
|
||||||
|
m_Name: 2639
|
||||||
|
m_HashCode: 1748462
|
||||||
|
m_SpriteGlyphTable:
|
||||||
|
- m_Index: 0
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 0
|
||||||
|
m_Y: 384
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 1
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 128
|
||||||
|
m_Y: 384
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 2
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 256
|
||||||
|
m_Y: 384
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 3
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 384
|
||||||
|
m_Y: 384
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 4
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 0
|
||||||
|
m_Y: 256
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 5
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 128
|
||||||
|
m_Y: 256
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 6
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 256
|
||||||
|
m_Y: 256
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 7
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 384
|
||||||
|
m_Y: 256
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 8
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 0
|
||||||
|
m_Y: 128
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 9
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 128
|
||||||
|
m_Y: 128
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 10
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 256
|
||||||
|
m_Y: 128
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 11
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 384
|
||||||
|
m_Y: 128
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 12
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 0
|
||||||
|
m_Y: 0
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 13
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 128
|
||||||
|
m_Y: 0
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 14
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 256
|
||||||
|
m_Y: 0
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- m_Index: 15
|
||||||
|
m_Metrics:
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_HorizontalBearingX: 0
|
||||||
|
m_HorizontalBearingY: 115.6
|
||||||
|
m_HorizontalAdvance: 128
|
||||||
|
m_GlyphRect:
|
||||||
|
m_X: 384
|
||||||
|
m_Y: 0
|
||||||
|
m_Width: 128
|
||||||
|
m_Height: 128
|
||||||
|
m_Scale: 1
|
||||||
|
m_AtlasIndex: 0
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
spriteInfoList:
|
||||||
|
- id: 0
|
||||||
|
x: 0
|
||||||
|
y: 384
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: Smiling face with smiling eyes
|
||||||
|
hashCode: -1318250903
|
||||||
|
unicode: 128522
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 1
|
||||||
|
x: 128
|
||||||
|
y: 384
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: 1f60b
|
||||||
|
hashCode: 57188339
|
||||||
|
unicode: 128523
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 2
|
||||||
|
x: 256
|
||||||
|
y: 384
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: 1f60d
|
||||||
|
hashCode: 57188341
|
||||||
|
unicode: 128525
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 3
|
||||||
|
x: 384
|
||||||
|
y: 384
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: 1f60e
|
||||||
|
hashCode: 57188340
|
||||||
|
unicode: 128526
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 4
|
||||||
|
x: 0
|
||||||
|
y: 256
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: Grinning face
|
||||||
|
hashCode: -95541379
|
||||||
|
unicode: 128512
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 5
|
||||||
|
x: 128
|
||||||
|
y: 256
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: 1f601
|
||||||
|
hashCode: 57188256
|
||||||
|
unicode: 128513
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 6
|
||||||
|
x: 256
|
||||||
|
y: 256
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: Face with tears of joy
|
||||||
|
hashCode: 239522663
|
||||||
|
unicode: 128514
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 7
|
||||||
|
x: 384
|
||||||
|
y: 256
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: 1f603
|
||||||
|
hashCode: 57188258
|
||||||
|
unicode: 128515
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 8
|
||||||
|
x: 0
|
||||||
|
y: 128
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: 1f604
|
||||||
|
hashCode: 57188261
|
||||||
|
unicode: 128516
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 9
|
||||||
|
x: 128
|
||||||
|
y: 128
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: 1f605
|
||||||
|
hashCode: 57188260
|
||||||
|
unicode: 128517
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 10
|
||||||
|
x: 256
|
||||||
|
y: 128
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: 1f606
|
||||||
|
hashCode: 57188263
|
||||||
|
unicode: 128518
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 11
|
||||||
|
x: 384
|
||||||
|
y: 128
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: 1f609
|
||||||
|
hashCode: 57188264
|
||||||
|
unicode: 128521
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 12
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: 1f618
|
||||||
|
hashCode: 57188168
|
||||||
|
unicode: 128536
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 13
|
||||||
|
x: 128
|
||||||
|
y: 0
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: 1f923
|
||||||
|
hashCode: 57200239
|
||||||
|
unicode: 129315
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 14
|
||||||
|
x: 256
|
||||||
|
y: 0
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: 263a
|
||||||
|
hashCode: 1748406
|
||||||
|
unicode: 9786
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
- id: 15
|
||||||
|
x: 384
|
||||||
|
y: 0
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
xOffset: 0
|
||||||
|
yOffset: 115.6
|
||||||
|
xAdvance: 128
|
||||||
|
scale: 1
|
||||||
|
name: 2639
|
||||||
|
hashCode: 1748462
|
||||||
|
unicode: 9785
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
sprite: {fileID: 0}
|
||||||
|
fallbackSpriteAssets: []
|
||||||
|
--- !u!21 &1369835458
|
||||||
|
Material:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: TextMeshPro/Sprite
|
||||||
|
m_Shader: {fileID: 4800000, guid: cf81c85f95fe47e1a27f6ae460cf182c, type: 3}
|
||||||
|
m_ShaderKeywords:
|
||||||
|
m_LightmapFlags: 5
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap: {}
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs: []
|
||||||
|
m_Floats: []
|
||||||
|
m_Colors: []
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c41005c129ba4d66911b75229fd70b45
|
||||||
|
timeCreated: 1480316912
|
||||||
|
licenseType: Pro
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4aecb92fff08436c8303b10eab8da368
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1441876950
|
||||||
|
licenseType: Pro
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,68 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: ab2114bdc8544297b417dfefe9f1e410, type: 3}
|
||||||
|
m_Name: Default Style Sheet
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_StyleList:
|
||||||
|
- m_Name: H1
|
||||||
|
m_HashCode: 2425
|
||||||
|
m_OpeningDefinition: <size=2em><b><#40ff80>*
|
||||||
|
m_ClosingDefinition: '*</size></b></color>'
|
||||||
|
m_OpeningTagArray: 3c00000073000000690000007a000000650000003d00000032000000650000006d0000003e0000003c000000620000003e0000003c000000230000003400000030000000660000006600000038000000300000003e0000002a000000
|
||||||
|
m_ClosingTagArray: 2a0000003c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000
|
||||||
|
- m_Name: Quote
|
||||||
|
m_HashCode: 92254330
|
||||||
|
m_OpeningDefinition: <i><size=75%><margin=10%>
|
||||||
|
m_ClosingDefinition: </i></size></width></margin>
|
||||||
|
m_OpeningTagArray: 3c000000690000003e0000003c00000073000000690000007a000000650000003d0000003700000035000000250000003e0000003c0000006d000000610000007200000067000000690000006e0000003d0000003100000030000000250000003e000000
|
||||||
|
m_ClosingTagArray: 3c0000002f000000690000003e0000003c0000002f00000073000000690000007a000000650000003e0000003c0000002f00000077000000690000006400000074000000680000003e0000003c0000002f0000006d000000610000007200000067000000690000006e0000003e000000
|
||||||
|
- m_Name: Link
|
||||||
|
m_HashCode: 2687968
|
||||||
|
m_OpeningDefinition: <u><#40a0ff><link="ID_01">
|
||||||
|
m_ClosingDefinition: </u></color></link>
|
||||||
|
m_OpeningTagArray: 3c000000750000003e0000003c000000230000003400000030000000610000003000000066000000660000003e0000003c0000006c000000690000006e0000006b0000003d0000002200000049000000440000005f0000003000000031000000220000003e000000
|
||||||
|
m_ClosingTagArray: 3c0000002f000000750000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f0000006c000000690000006e0000006b0000003e000000
|
||||||
|
- m_Name: Title
|
||||||
|
m_HashCode: 98732960
|
||||||
|
m_OpeningDefinition: <size=125%><b><align=center>
|
||||||
|
m_ClosingDefinition: </size></b></align>
|
||||||
|
m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000003200000035000000250000003e0000003c000000620000003e0000003c000000610000006c00000069000000670000006e0000003d00000063000000650000006e0000007400000065000000720000003e000000
|
||||||
|
m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000610000006c00000069000000670000006e0000003e000000
|
||||||
|
- m_Name: H2
|
||||||
|
m_HashCode: 2426
|
||||||
|
m_OpeningDefinition: <size=1.5em><b><#4080FF>
|
||||||
|
m_ClosingDefinition: </size></b></color>
|
||||||
|
m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000002e00000035000000650000006d0000003e0000003c000000620000003e0000003c000000230000003400000030000000380000003000000046000000460000003e000000
|
||||||
|
m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000
|
||||||
|
- m_Name: H3
|
||||||
|
m_HashCode: 2427
|
||||||
|
m_OpeningDefinition: <size=1.17em><b><#FF8040>
|
||||||
|
m_ClosingDefinition: </size></b></color>
|
||||||
|
m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000002e0000003100000037000000650000006d0000003e0000003c000000620000003e0000003c000000230000004600000046000000380000003000000034000000300000003e000000
|
||||||
|
m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000
|
||||||
|
- m_Name: C1
|
||||||
|
m_HashCode: 2194
|
||||||
|
m_OpeningDefinition: <color=#ffff40>
|
||||||
|
m_ClosingDefinition: </color>
|
||||||
|
m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000006600000066000000660000006600000034000000300000003e000000
|
||||||
|
m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e000000
|
||||||
|
- m_Name: C2
|
||||||
|
m_HashCode: 2193
|
||||||
|
m_OpeningDefinition: <color=#ff40FF><size=125%>
|
||||||
|
m_ClosingDefinition: </color></size>
|
||||||
|
m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000006600000066000000340000003000000046000000460000003e0000003c00000073000000690000007a000000650000003d000000310000003200000035000000250000003e000000
|
||||||
|
m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f00000073000000690000007a000000650000003e000000
|
||||||
|
- m_Name: C3
|
||||||
|
m_HashCode: 2192
|
||||||
|
m_OpeningDefinition: <color=#80A0FF><b>
|
||||||
|
m_ClosingDefinition: </color></b>
|
||||||
|
m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000003800000030000000410000003000000046000000460000003e0000003c000000620000003e000000
|
||||||
|
m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f000000620000003e000000
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f952c082cb03451daed3ee968ac6c63e
|
||||||
|
timeCreated: 1432805430
|
||||||
|
licenseType: Store
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,46 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 2705215ac5b84b70bacc50632be6e391, type: 3}
|
||||||
|
m_Name: TMP Settings
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_enableWordWrapping: 1
|
||||||
|
m_enableKerning: 1
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
m_enableTintAllSprites: 0
|
||||||
|
m_enableParseEscapeCharacters: 1
|
||||||
|
m_EnableRaycastTarget: 1
|
||||||
|
m_GetFontFeaturesAtRuntime: 1
|
||||||
|
m_missingGlyphCharacter: 0
|
||||||
|
m_warningsDisabled: 0
|
||||||
|
m_defaultFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||||
|
m_defaultFontAssetPath: Fonts & Materials/
|
||||||
|
m_defaultFontSize: 36
|
||||||
|
m_defaultAutoSizeMinRatio: 0.5
|
||||||
|
m_defaultAutoSizeMaxRatio: 2
|
||||||
|
m_defaultTextMeshProTextContainerSize: {x: 20, y: 5}
|
||||||
|
m_defaultTextMeshProUITextContainerSize: {x: 200, y: 50}
|
||||||
|
m_autoSizeTextContainer: 0
|
||||||
|
m_fallbackFontAssets: []
|
||||||
|
m_matchMaterialPreset: 1
|
||||||
|
m_defaultSpriteAsset: {fileID: 11400000, guid: c41005c129ba4d66911b75229fd70b45,
|
||||||
|
type: 2}
|
||||||
|
m_defaultSpriteAssetPath: Sprite Assets/
|
||||||
|
m_enableEmojiSupport: 1
|
||||||
|
m_MissingCharacterSpriteUnicode: 0
|
||||||
|
m_defaultColorGradientPresetsPath: Color Gradient Presets/
|
||||||
|
m_defaultStyleSheet: {fileID: 11400000, guid: f952c082cb03451daed3ee968ac6c63e,
|
||||||
|
type: 2}
|
||||||
|
m_StyleSheetsResourcePath:
|
||||||
|
m_leadingCharacters: {fileID: 4900000, guid: d82c1b31c7e74239bff1220585707d2b, type: 3}
|
||||||
|
m_followingCharacters: {fileID: 4900000, guid: fade42e8bc714b018fac513c043d323b,
|
||||||
|
type: 3}
|
||||||
|
m_UseModernHangulLineBreakingRules: 0
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3f5b5dff67a942289a9defa416b206f3
|
||||||
|
timeCreated: 1436653997
|
||||||
|
licenseType: Pro
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e9f693669af91aa45ad615fc681ed29f
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,157 @@
|
||||||
|
Shader "TextMeshPro/Bitmap Custom Atlas"
|
||||||
|
{
|
||||||
|
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_MainTex ("Font Atlas", 2D) = "white" {}
|
||||||
|
_FaceTex ("Font Texture", 2D) = "white" {}
|
||||||
|
[HDR]_FaceColor ("Text Color", Color) = (1,1,1,1)
|
||||||
|
|
||||||
|
_VertexOffsetX ("Vertex OffsetX", float) = 0
|
||||||
|
_VertexOffsetY ("Vertex OffsetY", float) = 0
|
||||||
|
_MaskSoftnessX ("Mask SoftnessX", float) = 0
|
||||||
|
_MaskSoftnessY ("Mask SoftnessY", float) = 0
|
||||||
|
|
||||||
|
_ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
|
||||||
|
_Padding ("Padding", float) = 0
|
||||||
|
|
||||||
|
_StencilComp("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil("Stencil ID", Float) = 0
|
||||||
|
_StencilOp("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_CullMode("Cull Mode", Float) = 0
|
||||||
|
_ColorMask("Color Mask", Float) = 15
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref[_Stencil]
|
||||||
|
Comp[_StencilComp]
|
||||||
|
Pass[_StencilOp]
|
||||||
|
ReadMask[_StencilReadMask]
|
||||||
|
WriteMask[_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Lighting Off
|
||||||
|
Cull [_CullMode]
|
||||||
|
ZTest [unity_GUIZTestMode]
|
||||||
|
ZWrite Off
|
||||||
|
Fog
|
||||||
|
{
|
||||||
|
Mode Off
|
||||||
|
}
|
||||||
|
Blend SrcAlpha OneMinusSrcAlpha
|
||||||
|
ColorMask[_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma vertex vert
|
||||||
|
#pragma fragment frag
|
||||||
|
|
||||||
|
#pragma multi_compile __ UNITY_UI_CLIP_RECT
|
||||||
|
#pragma multi_compile __ UNITY_UI_ALPHACLIP
|
||||||
|
|
||||||
|
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
|
||||||
|
struct appdata_t
|
||||||
|
{
|
||||||
|
float4 vertex : POSITION;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord0 : TEXCOORD0;
|
||||||
|
float2 texcoord1 : TEXCOORD1;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct v2f
|
||||||
|
{
|
||||||
|
float4 vertex : SV_POSITION;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord0 : TEXCOORD0;
|
||||||
|
float2 texcoord1 : TEXCOORD1;
|
||||||
|
float4 mask : TEXCOORD2;
|
||||||
|
};
|
||||||
|
|
||||||
|
uniform sampler2D _MainTex;
|
||||||
|
uniform sampler2D _FaceTex;
|
||||||
|
uniform float4 _FaceTex_ST;
|
||||||
|
uniform fixed4 _FaceColor;
|
||||||
|
|
||||||
|
uniform float _VertexOffsetX;
|
||||||
|
uniform float _VertexOffsetY;
|
||||||
|
uniform float4 _ClipRect;
|
||||||
|
uniform float _MaskSoftnessX;
|
||||||
|
uniform float _MaskSoftnessY;
|
||||||
|
|
||||||
|
float2 UnpackUV(float uv)
|
||||||
|
{
|
||||||
|
float2 output;
|
||||||
|
output.x = floor(uv / 4096);
|
||||||
|
output.y = uv - 4096 * output.x;
|
||||||
|
|
||||||
|
return output * 0.001953125;
|
||||||
|
}
|
||||||
|
|
||||||
|
v2f vert(appdata_t v)
|
||||||
|
{
|
||||||
|
float4 vert = v.vertex;
|
||||||
|
vert.x += _VertexOffsetX;
|
||||||
|
vert.y += _VertexOffsetY;
|
||||||
|
|
||||||
|
vert.xy += (vert.w * 0.5) / _ScreenParams.xy;
|
||||||
|
|
||||||
|
float4 vPosition = UnityPixelSnap(UnityObjectToClipPos(vert));
|
||||||
|
|
||||||
|
fixed4 faceColor = v.color;
|
||||||
|
faceColor *= _FaceColor;
|
||||||
|
|
||||||
|
v2f OUT;
|
||||||
|
OUT.vertex = vPosition;
|
||||||
|
OUT.color = faceColor;
|
||||||
|
OUT.texcoord0 = v.texcoord0;
|
||||||
|
OUT.texcoord1 = TRANSFORM_TEX(UnpackUV(v.texcoord1), _FaceTex);
|
||||||
|
float2 pixelSize = vPosition.w;
|
||||||
|
pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0],
|
||||||
|
_ScreenParams.y * UNITY_MATRIX_P[1][1]));
|
||||||
|
|
||||||
|
// Clamp _ClipRect to 16bit.
|
||||||
|
float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
|
||||||
|
OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw,
|
||||||
|
0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
|
||||||
|
|
||||||
|
return OUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixed4 frag(v2f IN) : SV_Target
|
||||||
|
{
|
||||||
|
fixed4 color = tex2D(_MainTex, IN.texcoord0) * tex2D(_FaceTex, IN.texcoord1) * IN.color;
|
||||||
|
|
||||||
|
// Alternative implementation to UnityGet2DClipping with support for softness.
|
||||||
|
#if UNITY_UI_CLIP_RECT
|
||||||
|
half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw);
|
||||||
|
color *= m.x * m.y;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNITY_UI_ALPHACLIP
|
||||||
|
clip(color.a - 0.001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 48bb5f55d8670e349b6e614913f9d910
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,167 @@
|
||||||
|
Shader "TextMeshPro/Mobile/Bitmap"
|
||||||
|
{
|
||||||
|
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_MainTex ("Font Atlas", 2D) = "white" {}
|
||||||
|
[HDR]_Color ("Text Color", Color) = (1,1,1,1)
|
||||||
|
_DiffusePower ("Diffuse Power", Range(1.0,4.0)) = 1.0
|
||||||
|
|
||||||
|
_VertexOffsetX("Vertex OffsetX", float) = 0
|
||||||
|
_VertexOffsetY("Vertex OffsetY", float) = 0
|
||||||
|
_MaskSoftnessX("Mask SoftnessX", float) = 0
|
||||||
|
_MaskSoftnessY("Mask SoftnessY", float) = 0
|
||||||
|
|
||||||
|
_ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
|
||||||
|
|
||||||
|
_StencilComp("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil("Stencil ID", Float) = 0
|
||||||
|
_StencilOp("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_CullMode("Cull Mode", Float) = 0
|
||||||
|
_ColorMask("Color Mask", Float) = 15
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref[_Stencil]
|
||||||
|
Comp[_StencilComp]
|
||||||
|
Pass[_StencilOp]
|
||||||
|
ReadMask[_StencilReadMask]
|
||||||
|
WriteMask[_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Lighting Off
|
||||||
|
Cull [_CullMode]
|
||||||
|
ZTest [unity_GUIZTestMode]
|
||||||
|
ZWrite Off
|
||||||
|
Fog
|
||||||
|
{
|
||||||
|
Mode Off
|
||||||
|
}
|
||||||
|
Blend SrcAlpha OneMinusSrcAlpha
|
||||||
|
ColorMask[_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma vertex vert
|
||||||
|
#pragma fragment frag
|
||||||
|
#pragma fragmentoption ARB_precision_hint_fastest
|
||||||
|
|
||||||
|
#pragma multi_compile __ UNITY_UI_CLIP_RECT
|
||||||
|
#pragma multi_compile __ UNITY_UI_ALPHACLIP
|
||||||
|
|
||||||
|
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
|
||||||
|
struct appdata_t
|
||||||
|
{
|
||||||
|
float4 vertex : POSITION;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord0 : TEXCOORD0;
|
||||||
|
float2 texcoord1 : TEXCOORD1;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct v2f
|
||||||
|
{
|
||||||
|
float4 vertex : POSITION;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord0 : TEXCOORD0;
|
||||||
|
float4 mask : TEXCOORD2;
|
||||||
|
};
|
||||||
|
|
||||||
|
sampler2D _MainTex;
|
||||||
|
fixed4 _Color;
|
||||||
|
float _DiffusePower;
|
||||||
|
|
||||||
|
uniform float _VertexOffsetX;
|
||||||
|
uniform float _VertexOffsetY;
|
||||||
|
uniform float4 _ClipRect;
|
||||||
|
uniform float _MaskSoftnessX;
|
||||||
|
uniform float _MaskSoftnessY;
|
||||||
|
|
||||||
|
v2f vert(appdata_t v)
|
||||||
|
{
|
||||||
|
v2f OUT;
|
||||||
|
float4 vert = v.vertex;
|
||||||
|
vert.x += _VertexOffsetX;
|
||||||
|
vert.y += _VertexOffsetY;
|
||||||
|
|
||||||
|
vert.xy += (vert.w * 0.5) / _ScreenParams.xy;
|
||||||
|
|
||||||
|
OUT.vertex = UnityPixelSnap(UnityObjectToClipPos(vert));
|
||||||
|
OUT.color = v.color;
|
||||||
|
OUT.color *= _Color;
|
||||||
|
OUT.color.rgb *= _DiffusePower;
|
||||||
|
OUT.texcoord0 = v.texcoord0;
|
||||||
|
|
||||||
|
float2 pixelSize = OUT.vertex.w;
|
||||||
|
//pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1]));
|
||||||
|
|
||||||
|
// Clamp _ClipRect to 16bit.
|
||||||
|
float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
|
||||||
|
OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw,
|
||||||
|
0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
|
||||||
|
|
||||||
|
return OUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixed4 frag(v2f IN) : COLOR
|
||||||
|
{
|
||||||
|
fixed4 color = fixed4(IN.color.rgb, IN.color.a * tex2D(_MainTex, IN.texcoord0).a);
|
||||||
|
|
||||||
|
// Alternative implementation to UnityGet2DClipping with support for softness.
|
||||||
|
#if UNITY_UI_CLIP_RECT
|
||||||
|
half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw);
|
||||||
|
color *= m.x * m.y;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNITY_UI_ALPHACLIP
|
||||||
|
clip(color.a - 0.001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"
|
||||||
|
}
|
||||||
|
Lighting Off Cull Off ZTest Always ZWrite Off Fog
|
||||||
|
{
|
||||||
|
Mode Off
|
||||||
|
}
|
||||||
|
Blend SrcAlpha OneMinusSrcAlpha
|
||||||
|
BindChannels
|
||||||
|
{
|
||||||
|
Bind "Color", color
|
||||||
|
Bind "Vertex", vertex
|
||||||
|
Bind "TexCoord", texcoord0
|
||||||
|
}
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
SetTexture [_MainTex] {
|
||||||
|
constantColor [_Color] combine constant * primary, constant * texture
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1e3b057af24249748ff873be7fafee47
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,157 @@
|
||||||
|
Shader "TextMeshPro/Bitmap"
|
||||||
|
{
|
||||||
|
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_MainTex ("Font Atlas", 2D) = "white" {}
|
||||||
|
_FaceTex ("Font Texture", 2D) = "white" {}
|
||||||
|
[HDR]_FaceColor ("Text Color", Color) = (1,1,1,1)
|
||||||
|
|
||||||
|
_VertexOffsetX ("Vertex OffsetX", float) = 0
|
||||||
|
_VertexOffsetY ("Vertex OffsetY", float) = 0
|
||||||
|
_MaskSoftnessX ("Mask SoftnessX", float) = 0
|
||||||
|
_MaskSoftnessY ("Mask SoftnessY", float) = 0
|
||||||
|
|
||||||
|
_ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
|
||||||
|
|
||||||
|
_StencilComp("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil("Stencil ID", Float) = 0
|
||||||
|
_StencilOp("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_CullMode("Cull Mode", Float) = 0
|
||||||
|
_ColorMask("Color Mask", Float) = 15
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref[_Stencil]
|
||||||
|
Comp[_StencilComp]
|
||||||
|
Pass[_StencilOp]
|
||||||
|
ReadMask[_StencilReadMask]
|
||||||
|
WriteMask[_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Lighting Off
|
||||||
|
Cull [_CullMode]
|
||||||
|
ZTest [unity_GUIZTestMode]
|
||||||
|
ZWrite Off
|
||||||
|
Fog
|
||||||
|
{
|
||||||
|
Mode Off
|
||||||
|
}
|
||||||
|
Blend SrcAlpha OneMinusSrcAlpha
|
||||||
|
ColorMask[_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma vertex vert
|
||||||
|
#pragma fragment frag
|
||||||
|
|
||||||
|
#pragma multi_compile __ UNITY_UI_CLIP_RECT
|
||||||
|
#pragma multi_compile __ UNITY_UI_ALPHACLIP
|
||||||
|
|
||||||
|
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
|
||||||
|
struct appdata_t
|
||||||
|
{
|
||||||
|
float4 vertex : POSITION;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord0 : TEXCOORD0;
|
||||||
|
float2 texcoord1 : TEXCOORD1;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct v2f
|
||||||
|
{
|
||||||
|
float4 vertex : SV_POSITION;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord0 : TEXCOORD0;
|
||||||
|
float2 texcoord1 : TEXCOORD1;
|
||||||
|
float4 mask : TEXCOORD2;
|
||||||
|
};
|
||||||
|
|
||||||
|
uniform sampler2D _MainTex;
|
||||||
|
uniform sampler2D _FaceTex;
|
||||||
|
uniform float4 _FaceTex_ST;
|
||||||
|
uniform fixed4 _FaceColor;
|
||||||
|
|
||||||
|
uniform float _VertexOffsetX;
|
||||||
|
uniform float _VertexOffsetY;
|
||||||
|
uniform float4 _ClipRect;
|
||||||
|
uniform float _MaskSoftnessX;
|
||||||
|
uniform float _MaskSoftnessY;
|
||||||
|
|
||||||
|
float2 UnpackUV(float uv)
|
||||||
|
{
|
||||||
|
float2 output;
|
||||||
|
output.x = floor(uv / 4096);
|
||||||
|
output.y = uv - 4096 * output.x;
|
||||||
|
|
||||||
|
return output * 0.001953125;
|
||||||
|
}
|
||||||
|
|
||||||
|
v2f vert(appdata_t v)
|
||||||
|
{
|
||||||
|
float4 vert = v.vertex;
|
||||||
|
vert.x += _VertexOffsetX;
|
||||||
|
vert.y += _VertexOffsetY;
|
||||||
|
|
||||||
|
vert.xy += (vert.w * 0.5) / _ScreenParams.xy;
|
||||||
|
|
||||||
|
float4 vPosition = UnityPixelSnap(UnityObjectToClipPos(vert));
|
||||||
|
|
||||||
|
fixed4 faceColor = v.color;
|
||||||
|
faceColor *= _FaceColor;
|
||||||
|
|
||||||
|
v2f OUT;
|
||||||
|
OUT.vertex = vPosition;
|
||||||
|
OUT.color = faceColor;
|
||||||
|
OUT.texcoord0 = v.texcoord0;
|
||||||
|
OUT.texcoord1 = TRANSFORM_TEX(UnpackUV(v.texcoord1), _FaceTex);
|
||||||
|
float2 pixelSize = vPosition.w;
|
||||||
|
pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0],
|
||||||
|
_ScreenParams.y * UNITY_MATRIX_P[1][1]));
|
||||||
|
|
||||||
|
// Clamp _ClipRect to 16bit.
|
||||||
|
float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
|
||||||
|
OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw,
|
||||||
|
0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
|
||||||
|
|
||||||
|
return OUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixed4 frag(v2f IN) : SV_Target
|
||||||
|
{
|
||||||
|
fixed4 color = tex2D(_MainTex, IN.texcoord0);
|
||||||
|
color = fixed4(tex2D(_FaceTex, IN.texcoord1).rgb * IN.color.rgb, IN.color.a * color.a);
|
||||||
|
|
||||||
|
// Alternative implementation to UnityGet2DClipping with support for softness.
|
||||||
|
#if UNITY_UI_CLIP_RECT
|
||||||
|
half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw);
|
||||||
|
color *= m.x * m.y;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNITY_UI_ALPHACLIP
|
||||||
|
clip(color.a - 0.001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 128e987d567d4e2c824d754223b3f3b0
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,331 @@
|
||||||
|
Shader "TextMeshPro/Distance Field Overlay"
|
||||||
|
{
|
||||||
|
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_FaceTex ("Face Texture", 2D) = "white" {}
|
||||||
|
_FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0
|
||||||
|
_FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0
|
||||||
|
[HDR]_FaceColor ("Face Color", Color) = (1,1,1,1)
|
||||||
|
_FaceDilate ("Face Dilate", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1)
|
||||||
|
_OutlineTex ("Outline Texture", 2D) = "white" {}
|
||||||
|
_OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0
|
||||||
|
_OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0
|
||||||
|
_OutlineWidth ("Outline Thickness", Range(0, 1)) = 0
|
||||||
|
_OutlineSoftness ("Outline Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_Bevel ("Bevel", Range(0,1)) = 0.5
|
||||||
|
_BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0
|
||||||
|
_BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0
|
||||||
|
_BevelClamp ("Bevel Clamp", Range(0,1)) = 0
|
||||||
|
_BevelRoundness ("Bevel Roundness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_LightAngle ("Light Angle", Range(0.0, 6.2831853)) = 3.1416
|
||||||
|
[HDR]_SpecularColor ("Specular", Color) = (1,1,1,1)
|
||||||
|
_SpecularPower ("Specular", Range(0,4)) = 2.0
|
||||||
|
_Reflectivity ("Reflectivity", Range(5.0,15.0)) = 10
|
||||||
|
_Diffuse ("Diffuse", Range(0,1)) = 0.5
|
||||||
|
_Ambient ("Ambient", Range(1,0)) = 0.5
|
||||||
|
|
||||||
|
_BumpMap ("Normal map", 2D) = "bump" {}
|
||||||
|
_BumpOutline ("Bump Outline", Range(0,1)) = 0
|
||||||
|
_BumpFace ("Bump Face", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_ReflectFaceColor ("Reflection Color", Color) = (0,0,0,1)
|
||||||
|
_ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1)
|
||||||
|
_Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ }
|
||||||
|
_EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0)
|
||||||
|
|
||||||
|
|
||||||
|
[HDR]_UnderlayColor ("Border Color", Color) = (0,0,0, 0.5)
|
||||||
|
_UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0
|
||||||
|
_UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0
|
||||||
|
_UnderlayDilate ("Border Dilate", Range(-1,1)) = 0
|
||||||
|
_UnderlaySoftness ("Border Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_GlowColor ("Color", Color) = (0, 1, 0, 0.5)
|
||||||
|
_GlowOffset ("Offset", Range(-1,1)) = 0
|
||||||
|
_GlowInner ("Inner", Range(0,1)) = 0.05
|
||||||
|
_GlowOuter ("Outer", Range(0,1)) = 0.05
|
||||||
|
_GlowPower ("Falloff", Range(1, 0)) = 0.75
|
||||||
|
|
||||||
|
_WeightNormal ("Weight Normal", float) = 0
|
||||||
|
_WeightBold ("Weight Bold", float) = 0.5
|
||||||
|
|
||||||
|
_ShaderFlags ("Flags", float) = 0
|
||||||
|
_ScaleRatioA ("Scale RatioA", float) = 1
|
||||||
|
_ScaleRatioB ("Scale RatioB", float) = 1
|
||||||
|
_ScaleRatioC ("Scale RatioC", float) = 1
|
||||||
|
|
||||||
|
_MainTex ("Font Atlas", 2D) = "white" {}
|
||||||
|
_TextureWidth ("Texture Width", float) = 512
|
||||||
|
_TextureHeight ("Texture Height", float) = 512
|
||||||
|
_GradientScale ("Gradient Scale", float) = 5.0
|
||||||
|
_ScaleX ("Scale X", float) = 1.0
|
||||||
|
_ScaleY ("Scale Y", float) = 1.0
|
||||||
|
_PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875
|
||||||
|
_Sharpness ("Sharpness", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
_VertexOffsetX ("Vertex OffsetX", float) = 0
|
||||||
|
_VertexOffsetY ("Vertex OffsetY", float) = 0
|
||||||
|
|
||||||
|
_MaskCoord ("Mask Coordinates", vector) = (0, 0, 32767, 32767)
|
||||||
|
_ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
|
||||||
|
_MaskSoftnessX ("Mask SoftnessX", float) = 0
|
||||||
|
_MaskSoftnessY ("Mask SoftnessY", float) = 0
|
||||||
|
|
||||||
|
_StencilComp ("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil ("Stencil ID", Float) = 0
|
||||||
|
_StencilOp ("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask ("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask ("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_CullMode ("Cull Mode", Float) = 0
|
||||||
|
_ColorMask ("Color Mask", Float) = 15
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Overlay"
|
||||||
|
"IgnoreProjector"="True"
|
||||||
|
"RenderType"="Transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref [_Stencil]
|
||||||
|
Comp [_StencilComp]
|
||||||
|
Pass [_StencilOp]
|
||||||
|
ReadMask [_StencilReadMask]
|
||||||
|
WriteMask [_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
Cull [_CullMode]
|
||||||
|
ZWrite Off
|
||||||
|
Lighting Off
|
||||||
|
Fog
|
||||||
|
{
|
||||||
|
Mode Off
|
||||||
|
}
|
||||||
|
ZTest Always
|
||||||
|
Blend One OneMinusSrcAlpha
|
||||||
|
ColorMask [_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma target 3.0
|
||||||
|
#pragma vertex VertShader
|
||||||
|
#pragma fragment PixShader
|
||||||
|
#pragma shader_feature __ BEVEL_ON
|
||||||
|
#pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
|
||||||
|
#pragma shader_feature __ GLOW_ON
|
||||||
|
|
||||||
|
#pragma multi_compile __ UNITY_UI_CLIP_RECT
|
||||||
|
#pragma multi_compile __ UNITY_UI_ALPHACLIP
|
||||||
|
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
#include "UnityUI.cginc"
|
||||||
|
#include "TMPro_Properties.cginc"
|
||||||
|
#include "TMPro.cginc"
|
||||||
|
|
||||||
|
struct vertex_t
|
||||||
|
{
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
float4 position : POSITION;
|
||||||
|
float3 normal : NORMAL;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord0 : TEXCOORD0;
|
||||||
|
float2 texcoord1 : TEXCOORD1;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct pixel_t
|
||||||
|
{
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
UNITY_VERTEX_OUTPUT_STEREO
|
||||||
|
float4 position : SV_POSITION;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 atlas : TEXCOORD0; // Atlas
|
||||||
|
float4 param : TEXCOORD1; // alphaClip, scale, bias, weight
|
||||||
|
float4 mask : TEXCOORD2; // Position in object space(xy), pixel Size(zw)
|
||||||
|
float3 viewDir : TEXCOORD3;
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
float4 texcoord2 : TEXCOORD4; // u,v, scale, bias
|
||||||
|
fixed4 underlayColor : COLOR1;
|
||||||
|
#endif
|
||||||
|
float4 textures : TEXCOORD5;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Used by Unity internally to handle Texture Tiling and Offset.
|
||||||
|
float4 _FaceTex_ST;
|
||||||
|
float4 _OutlineTex_ST;
|
||||||
|
|
||||||
|
pixel_t VertShader(vertex_t input)
|
||||||
|
{
|
||||||
|
pixel_t output;
|
||||||
|
|
||||||
|
UNITY_INITIALIZE_OUTPUT(pixel_t, output);
|
||||||
|
UNITY_SETUP_INSTANCE_ID(input);
|
||||||
|
UNITY_TRANSFER_INSTANCE_ID(input, output);
|
||||||
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
|
||||||
|
|
||||||
|
float bold = step(input.texcoord1.y, 0);
|
||||||
|
|
||||||
|
float4 vert = input.position;
|
||||||
|
vert.x += _VertexOffsetX;
|
||||||
|
vert.y += _VertexOffsetY;
|
||||||
|
|
||||||
|
float4 vPosition = UnityObjectToClipPos(vert);
|
||||||
|
|
||||||
|
float2 pixelSize = vPosition.w;
|
||||||
|
pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
|
||||||
|
float scale = rsqrt(dot(pixelSize, pixelSize));
|
||||||
|
scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1);
|
||||||
|
if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale,
|
||||||
|
abs(dot(UnityObjectToWorldNormal(input.normal.xyz),
|
||||||
|
normalize(WorldSpaceViewDir(vert)))));
|
||||||
|
|
||||||
|
float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
|
||||||
|
weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
|
||||||
|
|
||||||
|
float bias = (.5 - weight) + (.5 / scale);
|
||||||
|
|
||||||
|
float alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _OutlineSoftness * _ScaleRatioA);
|
||||||
|
|
||||||
|
#if GLOW_ON
|
||||||
|
alphaClip = min(alphaClip, 1.0 - _GlowOffset * _ScaleRatioB - _GlowOuter * _ScaleRatioB);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
alphaClip = alphaClip / 2.0 - (.5 / scale) - weight;
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
float4 underlayColor = _UnderlayColor;
|
||||||
|
underlayColor.rgb *= underlayColor.a;
|
||||||
|
|
||||||
|
float bScale = scale;
|
||||||
|
bScale /= 1 + ((_UnderlaySoftness*_ScaleRatioC) * bScale);
|
||||||
|
float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale);
|
||||||
|
|
||||||
|
float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
|
||||||
|
float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
|
||||||
|
float2 bOffset = float2(x, y);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Generate UV for the Masking Texture
|
||||||
|
float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
|
||||||
|
float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
|
||||||
|
|
||||||
|
// Support for texture tiling and offset
|
||||||
|
float2 textureUV = UnpackUV(input.texcoord1.x);
|
||||||
|
float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex);
|
||||||
|
float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex);
|
||||||
|
|
||||||
|
|
||||||
|
output.position = vPosition;
|
||||||
|
output.color = input.color;
|
||||||
|
output.atlas = input.texcoord0;
|
||||||
|
output.param = float4(alphaClip, scale, bias, weight);
|
||||||
|
output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw,
|
||||||
|
0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
|
||||||
|
output.viewDir = mul((float3x3)_EnvMatrix,
|
||||||
|
_WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz);
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
output.texcoord2 = float4(input.texcoord0 + bOffset, bScale, bBias);
|
||||||
|
output.underlayColor = underlayColor;
|
||||||
|
#endif
|
||||||
|
output.textures = float4(faceUV, outlineUV);
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fixed4 PixShader(pixel_t input) : SV_Target
|
||||||
|
{
|
||||||
|
UNITY_SETUP_INSTANCE_ID(input);
|
||||||
|
|
||||||
|
float c = tex2D(_MainTex, input.atlas).a;
|
||||||
|
|
||||||
|
#ifndef UNDERLAY_ON
|
||||||
|
clip(c - input.param.x);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
float scale = input.param.y;
|
||||||
|
float bias = input.param.z;
|
||||||
|
float weight = input.param.w;
|
||||||
|
float sd = (bias - c) * scale;
|
||||||
|
|
||||||
|
float outline = (_OutlineWidth * _ScaleRatioA) * scale;
|
||||||
|
float softness = (_OutlineSoftness * _ScaleRatioA) * scale;
|
||||||
|
|
||||||
|
half4 faceColor = _FaceColor;
|
||||||
|
half4 outlineColor = _OutlineColor;
|
||||||
|
|
||||||
|
faceColor.rgb *= input.color.rgb;
|
||||||
|
|
||||||
|
faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y);
|
||||||
|
outlineColor *= tex2D(_OutlineTex,
|
||||||
|
input.textures.zw + float2(
|
||||||
|
_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y);
|
||||||
|
|
||||||
|
faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
|
||||||
|
|
||||||
|
#if BEVEL_ON
|
||||||
|
float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0);
|
||||||
|
float3 n = GetSurfaceNormal(input.atlas, weight, dxy);
|
||||||
|
|
||||||
|
float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz;
|
||||||
|
bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5));
|
||||||
|
n = normalize(n- bump);
|
||||||
|
|
||||||
|
float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0));
|
||||||
|
|
||||||
|
float3 col = GetSpecular(n, light);
|
||||||
|
faceColor.rgb += col*faceColor.a;
|
||||||
|
faceColor.rgb *= 1-(dot(n, light)*_Diffuse);
|
||||||
|
faceColor.rgb *= lerp(_Ambient, 1, n.z*n.z);
|
||||||
|
|
||||||
|
fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n));
|
||||||
|
faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_ON
|
||||||
|
float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z;
|
||||||
|
faceColor += input.underlayColor * saturate(d - input.texcoord2.w) * (1 - faceColor.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_INNER
|
||||||
|
float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z;
|
||||||
|
faceColor += input.underlayColor * (1 - saturate(d - input.texcoord2.w)) * saturate(1 - sd) * (1 - faceColor.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if GLOW_ON
|
||||||
|
float4 glowColor = GetGlowColor(sd, scale);
|
||||||
|
faceColor.rgb += glowColor.rgb * glowColor.a;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Alternative implementation to UnityGet2DClipping with support for softness.
|
||||||
|
#if UNITY_UI_CLIP_RECT
|
||||||
|
half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
|
||||||
|
faceColor *= m.x * m.y;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNITY_UI_ALPHACLIP
|
||||||
|
clip(faceColor.a - 0.001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return faceColor * input.color.a;
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Fallback "TextMeshPro/Mobile/Distance Field"
|
||||||
|
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dd89cf5b9246416f84610a006f916af7
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,322 @@
|
||||||
|
Shader "TextMeshPro/Distance Field SSD"
|
||||||
|
{
|
||||||
|
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_FaceTex ("Face Texture", 2D) = "white" {}
|
||||||
|
_FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0
|
||||||
|
_FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0
|
||||||
|
[HDR]_FaceColor ("Face Color", Color) = (1,1,1,1)
|
||||||
|
_FaceDilate ("Face Dilate", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1)
|
||||||
|
_OutlineTex ("Outline Texture", 2D) = "white" {}
|
||||||
|
_OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0
|
||||||
|
_OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0
|
||||||
|
_OutlineWidth ("Outline Thickness", Range(0, 1)) = 0
|
||||||
|
_OutlineSoftness ("Outline Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_Bevel ("Bevel", Range(0,1)) = 0.5
|
||||||
|
_BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0
|
||||||
|
_BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0
|
||||||
|
_BevelClamp ("Bevel Clamp", Range(0,1)) = 0
|
||||||
|
_BevelRoundness ("Bevel Roundness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_LightAngle ("Light Angle", Range(0.0, 6.2831853)) = 3.1416
|
||||||
|
[HDR]_SpecularColor ("Specular", Color) = (1,1,1,1)
|
||||||
|
_SpecularPower ("Specular", Range(0,4)) = 2.0
|
||||||
|
_Reflectivity ("Reflectivity", Range(5.0,15.0)) = 10
|
||||||
|
_Diffuse ("Diffuse", Range(0,1)) = 0.5
|
||||||
|
_Ambient ("Ambient", Range(1,0)) = 0.5
|
||||||
|
|
||||||
|
_BumpMap ("Normal map", 2D) = "bump" {}
|
||||||
|
_BumpOutline ("Bump Outline", Range(0,1)) = 0
|
||||||
|
_BumpFace ("Bump Face", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_ReflectFaceColor ("Reflection Color", Color) = (0,0,0,1)
|
||||||
|
_ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1)
|
||||||
|
_Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ }
|
||||||
|
_EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0)
|
||||||
|
|
||||||
|
|
||||||
|
[HDR]_UnderlayColor ("Border Color", Color) = (0,0,0, 0.5)
|
||||||
|
_UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0
|
||||||
|
_UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0
|
||||||
|
_UnderlayDilate ("Border Dilate", Range(-1,1)) = 0
|
||||||
|
_UnderlaySoftness ("Border Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_GlowColor ("Color", Color) = (0, 1, 0, 0.5)
|
||||||
|
_GlowOffset ("Offset", Range(-1,1)) = 0
|
||||||
|
_GlowInner ("Inner", Range(0,1)) = 0.05
|
||||||
|
_GlowOuter ("Outer", Range(0,1)) = 0.05
|
||||||
|
_GlowPower ("Falloff", Range(1, 0)) = 0.75
|
||||||
|
|
||||||
|
_WeightNormal ("Weight Normal", float) = 0
|
||||||
|
_WeightBold ("Weight Bold", float) = 0.5
|
||||||
|
|
||||||
|
_ShaderFlags ("Flags", float) = 0
|
||||||
|
_ScaleRatioA ("Scale RatioA", float) = 1
|
||||||
|
_ScaleRatioB ("Scale RatioB", float) = 1
|
||||||
|
_ScaleRatioC ("Scale RatioC", float) = 1
|
||||||
|
|
||||||
|
_MainTex ("Font Atlas", 2D) = "white" {}
|
||||||
|
_TextureWidth ("Texture Width", float) = 512
|
||||||
|
_TextureHeight ("Texture Height", float) = 512
|
||||||
|
_GradientScale ("Gradient Scale", float) = 5.0
|
||||||
|
_ScaleX ("Scale X", float) = 1.0
|
||||||
|
_ScaleY ("Scale Y", float) = 1.0
|
||||||
|
_PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875
|
||||||
|
_Sharpness ("Sharpness", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
_VertexOffsetX ("Vertex OffsetX", float) = 0
|
||||||
|
_VertexOffsetY ("Vertex OffsetY", float) = 0
|
||||||
|
|
||||||
|
_MaskCoord ("Mask Coordinates", vector) = (0, 0, 32767, 32767)
|
||||||
|
_ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
|
||||||
|
_MaskSoftnessX ("Mask SoftnessX", float) = 0
|
||||||
|
_MaskSoftnessY ("Mask SoftnessY", float) = 0
|
||||||
|
|
||||||
|
_StencilComp ("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil ("Stencil ID", Float) = 0
|
||||||
|
_StencilOp ("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask ("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask ("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_CullMode ("Cull Mode", Float) = 0
|
||||||
|
_ColorMask ("Color Mask", Float) = 15
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue" = "Transparent"
|
||||||
|
"IgnoreProjector" = "True"
|
||||||
|
"RenderType" = "Transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref[_Stencil]
|
||||||
|
Comp[_StencilComp]
|
||||||
|
Pass[_StencilOp]
|
||||||
|
ReadMask[_StencilReadMask]
|
||||||
|
WriteMask[_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
Cull[_CullMode]
|
||||||
|
ZWrite Off
|
||||||
|
Lighting Off
|
||||||
|
Fog
|
||||||
|
{
|
||||||
|
Mode Off
|
||||||
|
}
|
||||||
|
ZTest[unity_GUIZTestMode]
|
||||||
|
Blend One OneMinusSrcAlpha
|
||||||
|
ColorMask[_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma target 3.0
|
||||||
|
#pragma vertex VertShader
|
||||||
|
#pragma fragment PixShader
|
||||||
|
#pragma shader_feature __ BEVEL_ON
|
||||||
|
#pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
|
||||||
|
#pragma shader_feature __ GLOW_ON
|
||||||
|
#pragma shader_feature __ FORCE_LINEAR
|
||||||
|
|
||||||
|
#pragma multi_compile __ UNITY_UI_CLIP_RECT
|
||||||
|
#pragma multi_compile __ UNITY_UI_ALPHACLIP
|
||||||
|
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
#include "UnityUI.cginc"
|
||||||
|
#include "TMPro_Properties.cginc"
|
||||||
|
#include "TMPro.cginc"
|
||||||
|
|
||||||
|
struct vertex_t
|
||||||
|
{
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
float4 position : POSITION;
|
||||||
|
float3 normal : NORMAL;
|
||||||
|
float4 color : COLOR;
|
||||||
|
float2 texcoord0 : TEXCOORD0;
|
||||||
|
float2 texcoord1 : TEXCOORD1;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct pixel_t
|
||||||
|
{
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
UNITY_VERTEX_OUTPUT_STEREO
|
||||||
|
float4 position : SV_POSITION;
|
||||||
|
float4 color : COLOR;
|
||||||
|
float2 atlas : TEXCOORD0;
|
||||||
|
float weight : TEXCOORD1;
|
||||||
|
float2 mask : TEXCOORD2; // Position in object space(xy)
|
||||||
|
float3 viewDir : TEXCOORD3;
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
float2 texcoord2 : TEXCOORD4;
|
||||||
|
float4 underlayColor : COLOR1;
|
||||||
|
#endif
|
||||||
|
float4 textures : TEXCOORD5;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Used by Unity internally to handle Texture Tiling and Offset.
|
||||||
|
float4 _FaceTex_ST;
|
||||||
|
float4 _OutlineTex_ST;
|
||||||
|
|
||||||
|
float4 SRGBToLinear(float4 rgba)
|
||||||
|
{
|
||||||
|
return float4(
|
||||||
|
lerp(rgba.rgb / 12.92f, pow((rgba.rgb + 0.055f) / 1.055f, 2.4f), step(0.04045f, rgba.rgb)), rgba.a);
|
||||||
|
}
|
||||||
|
|
||||||
|
pixel_t VertShader(vertex_t input)
|
||||||
|
{
|
||||||
|
pixel_t output;
|
||||||
|
|
||||||
|
UNITY_INITIALIZE_OUTPUT(pixel_t, output);
|
||||||
|
UNITY_SETUP_INSTANCE_ID(input);
|
||||||
|
UNITY_TRANSFER_INSTANCE_ID(input, output);
|
||||||
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
|
||||||
|
|
||||||
|
float bold = step(input.texcoord1.y, 0);
|
||||||
|
|
||||||
|
float4 vert = input.position;
|
||||||
|
vert.x += _VertexOffsetX;
|
||||||
|
vert.y += _VertexOffsetY;
|
||||||
|
|
||||||
|
float4 vPosition = UnityObjectToClipPos(vert);
|
||||||
|
|
||||||
|
float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
|
||||||
|
weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
float4 underlayColor = _UnderlayColor;
|
||||||
|
underlayColor.rgb *= underlayColor.a;
|
||||||
|
|
||||||
|
float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
|
||||||
|
float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
|
||||||
|
float2 bOffset = float2(x, y);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Generate UV for the Masking Texture
|
||||||
|
float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
|
||||||
|
|
||||||
|
// Support for texture tiling and offset
|
||||||
|
float2 textureUV = UnpackUV(input.texcoord1.x);
|
||||||
|
float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex);
|
||||||
|
float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex);
|
||||||
|
|
||||||
|
float4 color = input.color;
|
||||||
|
#if (FORCE_LINEAR && !UNITY_COLORSPACE_GAMMA)
|
||||||
|
color = SRGBToLinear(input.color);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
output.position = vPosition;
|
||||||
|
output.color = color;
|
||||||
|
output.atlas = input.texcoord0;
|
||||||
|
output.weight = weight;
|
||||||
|
output.mask = half2(vert.xy * 2 - clampedRect.xy - clampedRect.zw);
|
||||||
|
output.viewDir = mul((float3x3)_EnvMatrix,
|
||||||
|
_WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz);
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
output.texcoord2 = input.texcoord0 + bOffset;
|
||||||
|
output.underlayColor = underlayColor;
|
||||||
|
#endif
|
||||||
|
output.textures = float4(faceUV, outlineUV);
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fixed4 PixShader(pixel_t input) : SV_Target
|
||||||
|
{
|
||||||
|
UNITY_SETUP_INSTANCE_ID(input);
|
||||||
|
|
||||||
|
float c = tex2D(_MainTex, input.atlas).a;
|
||||||
|
|
||||||
|
float2 pixelSize = float2(ddx(input.atlas.y), ddy(input.atlas.y));
|
||||||
|
pixelSize *= _TextureWidth * .75;
|
||||||
|
float scale = rsqrt(dot(pixelSize, pixelSize)) * _GradientScale * (_Sharpness + 1);
|
||||||
|
|
||||||
|
float weight = input.weight;
|
||||||
|
float bias = (.5 - weight) + (.5 / scale);
|
||||||
|
float sd = (bias - c) * scale;
|
||||||
|
|
||||||
|
float outline = (_OutlineWidth * _ScaleRatioA) * scale;
|
||||||
|
float softness = (_OutlineSoftness * _ScaleRatioA) * scale;
|
||||||
|
|
||||||
|
half4 faceColor = _FaceColor;
|
||||||
|
half4 outlineColor = _OutlineColor;
|
||||||
|
|
||||||
|
faceColor.rgb *= input.color.rgb;
|
||||||
|
|
||||||
|
faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y);
|
||||||
|
outlineColor *= tex2D(_OutlineTex,
|
||||||
|
input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y);
|
||||||
|
|
||||||
|
faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
|
||||||
|
|
||||||
|
#if BEVEL_ON
|
||||||
|
float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0);
|
||||||
|
float3 n = GetSurfaceNormal(input.atlas, weight, dxy);
|
||||||
|
|
||||||
|
float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz;
|
||||||
|
bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5));
|
||||||
|
n = normalize(n - bump);
|
||||||
|
|
||||||
|
float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0));
|
||||||
|
|
||||||
|
float3 col = GetSpecular(n, light);
|
||||||
|
faceColor.rgb += col * faceColor.a;
|
||||||
|
faceColor.rgb *= 1 - (dot(n, light) * _Diffuse);
|
||||||
|
faceColor.rgb *= lerp(_Ambient, 1, n.z * n.z);
|
||||||
|
|
||||||
|
fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n));
|
||||||
|
faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
float bScale = scale;
|
||||||
|
bScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * bScale);
|
||||||
|
float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_ON
|
||||||
|
float d = tex2D(_MainTex, input.texcoord2.xy).a * bScale;
|
||||||
|
faceColor += input.underlayColor * saturate(d - bBias) * (1 - faceColor.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_INNER
|
||||||
|
float d = tex2D(_MainTex, input.texcoord2.xy).a * bScale;
|
||||||
|
faceColor += input.underlayColor * (1 - saturate(d - bBias)) * saturate(1 - sd) * (1 - faceColor.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if GLOW_ON
|
||||||
|
float4 glowColor = GetGlowColor(sd, scale);
|
||||||
|
faceColor.rgb += glowColor.rgb * glowColor.a;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Alternative implementation to UnityGet2DClipping with support for softness.
|
||||||
|
#if UNITY_UI_CLIP_RECT
|
||||||
|
float2 maskZW = 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + (1 / scale));
|
||||||
|
half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * maskZW);
|
||||||
|
faceColor *= m.x * m.y;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNITY_UI_ALPHACLIP
|
||||||
|
clip(faceColor.a - 0.001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return faceColor * input.color.a;
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Fallback "TextMeshPro/Mobile/Distance Field"
|
||||||
|
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 14eb328de4b8eb245bb7cea29e4ac00b
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,258 @@
|
||||||
|
// Simplified SDF shader:
|
||||||
|
// - No Shading Option (bevel / bump / env map)
|
||||||
|
// - No Glow Option
|
||||||
|
// - Softness is applied on both side of the outline
|
||||||
|
|
||||||
|
Shader "TextMeshPro/Mobile/Distance Field - Masking"
|
||||||
|
{
|
||||||
|
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
[HDR]_FaceColor ("Face Color", Color) = (1,1,1,1)
|
||||||
|
_FaceDilate ("Face Dilate", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1)
|
||||||
|
_OutlineWidth ("Outline Thickness", Range(0,1)) = 0
|
||||||
|
_OutlineSoftness ("Outline Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_UnderlayColor ("Border Color", Color) = (0,0,0,.5)
|
||||||
|
_UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0
|
||||||
|
_UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0
|
||||||
|
_UnderlayDilate ("Border Dilate", Range(-1,1)) = 0
|
||||||
|
_UnderlaySoftness ("Border Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_WeightNormal ("Weight Normal", float) = 0
|
||||||
|
_WeightBold ("Weight Bold", float) = .5
|
||||||
|
|
||||||
|
_ShaderFlags ("Flags", float) = 0
|
||||||
|
_ScaleRatioA ("Scale RatioA", float) = 1
|
||||||
|
_ScaleRatioB ("Scale RatioB", float) = 1
|
||||||
|
_ScaleRatioC ("Scale RatioC", float) = 1
|
||||||
|
|
||||||
|
_MainTex ("Font Atlas", 2D) = "white" {}
|
||||||
|
_TextureWidth ("Texture Width", float) = 512
|
||||||
|
_TextureHeight ("Texture Height", float) = 512
|
||||||
|
_GradientScale ("Gradient Scale", float) = 5
|
||||||
|
_ScaleX ("Scale X", float) = 1
|
||||||
|
_ScaleY ("Scale Y", float) = 1
|
||||||
|
_PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875
|
||||||
|
_Sharpness ("Sharpness", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
_VertexOffsetX ("Vertex OffsetX", float) = 0
|
||||||
|
_VertexOffsetY ("Vertex OffsetY", float) = 0
|
||||||
|
|
||||||
|
_ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
|
||||||
|
_MaskSoftnessX ("Mask SoftnessX", float) = 0
|
||||||
|
_MaskSoftnessY ("Mask SoftnessY", float) = 0
|
||||||
|
_MaskTex ("Mask Texture", 2D) = "white" {}
|
||||||
|
_MaskInverse ("Inverse", float) = 0
|
||||||
|
_MaskEdgeColor ("Edge Color", Color) = (1,1,1,1)
|
||||||
|
_MaskEdgeSoftness ("Edge Softness", Range(0, 1)) = 0.01
|
||||||
|
_MaskWipeControl ("Wipe Position", Range(0, 1)) = 0.5
|
||||||
|
|
||||||
|
_StencilComp ("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil ("Stencil ID", Float) = 0
|
||||||
|
_StencilOp ("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask ("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask ("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_CullMode ("Cull Mode", Float) = 0
|
||||||
|
_ColorMask ("Color Mask", Float) = 15
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Transparent"
|
||||||
|
"IgnoreProjector"="True"
|
||||||
|
"RenderType"="Transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref [_Stencil]
|
||||||
|
Comp [_StencilComp]
|
||||||
|
Pass [_StencilOp]
|
||||||
|
ReadMask [_StencilReadMask]
|
||||||
|
WriteMask [_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
Cull [_CullMode]
|
||||||
|
ZWrite Off
|
||||||
|
Lighting Off
|
||||||
|
Fog
|
||||||
|
{
|
||||||
|
Mode Off
|
||||||
|
}
|
||||||
|
ZTest [unity_GUIZTestMode]
|
||||||
|
Blend One OneMinusSrcAlpha
|
||||||
|
ColorMask [_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma vertex VertShader
|
||||||
|
#pragma fragment PixShader
|
||||||
|
#pragma shader_feature __ OUTLINE_ON
|
||||||
|
#pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
|
||||||
|
|
||||||
|
#pragma multi_compile __ UNITY_UI_CLIP_RECT
|
||||||
|
#pragma multi_compile __ UNITY_UI_ALPHACLIP
|
||||||
|
|
||||||
|
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
#include "UnityUI.cginc"
|
||||||
|
#include "TMPro_Properties.cginc"
|
||||||
|
|
||||||
|
struct vertex_t
|
||||||
|
{
|
||||||
|
float4 vertex : POSITION;
|
||||||
|
float3 normal : NORMAL;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord0 : TEXCOORD0;
|
||||||
|
float2 texcoord1 : TEXCOORD1;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct pixel_t
|
||||||
|
{
|
||||||
|
float4 vertex : SV_POSITION;
|
||||||
|
fixed4 faceColor : COLOR;
|
||||||
|
fixed4 outlineColor : COLOR1;
|
||||||
|
float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV
|
||||||
|
half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w)
|
||||||
|
half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw)
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved
|
||||||
|
half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y)
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
float _MaskWipeControl;
|
||||||
|
float _MaskEdgeSoftness;
|
||||||
|
fixed4 _MaskEdgeColor;
|
||||||
|
bool _MaskInverse;
|
||||||
|
|
||||||
|
pixel_t VertShader(vertex_t input)
|
||||||
|
{
|
||||||
|
float bold = step(input.texcoord1.y, 0);
|
||||||
|
|
||||||
|
float4 vert = input.vertex;
|
||||||
|
vert.x += _VertexOffsetX;
|
||||||
|
vert.y += _VertexOffsetY;
|
||||||
|
float4 vPosition = UnityObjectToClipPos(vert);
|
||||||
|
|
||||||
|
float2 pixelSize = vPosition.w;
|
||||||
|
pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
|
||||||
|
|
||||||
|
float scale = rsqrt(dot(pixelSize, pixelSize));
|
||||||
|
scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1);
|
||||||
|
if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale,
|
||||||
|
abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
|
||||||
|
|
||||||
|
float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
|
||||||
|
weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
|
||||||
|
|
||||||
|
float layerScale = scale;
|
||||||
|
|
||||||
|
scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale);
|
||||||
|
float bias = (0.5 - weight) * scale - 0.5;
|
||||||
|
float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale;
|
||||||
|
|
||||||
|
float opacity = input.color.a;
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
opacity = 1.0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor;
|
||||||
|
faceColor.rgb *= faceColor.a;
|
||||||
|
|
||||||
|
fixed4 outlineColor = _OutlineColor;
|
||||||
|
outlineColor.a *= opacity;
|
||||||
|
outlineColor.rgb *= outlineColor.a;
|
||||||
|
outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2))));
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
|
||||||
|
layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale);
|
||||||
|
float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale);
|
||||||
|
|
||||||
|
float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
|
||||||
|
float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
|
||||||
|
float2 layerOffset = float2(x, y);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Generate UV for the Masking Texture
|
||||||
|
float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
|
||||||
|
float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
|
||||||
|
|
||||||
|
// Structure for pixel shader
|
||||||
|
pixel_t output = {
|
||||||
|
vPosition,
|
||||||
|
faceColor,
|
||||||
|
outlineColor,
|
||||||
|
float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y),
|
||||||
|
half4(scale, bias - outline, bias + outline, bias),
|
||||||
|
half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw,
|
||||||
|
0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)),
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
float4(input.texcoord0 + layerOffset, input.color.a, 0),
|
||||||
|
half2(layerScale, layerBias),
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// PIXEL SHADER
|
||||||
|
fixed4 PixShader(pixel_t input) : SV_Target
|
||||||
|
{
|
||||||
|
half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x;
|
||||||
|
half4 c = input.faceColor * saturate(d - input.param.w);
|
||||||
|
|
||||||
|
#ifdef OUTLINE_ON
|
||||||
|
c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z));
|
||||||
|
c *= saturate(d - input.param.y);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_ON
|
||||||
|
d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
|
||||||
|
c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_INNER
|
||||||
|
half sd = saturate(d - input.param.z);
|
||||||
|
d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
|
||||||
|
c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Alternative implementation to UnityGet2DClipping with support for softness.
|
||||||
|
//#if UNITY_UI_CLIP_RECT
|
||||||
|
half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
|
||||||
|
c *= m.x * m.y;
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
float a = abs(_MaskInverse - tex2D(_MaskTex, input.texcoord0.zw).a);
|
||||||
|
float t = a + (1 - _MaskWipeControl) * _MaskEdgeSoftness - _MaskWipeControl;
|
||||||
|
a = saturate(t / _MaskEdgeSoftness);
|
||||||
|
c.rgb = lerp(_MaskEdgeColor.rgb * c.a, c.rgb, a);
|
||||||
|
c *= a;
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
c *= input.texcoord1.z;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNITY_UI_ALPHACLIP
|
||||||
|
clip(c.a - 0.001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bc1ede39bf3643ee8e493720e4259791
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,251 @@
|
||||||
|
// Simplified SDF shader:
|
||||||
|
// - No Shading Option (bevel / bump / env map)
|
||||||
|
// - No Glow Option
|
||||||
|
// - Softness is applied on both side of the outline
|
||||||
|
|
||||||
|
Shader "TextMeshPro/Mobile/Distance Field Overlay"
|
||||||
|
{
|
||||||
|
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
[HDR]_FaceColor ("Face Color", Color) = (1,1,1,1)
|
||||||
|
_FaceDilate ("Face Dilate", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1)
|
||||||
|
_OutlineWidth ("Outline Thickness", Range(0,1)) = 0
|
||||||
|
_OutlineSoftness ("Outline Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_UnderlayColor ("Border Color", Color) = (0,0,0,.5)
|
||||||
|
_UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0
|
||||||
|
_UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0
|
||||||
|
_UnderlayDilate ("Border Dilate", Range(-1,1)) = 0
|
||||||
|
_UnderlaySoftness ("Border Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_WeightNormal ("Weight Normal", float) = 0
|
||||||
|
_WeightBold ("Weight Bold", float) = .5
|
||||||
|
|
||||||
|
_ShaderFlags ("Flags", float) = 0
|
||||||
|
_ScaleRatioA ("Scale RatioA", float) = 1
|
||||||
|
_ScaleRatioB ("Scale RatioB", float) = 1
|
||||||
|
_ScaleRatioC ("Scale RatioC", float) = 1
|
||||||
|
|
||||||
|
_MainTex ("Font Atlas", 2D) = "white" {}
|
||||||
|
_TextureWidth ("Texture Width", float) = 512
|
||||||
|
_TextureHeight ("Texture Height", float) = 512
|
||||||
|
_GradientScale ("Gradient Scale", float) = 5
|
||||||
|
_ScaleX ("Scale X", float) = 1
|
||||||
|
_ScaleY ("Scale Y", float) = 1
|
||||||
|
_PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875
|
||||||
|
_Sharpness ("Sharpness", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
_VertexOffsetX ("Vertex OffsetX", float) = 0
|
||||||
|
_VertexOffsetY ("Vertex OffsetY", float) = 0
|
||||||
|
|
||||||
|
_ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
|
||||||
|
_MaskSoftnessX ("Mask SoftnessX", float) = 0
|
||||||
|
_MaskSoftnessY ("Mask SoftnessY", float) = 0
|
||||||
|
|
||||||
|
_StencilComp ("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil ("Stencil ID", Float) = 0
|
||||||
|
_StencilOp ("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask ("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask ("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_CullMode ("Cull Mode", Float) = 0
|
||||||
|
_ColorMask ("Color Mask", Float) = 15
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Overlay"
|
||||||
|
"IgnoreProjector"="True"
|
||||||
|
"RenderType"="Transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref [_Stencil]
|
||||||
|
Comp [_StencilComp]
|
||||||
|
Pass [_StencilOp]
|
||||||
|
ReadMask [_StencilReadMask]
|
||||||
|
WriteMask [_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
Cull [_CullMode]
|
||||||
|
ZWrite Off
|
||||||
|
Lighting Off
|
||||||
|
Fog
|
||||||
|
{
|
||||||
|
Mode Off
|
||||||
|
}
|
||||||
|
ZTest Always
|
||||||
|
Blend One OneMinusSrcAlpha
|
||||||
|
ColorMask [_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma vertex VertShader
|
||||||
|
#pragma fragment PixShader
|
||||||
|
#pragma shader_feature __ OUTLINE_ON
|
||||||
|
#pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
|
||||||
|
|
||||||
|
#pragma multi_compile __ UNITY_UI_CLIP_RECT
|
||||||
|
#pragma multi_compile __ UNITY_UI_ALPHACLIP
|
||||||
|
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
#include "UnityUI.cginc"
|
||||||
|
#include "TMPro_Properties.cginc"
|
||||||
|
|
||||||
|
struct vertex_t
|
||||||
|
{
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
float4 vertex : POSITION;
|
||||||
|
float3 normal : NORMAL;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord0 : TEXCOORD0;
|
||||||
|
float2 texcoord1 : TEXCOORD1;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct pixel_t
|
||||||
|
{
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
UNITY_VERTEX_OUTPUT_STEREO
|
||||||
|
float4 vertex : SV_POSITION;
|
||||||
|
fixed4 faceColor : COLOR;
|
||||||
|
fixed4 outlineColor : COLOR1;
|
||||||
|
float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV
|
||||||
|
half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w)
|
||||||
|
half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw)
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved
|
||||||
|
half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y)
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
pixel_t VertShader(vertex_t input)
|
||||||
|
{
|
||||||
|
pixel_t output;
|
||||||
|
|
||||||
|
UNITY_INITIALIZE_OUTPUT(pixel_t, output);
|
||||||
|
UNITY_SETUP_INSTANCE_ID(input);
|
||||||
|
UNITY_TRANSFER_INSTANCE_ID(input, output);
|
||||||
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
|
||||||
|
|
||||||
|
float bold = step(input.texcoord1.y, 0);
|
||||||
|
|
||||||
|
float4 vert = input.vertex;
|
||||||
|
vert.x += _VertexOffsetX;
|
||||||
|
vert.y += _VertexOffsetY;
|
||||||
|
float4 vPosition = UnityObjectToClipPos(vert);
|
||||||
|
|
||||||
|
float2 pixelSize = vPosition.w;
|
||||||
|
pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
|
||||||
|
|
||||||
|
float scale = rsqrt(dot(pixelSize, pixelSize));
|
||||||
|
scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1);
|
||||||
|
if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale,
|
||||||
|
abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
|
||||||
|
|
||||||
|
float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
|
||||||
|
weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
|
||||||
|
|
||||||
|
float layerScale = scale;
|
||||||
|
|
||||||
|
scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale);
|
||||||
|
float bias = (0.5 - weight) * scale - 0.5;
|
||||||
|
float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale;
|
||||||
|
|
||||||
|
float opacity = input.color.a;
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
opacity = 1.0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor;
|
||||||
|
faceColor.rgb *= faceColor.a;
|
||||||
|
|
||||||
|
fixed4 outlineColor = _OutlineColor;
|
||||||
|
outlineColor.a *= opacity;
|
||||||
|
outlineColor.rgb *= outlineColor.a;
|
||||||
|
outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2))));
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale);
|
||||||
|
float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale);
|
||||||
|
|
||||||
|
float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
|
||||||
|
float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
|
||||||
|
float2 layerOffset = float2(x, y);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Generate UV for the Masking Texture
|
||||||
|
float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
|
||||||
|
float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
|
||||||
|
|
||||||
|
// Populate structure for pixel shader
|
||||||
|
output.vertex = vPosition;
|
||||||
|
output.faceColor = faceColor;
|
||||||
|
output.outlineColor = outlineColor;
|
||||||
|
output.texcoord0 = float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y);
|
||||||
|
output.param = half4(scale, bias - outline, bias + outline, bias);
|
||||||
|
output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw,
|
||||||
|
0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
output.texcoord1 = float4(input.texcoord0 + layerOffset, input.color.a, 0);
|
||||||
|
output.underlayParam = half2(layerScale, layerBias);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// PIXEL SHADER
|
||||||
|
fixed4 PixShader(pixel_t input) : SV_Target
|
||||||
|
{
|
||||||
|
UNITY_SETUP_INSTANCE_ID(input);
|
||||||
|
|
||||||
|
half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x;
|
||||||
|
half4 c = input.faceColor * saturate(d - input.param.w);
|
||||||
|
|
||||||
|
#ifdef OUTLINE_ON
|
||||||
|
c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z));
|
||||||
|
c *= saturate(d - input.param.y);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_ON
|
||||||
|
d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
|
||||||
|
c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_INNER
|
||||||
|
half sd = saturate(d - input.param.z);
|
||||||
|
d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
|
||||||
|
c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Alternative implementation to UnityGet2DClipping with support for softness.
|
||||||
|
#if UNITY_UI_CLIP_RECT
|
||||||
|
half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
|
||||||
|
c *= m.x * m.y;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
c *= input.texcoord1.z;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNITY_UI_ALPHACLIP
|
||||||
|
clip(c.a - 0.001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a02a7d8c237544f1962732b55a9aebf1
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,113 @@
|
||||||
|
// Simplified SDF shader:
|
||||||
|
// - No Shading Option (bevel / bump / env map)
|
||||||
|
// - No Glow Option
|
||||||
|
// - Softness is applied on both side of the outline
|
||||||
|
|
||||||
|
Shader "TextMeshPro/Mobile/Distance Field SSD"
|
||||||
|
{
|
||||||
|
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
[HDR]_FaceColor ("Face Color", Color) = (1,1,1,1)
|
||||||
|
_FaceDilate ("Face Dilate", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1)
|
||||||
|
_OutlineWidth ("Outline Thickness", Range(0,1)) = 0
|
||||||
|
_OutlineSoftness ("Outline Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_UnderlayColor ("Border Color", Color) = (0,0,0,.5)
|
||||||
|
_UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0
|
||||||
|
_UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0
|
||||||
|
_UnderlayDilate ("Border Dilate", Range(-1,1)) = 0
|
||||||
|
_UnderlaySoftness ("Border Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_WeightNormal ("Weight Normal", float) = 0
|
||||||
|
_WeightBold ("Weight Bold", float) = .5
|
||||||
|
|
||||||
|
_ShaderFlags ("Flags", float) = 0
|
||||||
|
_ScaleRatioA ("Scale RatioA", float) = 1
|
||||||
|
_ScaleRatioB ("Scale RatioB", float) = 1
|
||||||
|
_ScaleRatioC ("Scale RatioC", float) = 1
|
||||||
|
|
||||||
|
_MainTex ("Font Atlas", 2D) = "white" {}
|
||||||
|
_TextureWidth ("Texture Width", float) = 512
|
||||||
|
_TextureHeight ("Texture Height", float) = 512
|
||||||
|
_GradientScale ("Gradient Scale", float) = 5
|
||||||
|
_ScaleX ("Scale X", float) = 1
|
||||||
|
_ScaleY ("Scale Y", float) = 1
|
||||||
|
_PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875
|
||||||
|
_Sharpness ("Sharpness", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
_VertexOffsetX ("Vertex OffsetX", float) = 0
|
||||||
|
_VertexOffsetY ("Vertex OffsetY", float) = 0
|
||||||
|
|
||||||
|
_ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
|
||||||
|
_MaskSoftnessX ("Mask SoftnessX", float) = 0
|
||||||
|
_MaskSoftnessY ("Mask SoftnessY", float) = 0
|
||||||
|
_MaskTex ("Mask Texture", 2D) = "white" {}
|
||||||
|
_MaskInverse ("Inverse", float) = 0
|
||||||
|
_MaskEdgeColor ("Edge Color", Color) = (1,1,1,1)
|
||||||
|
_MaskEdgeSoftness ("Edge Softness", Range(0, 1)) = 0.01
|
||||||
|
_MaskWipeControl ("Wipe Position", Range(0, 1)) = 0.5
|
||||||
|
|
||||||
|
_StencilComp ("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil ("Stencil ID", Float) = 0
|
||||||
|
_StencilOp ("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask ("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask ("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_CullMode ("Cull Mode", Float) = 0
|
||||||
|
_ColorMask ("Color Mask", Float) = 15
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Transparent"
|
||||||
|
"IgnoreProjector"="True"
|
||||||
|
"RenderType"="Transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref [_Stencil]
|
||||||
|
Comp [_StencilComp]
|
||||||
|
Pass [_StencilOp]
|
||||||
|
ReadMask [_StencilReadMask]
|
||||||
|
WriteMask [_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
Cull [_CullMode]
|
||||||
|
ZWrite Off
|
||||||
|
Lighting Off
|
||||||
|
Fog
|
||||||
|
{
|
||||||
|
Mode Off
|
||||||
|
}
|
||||||
|
ZTest [unity_GUIZTestMode]
|
||||||
|
Blend One OneMinusSrcAlpha
|
||||||
|
ColorMask [_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma vertex VertShader
|
||||||
|
#pragma fragment PixShader
|
||||||
|
#pragma shader_feature __ OUTLINE_ON
|
||||||
|
#pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
|
||||||
|
|
||||||
|
#pragma multi_compile __ UNITY_UI_CLIP_RECT
|
||||||
|
#pragma multi_compile __ UNITY_UI_ALPHACLIP
|
||||||
|
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
#include "UnityUI.cginc"
|
||||||
|
#include "TMPro_Properties.cginc"
|
||||||
|
|
||||||
|
#include "TMPro_Mobile.cginc"
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c8d12adcee749c344b8117cf7c7eb912
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,251 @@
|
||||||
|
// Simplified SDF shader:
|
||||||
|
// - No Shading Option (bevel / bump / env map)
|
||||||
|
// - No Glow Option
|
||||||
|
// - Softness is applied on both side of the outline
|
||||||
|
|
||||||
|
Shader "TextMeshPro/Mobile/Distance Field"
|
||||||
|
{
|
||||||
|
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
[HDR]_FaceColor ("Face Color", Color) = (1,1,1,1)
|
||||||
|
_FaceDilate ("Face Dilate", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1)
|
||||||
|
_OutlineWidth ("Outline Thickness", Range(0,1)) = 0
|
||||||
|
_OutlineSoftness ("Outline Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_UnderlayColor ("Border Color", Color) = (0,0,0,.5)
|
||||||
|
_UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0
|
||||||
|
_UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0
|
||||||
|
_UnderlayDilate ("Border Dilate", Range(-1,1)) = 0
|
||||||
|
_UnderlaySoftness ("Border Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_WeightNormal ("Weight Normal", float) = 0
|
||||||
|
_WeightBold ("Weight Bold", float) = .5
|
||||||
|
|
||||||
|
_ShaderFlags ("Flags", float) = 0
|
||||||
|
_ScaleRatioA ("Scale RatioA", float) = 1
|
||||||
|
_ScaleRatioB ("Scale RatioB", float) = 1
|
||||||
|
_ScaleRatioC ("Scale RatioC", float) = 1
|
||||||
|
|
||||||
|
_MainTex ("Font Atlas", 2D) = "white" {}
|
||||||
|
_TextureWidth ("Texture Width", float) = 512
|
||||||
|
_TextureHeight ("Texture Height", float) = 512
|
||||||
|
_GradientScale ("Gradient Scale", float) = 5
|
||||||
|
_ScaleX ("Scale X", float) = 1
|
||||||
|
_ScaleY ("Scale Y", float) = 1
|
||||||
|
_PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875
|
||||||
|
_Sharpness ("Sharpness", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
_VertexOffsetX ("Vertex OffsetX", float) = 0
|
||||||
|
_VertexOffsetY ("Vertex OffsetY", float) = 0
|
||||||
|
|
||||||
|
_ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
|
||||||
|
_MaskSoftnessX ("Mask SoftnessX", float) = 0
|
||||||
|
_MaskSoftnessY ("Mask SoftnessY", float) = 0
|
||||||
|
|
||||||
|
_StencilComp ("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil ("Stencil ID", Float) = 0
|
||||||
|
_StencilOp ("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask ("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask ("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_CullMode ("Cull Mode", Float) = 0
|
||||||
|
_ColorMask ("Color Mask", Float) = 15
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Transparent"
|
||||||
|
"IgnoreProjector"="True"
|
||||||
|
"RenderType"="Transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref [_Stencil]
|
||||||
|
Comp [_StencilComp]
|
||||||
|
Pass [_StencilOp]
|
||||||
|
ReadMask [_StencilReadMask]
|
||||||
|
WriteMask [_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
Cull [_CullMode]
|
||||||
|
ZWrite Off
|
||||||
|
Lighting Off
|
||||||
|
Fog
|
||||||
|
{
|
||||||
|
Mode Off
|
||||||
|
}
|
||||||
|
ZTest [unity_GUIZTestMode]
|
||||||
|
Blend One OneMinusSrcAlpha
|
||||||
|
ColorMask [_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma vertex VertShader
|
||||||
|
#pragma fragment PixShader
|
||||||
|
#pragma shader_feature __ OUTLINE_ON
|
||||||
|
#pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
|
||||||
|
|
||||||
|
#pragma multi_compile __ UNITY_UI_CLIP_RECT
|
||||||
|
#pragma multi_compile __ UNITY_UI_ALPHACLIP
|
||||||
|
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
#include "UnityUI.cginc"
|
||||||
|
#include "TMPro_Properties.cginc"
|
||||||
|
|
||||||
|
struct vertex_t
|
||||||
|
{
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
float4 vertex : POSITION;
|
||||||
|
float3 normal : NORMAL;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord0 : TEXCOORD0;
|
||||||
|
float2 texcoord1 : TEXCOORD1;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct pixel_t
|
||||||
|
{
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
UNITY_VERTEX_OUTPUT_STEREO
|
||||||
|
float4 vertex : SV_POSITION;
|
||||||
|
fixed4 faceColor : COLOR;
|
||||||
|
fixed4 outlineColor : COLOR1;
|
||||||
|
float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV
|
||||||
|
half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w)
|
||||||
|
half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw)
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved
|
||||||
|
half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y)
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
pixel_t VertShader(vertex_t input)
|
||||||
|
{
|
||||||
|
pixel_t output;
|
||||||
|
|
||||||
|
UNITY_INITIALIZE_OUTPUT(pixel_t, output);
|
||||||
|
UNITY_SETUP_INSTANCE_ID(input);
|
||||||
|
UNITY_TRANSFER_INSTANCE_ID(input, output);
|
||||||
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
|
||||||
|
|
||||||
|
float bold = step(input.texcoord1.y, 0);
|
||||||
|
|
||||||
|
float4 vert = input.vertex;
|
||||||
|
vert.x += _VertexOffsetX;
|
||||||
|
vert.y += _VertexOffsetY;
|
||||||
|
float4 vPosition = UnityObjectToClipPos(vert);
|
||||||
|
|
||||||
|
float2 pixelSize = vPosition.w;
|
||||||
|
pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
|
||||||
|
|
||||||
|
float scale = rsqrt(dot(pixelSize, pixelSize));
|
||||||
|
scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1);
|
||||||
|
if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale,
|
||||||
|
abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
|
||||||
|
|
||||||
|
float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
|
||||||
|
weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
|
||||||
|
|
||||||
|
float layerScale = scale;
|
||||||
|
|
||||||
|
scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale);
|
||||||
|
float bias = (0.5 - weight) * scale - 0.5;
|
||||||
|
float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale;
|
||||||
|
|
||||||
|
float opacity = input.color.a;
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
opacity = 1.0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor;
|
||||||
|
faceColor.rgb *= faceColor.a;
|
||||||
|
|
||||||
|
fixed4 outlineColor = _OutlineColor;
|
||||||
|
outlineColor.a *= opacity;
|
||||||
|
outlineColor.rgb *= outlineColor.a;
|
||||||
|
outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2))));
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale);
|
||||||
|
float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale);
|
||||||
|
|
||||||
|
float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
|
||||||
|
float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
|
||||||
|
float2 layerOffset = float2(x, y);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Generate UV for the Masking Texture
|
||||||
|
float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
|
||||||
|
float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
|
||||||
|
|
||||||
|
// Populate structure for pixel shader
|
||||||
|
output.vertex = vPosition;
|
||||||
|
output.faceColor = faceColor;
|
||||||
|
output.outlineColor = outlineColor;
|
||||||
|
output.texcoord0 = float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y);
|
||||||
|
output.param = half4(scale, bias - outline, bias + outline, bias);
|
||||||
|
output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw,
|
||||||
|
0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
output.texcoord1 = float4(input.texcoord0 + layerOffset, input.color.a, 0);
|
||||||
|
output.underlayParam = half2(layerScale, layerBias);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// PIXEL SHADER
|
||||||
|
fixed4 PixShader(pixel_t input) : SV_Target
|
||||||
|
{
|
||||||
|
UNITY_SETUP_INSTANCE_ID(input);
|
||||||
|
|
||||||
|
half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x;
|
||||||
|
half4 c = input.faceColor * saturate(d - input.param.w);
|
||||||
|
|
||||||
|
#ifdef OUTLINE_ON
|
||||||
|
c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z));
|
||||||
|
c *= saturate(d - input.param.y);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_ON
|
||||||
|
d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
|
||||||
|
c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_INNER
|
||||||
|
half sd = saturate(d - input.param.z);
|
||||||
|
d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
|
||||||
|
c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Alternative implementation to UnityGet2DClipping with support for softness.
|
||||||
|
#if UNITY_UI_CLIP_RECT
|
||||||
|
half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
|
||||||
|
c *= m.x * m.y;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
c *= input.texcoord1.z;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNITY_UI_ALPHACLIP
|
||||||
|
clip(c.a - 0.001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fe393ace9b354375a9cb14cdbbc28be4
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,148 @@
|
||||||
|
// Simplified version of the SDF Surface shader :
|
||||||
|
// - No support for Bevel, Bump or envmap
|
||||||
|
// - Diffuse only lighting
|
||||||
|
// - Fully supports only 1 directional light. Other lights can affect it, but it will be per-vertex/SH.
|
||||||
|
|
||||||
|
Shader "TextMeshPro/Mobile/Distance Field (Surface)"
|
||||||
|
{
|
||||||
|
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_FaceTex ("Fill Texture", 2D) = "white" {}
|
||||||
|
[HDR]_FaceColor ("Fill Color", Color) = (1,1,1,1)
|
||||||
|
_FaceDilate ("Face Dilate", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1)
|
||||||
|
_OutlineTex ("Outline Texture", 2D) = "white" {}
|
||||||
|
_OutlineWidth ("Outline Thickness", Range(0, 1)) = 0
|
||||||
|
_OutlineSoftness ("Outline Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_GlowColor ("Color", Color) = (0, 1, 0, 0.5)
|
||||||
|
_GlowOffset ("Offset", Range(-1,1)) = 0
|
||||||
|
_GlowInner ("Inner", Range(0,1)) = 0.05
|
||||||
|
_GlowOuter ("Outer", Range(0,1)) = 0.05
|
||||||
|
_GlowPower ("Falloff", Range(1, 0)) = 0.75
|
||||||
|
|
||||||
|
_WeightNormal ("Weight Normal", float) = 0
|
||||||
|
_WeightBold ("Weight Bold", float) = 0.5
|
||||||
|
|
||||||
|
// Should not be directly exposed to the user
|
||||||
|
_ShaderFlags ("Flags", float) = 0
|
||||||
|
_ScaleRatioA ("Scale RatioA", float) = 1
|
||||||
|
_ScaleRatioB ("Scale RatioB", float) = 1
|
||||||
|
_ScaleRatioC ("Scale RatioC", float) = 1
|
||||||
|
|
||||||
|
_MainTex ("Font Atlas", 2D) = "white" {}
|
||||||
|
_TextureWidth ("Texture Width", float) = 512
|
||||||
|
_TextureHeight ("Texture Height", float) = 512
|
||||||
|
_GradientScale ("Gradient Scale", float) = 5.0
|
||||||
|
_ScaleX ("Scale X", float) = 1.0
|
||||||
|
_ScaleY ("Scale Y", float) = 1.0
|
||||||
|
_PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875
|
||||||
|
_Sharpness ("Sharpness", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
_VertexOffsetX ("Vertex OffsetX", float) = 0
|
||||||
|
_VertexOffsetY ("Vertex OffsetY", float) = 0
|
||||||
|
|
||||||
|
_CullMode ("Cull Mode", Float) = 0
|
||||||
|
//_MaskCoord ("Mask Coords", vector) = (0,0,0,0)
|
||||||
|
//_MaskSoftness ("Mask Softness", float) = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Transparent"
|
||||||
|
"IgnoreProjector"="True"
|
||||||
|
"RenderType"="Transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
LOD 300
|
||||||
|
Cull [_CullMode]
|
||||||
|
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma surface PixShader Lambert alpha:blend vertex:VertShader noforwardadd nolightmap nodirlightmap
|
||||||
|
#pragma target 3.0
|
||||||
|
#pragma shader_feature __ GLOW_ON
|
||||||
|
|
||||||
|
#include "TMPro_Properties.cginc"
|
||||||
|
#include "TMPro.cginc"
|
||||||
|
|
||||||
|
half _FaceShininess;
|
||||||
|
half _OutlineShininess;
|
||||||
|
|
||||||
|
struct Input
|
||||||
|
{
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 uv_MainTex;
|
||||||
|
float2 uv2_FaceTex;
|
||||||
|
float2 uv2_OutlineTex;
|
||||||
|
float2 param; // Weight, Scale
|
||||||
|
float3 viewDirEnv;
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "TMPro_Surface.cginc"
|
||||||
|
ENDCG
|
||||||
|
|
||||||
|
// Pass to render object as a shadow caster
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
Name "Caster"
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"LightMode" = "ShadowCaster"
|
||||||
|
}
|
||||||
|
Offset 1, 1
|
||||||
|
|
||||||
|
Fog
|
||||||
|
{
|
||||||
|
Mode Off
|
||||||
|
}
|
||||||
|
ZWrite On ZTest LEqual Cull Off
|
||||||
|
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma vertex vert
|
||||||
|
#pragma fragment frag
|
||||||
|
#pragma multi_compile_shadowcaster
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
|
||||||
|
struct v2f
|
||||||
|
{
|
||||||
|
V2F_SHADOW_CASTER;
|
||||||
|
float2 uv : TEXCOORD1;
|
||||||
|
float2 uv2 : TEXCOORD3;
|
||||||
|
float alphaClip : TEXCOORD2;
|
||||||
|
};
|
||||||
|
|
||||||
|
uniform float4 _MainTex_ST;
|
||||||
|
uniform float4 _OutlineTex_ST;
|
||||||
|
float _OutlineWidth;
|
||||||
|
float _FaceDilate;
|
||||||
|
float _ScaleRatioA;
|
||||||
|
|
||||||
|
v2f vert(appdata_base v)
|
||||||
|
{
|
||||||
|
v2f o;
|
||||||
|
TRANSFER_SHADOW_CASTER(o)
|
||||||
|
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
|
||||||
|
o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex);
|
||||||
|
o.alphaClip = o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2;
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
|
||||||
|
uniform sampler2D _MainTex;
|
||||||
|
|
||||||
|
float4 frag(v2f i) : COLOR
|
||||||
|
{
|
||||||
|
fixed4 texcol = tex2D(_MainTex, i.uv).a;
|
||||||
|
clip(texcol.a - i.alphaClip);
|
||||||
|
SHADOW_CASTER_FRAGMENT(i)
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 85187c2149c549c5b33f0cdb02836b17
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,169 @@
|
||||||
|
Shader "TextMeshPro/Distance Field (Surface)"
|
||||||
|
{
|
||||||
|
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_FaceTex ("Fill Texture", 2D) = "white" {}
|
||||||
|
_FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0
|
||||||
|
_FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0
|
||||||
|
[HDR]_FaceColor ("Fill Color", Color) = (1,1,1,1)
|
||||||
|
_FaceDilate ("Face Dilate", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1)
|
||||||
|
_OutlineTex ("Outline Texture", 2D) = "white" {}
|
||||||
|
_OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0
|
||||||
|
_OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0
|
||||||
|
_OutlineWidth ("Outline Thickness", Range(0, 1)) = 0
|
||||||
|
_OutlineSoftness ("Outline Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_Bevel ("Bevel", Range(0,1)) = 0.5
|
||||||
|
_BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0
|
||||||
|
_BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0
|
||||||
|
_BevelClamp ("Bevel Clamp", Range(0,1)) = 0
|
||||||
|
_BevelRoundness ("Bevel Roundness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_BumpMap ("Normalmap", 2D) = "bump" {}
|
||||||
|
_BumpOutline ("Bump Outline", Range(0,1)) = 0.5
|
||||||
|
_BumpFace ("Bump Face", Range(0,1)) = 0.5
|
||||||
|
|
||||||
|
_ReflectFaceColor ("Face Color", Color) = (0,0,0,1)
|
||||||
|
_ReflectOutlineColor ("Outline Color", Color) = (0,0,0,1)
|
||||||
|
_Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ }
|
||||||
|
_EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0)
|
||||||
|
[HDR]_SpecColor ("Specular Color", Color) = (0,0,0,1)
|
||||||
|
|
||||||
|
_FaceShininess ("Face Shininess", Range(0,1)) = 0
|
||||||
|
_OutlineShininess ("Outline Shininess", Range(0,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_GlowColor ("Color", Color) = (0, 1, 0, 0.5)
|
||||||
|
_GlowOffset ("Offset", Range(-1,1)) = 0
|
||||||
|
_GlowInner ("Inner", Range(0,1)) = 0.05
|
||||||
|
_GlowOuter ("Outer", Range(0,1)) = 0.05
|
||||||
|
_GlowPower ("Falloff", Range(1, 0)) = 0.75
|
||||||
|
|
||||||
|
_WeightNormal ("Weight Normal", float) = 0
|
||||||
|
_WeightBold ("Weight Bold", float) = 0.5
|
||||||
|
|
||||||
|
// Should not be directly exposed to the user
|
||||||
|
_ShaderFlags ("Flags", float) = 0
|
||||||
|
_ScaleRatioA ("Scale RatioA", float) = 1
|
||||||
|
_ScaleRatioB ("Scale RatioB", float) = 1
|
||||||
|
_ScaleRatioC ("Scale RatioC", float) = 1
|
||||||
|
|
||||||
|
_MainTex ("Font Atlas", 2D) = "white" {}
|
||||||
|
_TextureWidth ("Texture Width", float) = 512
|
||||||
|
_TextureHeight ("Texture Height", float) = 512
|
||||||
|
_GradientScale ("Gradient Scale", float) = 5.0
|
||||||
|
_ScaleX ("Scale X", float) = 1.0
|
||||||
|
_ScaleY ("Scale Y", float) = 1.0
|
||||||
|
_PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875
|
||||||
|
_Sharpness ("Sharpness", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
_VertexOffsetX ("Vertex OffsetX", float) = 0
|
||||||
|
_VertexOffsetY ("Vertex OffsetY", float) = 0
|
||||||
|
|
||||||
|
_CullMode ("Cull Mode", Float) = 0
|
||||||
|
//_MaskCoord ("Mask Coords", vector) = (0,0,0,0)
|
||||||
|
//_MaskSoftness ("Mask Softness", float) = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
LOD 300
|
||||||
|
Cull [_CullMode]
|
||||||
|
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma surface PixShader BlinnPhong alpha:blend vertex:VertShader nolightmap nodirlightmap
|
||||||
|
#pragma target 3.0
|
||||||
|
#pragma shader_feature __ GLOW_ON
|
||||||
|
#pragma glsl
|
||||||
|
|
||||||
|
#include "TMPro_Properties.cginc"
|
||||||
|
#include "TMPro.cginc"
|
||||||
|
|
||||||
|
half _FaceShininess;
|
||||||
|
half _OutlineShininess;
|
||||||
|
|
||||||
|
struct Input
|
||||||
|
{
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 uv_MainTex;
|
||||||
|
float2 uv2_FaceTex;
|
||||||
|
float2 uv2_OutlineTex;
|
||||||
|
float2 param; // Weight, Scale
|
||||||
|
float3 viewDirEnv;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#define BEVEL_ON 1
|
||||||
|
#include "TMPro_Surface.cginc"
|
||||||
|
ENDCG
|
||||||
|
|
||||||
|
// Pass to render object as a shadow caster
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
Name "Caster"
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"LightMode" = "ShadowCaster"
|
||||||
|
}
|
||||||
|
Offset 1, 1
|
||||||
|
|
||||||
|
Fog
|
||||||
|
{
|
||||||
|
Mode Off
|
||||||
|
}
|
||||||
|
ZWrite On
|
||||||
|
ZTest LEqual
|
||||||
|
Cull Off
|
||||||
|
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma vertex vert
|
||||||
|
#pragma fragment frag
|
||||||
|
#pragma multi_compile_shadowcaster
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
|
||||||
|
struct v2f
|
||||||
|
{
|
||||||
|
V2F_SHADOW_CASTER;
|
||||||
|
float2 uv : TEXCOORD1;
|
||||||
|
float2 uv2 : TEXCOORD3;
|
||||||
|
float alphaClip : TEXCOORD2;
|
||||||
|
};
|
||||||
|
|
||||||
|
uniform float4 _MainTex_ST;
|
||||||
|
uniform float4 _OutlineTex_ST;
|
||||||
|
float _OutlineWidth;
|
||||||
|
float _FaceDilate;
|
||||||
|
float _ScaleRatioA;
|
||||||
|
|
||||||
|
v2f vert(appdata_base v)
|
||||||
|
{
|
||||||
|
v2f o;
|
||||||
|
TRANSFER_SHADOW_CASTER(o)
|
||||||
|
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
|
||||||
|
o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex);
|
||||||
|
o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2;
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
|
||||||
|
uniform sampler2D _MainTex;
|
||||||
|
|
||||||
|
float4 frag(v2f i) : COLOR
|
||||||
|
{
|
||||||
|
fixed4 texcol = tex2D(_MainTex, i.uv).a;
|
||||||
|
clip(texcol.a - i.alphaClip);
|
||||||
|
SHADOW_CASTER_FRAGMENT(i)
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f7ada0af4f174f0694ca6a487b8f543d
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,330 @@
|
||||||
|
Shader "TextMeshPro/Distance Field"
|
||||||
|
{
|
||||||
|
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_FaceTex ("Face Texture", 2D) = "white" {}
|
||||||
|
_FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0
|
||||||
|
_FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0
|
||||||
|
[HDR]_FaceColor ("Face Color", Color) = (1,1,1,1)
|
||||||
|
_FaceDilate ("Face Dilate", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1)
|
||||||
|
_OutlineTex ("Outline Texture", 2D) = "white" {}
|
||||||
|
_OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0
|
||||||
|
_OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0
|
||||||
|
_OutlineWidth ("Outline Thickness", Range(0, 1)) = 0
|
||||||
|
_OutlineSoftness ("Outline Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_Bevel ("Bevel", Range(0,1)) = 0.5
|
||||||
|
_BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0
|
||||||
|
_BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0
|
||||||
|
_BevelClamp ("Bevel Clamp", Range(0,1)) = 0
|
||||||
|
_BevelRoundness ("Bevel Roundness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_LightAngle ("Light Angle", Range(0.0, 6.2831853)) = 3.1416
|
||||||
|
[HDR]_SpecularColor ("Specular", Color) = (1,1,1,1)
|
||||||
|
_SpecularPower ("Specular", Range(0,4)) = 2.0
|
||||||
|
_Reflectivity ("Reflectivity", Range(5.0,15.0)) = 10
|
||||||
|
_Diffuse ("Diffuse", Range(0,1)) = 0.5
|
||||||
|
_Ambient ("Ambient", Range(1,0)) = 0.5
|
||||||
|
|
||||||
|
_BumpMap ("Normal map", 2D) = "bump" {}
|
||||||
|
_BumpOutline ("Bump Outline", Range(0,1)) = 0
|
||||||
|
_BumpFace ("Bump Face", Range(0,1)) = 0
|
||||||
|
|
||||||
|
_ReflectFaceColor ("Reflection Color", Color) = (0,0,0,1)
|
||||||
|
_ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1)
|
||||||
|
_Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ }
|
||||||
|
_EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0)
|
||||||
|
|
||||||
|
|
||||||
|
[HDR]_UnderlayColor ("Border Color", Color) = (0,0,0, 0.5)
|
||||||
|
_UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0
|
||||||
|
_UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0
|
||||||
|
_UnderlayDilate ("Border Dilate", Range(-1,1)) = 0
|
||||||
|
_UnderlaySoftness ("Border Softness", Range(0,1)) = 0
|
||||||
|
|
||||||
|
[HDR]_GlowColor ("Color", Color) = (0, 1, 0, 0.5)
|
||||||
|
_GlowOffset ("Offset", Range(-1,1)) = 0
|
||||||
|
_GlowInner ("Inner", Range(0,1)) = 0.05
|
||||||
|
_GlowOuter ("Outer", Range(0,1)) = 0.05
|
||||||
|
_GlowPower ("Falloff", Range(1, 0)) = 0.75
|
||||||
|
|
||||||
|
_WeightNormal ("Weight Normal", float) = 0
|
||||||
|
_WeightBold ("Weight Bold", float) = 0.5
|
||||||
|
|
||||||
|
_ShaderFlags ("Flags", float) = 0
|
||||||
|
_ScaleRatioA ("Scale RatioA", float) = 1
|
||||||
|
_ScaleRatioB ("Scale RatioB", float) = 1
|
||||||
|
_ScaleRatioC ("Scale RatioC", float) = 1
|
||||||
|
|
||||||
|
_MainTex ("Font Atlas", 2D) = "white" {}
|
||||||
|
_TextureWidth ("Texture Width", float) = 512
|
||||||
|
_TextureHeight ("Texture Height", float) = 512
|
||||||
|
_GradientScale ("Gradient Scale", float) = 5.0
|
||||||
|
_ScaleX ("Scale X", float) = 1.0
|
||||||
|
_ScaleY ("Scale Y", float) = 1.0
|
||||||
|
_PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875
|
||||||
|
_Sharpness ("Sharpness", Range(-1,1)) = 0
|
||||||
|
|
||||||
|
_VertexOffsetX ("Vertex OffsetX", float) = 0
|
||||||
|
_VertexOffsetY ("Vertex OffsetY", float) = 0
|
||||||
|
|
||||||
|
_MaskCoord ("Mask Coordinates", vector) = (0, 0, 32767, 32767)
|
||||||
|
_ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
|
||||||
|
_MaskSoftnessX ("Mask SoftnessX", float) = 0
|
||||||
|
_MaskSoftnessY ("Mask SoftnessY", float) = 0
|
||||||
|
|
||||||
|
_StencilComp ("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil ("Stencil ID", Float) = 0
|
||||||
|
_StencilOp ("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask ("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask ("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_CullMode ("Cull Mode", Float) = 0
|
||||||
|
_ColorMask ("Color Mask", Float) = 15
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Transparent"
|
||||||
|
"IgnoreProjector"="True"
|
||||||
|
"RenderType"="Transparent"
|
||||||
|
}
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref [_Stencil]
|
||||||
|
Comp [_StencilComp]
|
||||||
|
Pass [_StencilOp]
|
||||||
|
ReadMask [_StencilReadMask]
|
||||||
|
WriteMask [_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
Cull [_CullMode]
|
||||||
|
ZWrite Off
|
||||||
|
Lighting Off
|
||||||
|
Fog
|
||||||
|
{
|
||||||
|
Mode Off
|
||||||
|
}
|
||||||
|
ZTest [unity_GUIZTestMode]
|
||||||
|
Blend One OneMinusSrcAlpha
|
||||||
|
ColorMask [_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma target 3.0
|
||||||
|
#pragma vertex VertShader
|
||||||
|
#pragma fragment PixShader
|
||||||
|
#pragma shader_feature __ BEVEL_ON
|
||||||
|
#pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
|
||||||
|
#pragma shader_feature __ GLOW_ON
|
||||||
|
|
||||||
|
#pragma multi_compile __ UNITY_UI_CLIP_RECT
|
||||||
|
#pragma multi_compile __ UNITY_UI_ALPHACLIP
|
||||||
|
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
#include "UnityUI.cginc"
|
||||||
|
#include "TMPro_Properties.cginc"
|
||||||
|
#include "TMPro.cginc"
|
||||||
|
|
||||||
|
struct vertex_t
|
||||||
|
{
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
float4 position : POSITION;
|
||||||
|
float3 normal : NORMAL;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord0 : TEXCOORD0;
|
||||||
|
float2 texcoord1 : TEXCOORD1;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct pixel_t
|
||||||
|
{
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
UNITY_VERTEX_OUTPUT_STEREO
|
||||||
|
float4 position : SV_POSITION;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 atlas : TEXCOORD0; // Atlas
|
||||||
|
float4 param : TEXCOORD1; // alphaClip, scale, bias, weight
|
||||||
|
float4 mask : TEXCOORD2; // Position in object space(xy), pixel Size(zw)
|
||||||
|
float3 viewDir : TEXCOORD3;
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
float4 texcoord2 : TEXCOORD4; // u,v, scale, bias
|
||||||
|
fixed4 underlayColor : COLOR1;
|
||||||
|
#endif
|
||||||
|
float4 textures : TEXCOORD5;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Used by Unity internally to handle Texture Tiling and Offset.
|
||||||
|
float4 _FaceTex_ST;
|
||||||
|
float4 _OutlineTex_ST;
|
||||||
|
|
||||||
|
pixel_t VertShader(vertex_t input)
|
||||||
|
{
|
||||||
|
pixel_t output;
|
||||||
|
|
||||||
|
UNITY_INITIALIZE_OUTPUT(pixel_t, output);
|
||||||
|
UNITY_SETUP_INSTANCE_ID(input);
|
||||||
|
UNITY_TRANSFER_INSTANCE_ID(input, output);
|
||||||
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
|
||||||
|
|
||||||
|
float bold = step(input.texcoord1.y, 0);
|
||||||
|
|
||||||
|
float4 vert = input.position;
|
||||||
|
vert.x += _VertexOffsetX;
|
||||||
|
vert.y += _VertexOffsetY;
|
||||||
|
|
||||||
|
float4 vPosition = UnityObjectToClipPos(vert);
|
||||||
|
|
||||||
|
float2 pixelSize = vPosition.w;
|
||||||
|
pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
|
||||||
|
float scale = rsqrt(dot(pixelSize, pixelSize));
|
||||||
|
scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1);
|
||||||
|
if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale,
|
||||||
|
abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
|
||||||
|
|
||||||
|
float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
|
||||||
|
weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
|
||||||
|
|
||||||
|
float bias = (.5 - weight) + (.5 / scale);
|
||||||
|
|
||||||
|
float alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _OutlineSoftness * _ScaleRatioA);
|
||||||
|
|
||||||
|
#if GLOW_ON
|
||||||
|
alphaClip = min(alphaClip, 1.0 - _GlowOffset * _ScaleRatioB - _GlowOuter * _ScaleRatioB);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
alphaClip = alphaClip / 2.0 - (.5 / scale) - weight;
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
float4 underlayColor = _UnderlayColor;
|
||||||
|
underlayColor.rgb *= underlayColor.a;
|
||||||
|
|
||||||
|
float bScale = scale;
|
||||||
|
bScale /= 1 + ((_UnderlaySoftness*_ScaleRatioC) * bScale);
|
||||||
|
float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale);
|
||||||
|
|
||||||
|
float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
|
||||||
|
float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
|
||||||
|
float2 bOffset = float2(x, y);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Generate UV for the Masking Texture
|
||||||
|
float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
|
||||||
|
float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
|
||||||
|
|
||||||
|
// Support for texture tiling and offset
|
||||||
|
float2 textureUV = UnpackUV(input.texcoord1.x);
|
||||||
|
float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex);
|
||||||
|
float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex);
|
||||||
|
|
||||||
|
|
||||||
|
output.position = vPosition;
|
||||||
|
output.color = input.color;
|
||||||
|
output.atlas = input.texcoord0;
|
||||||
|
output.param = float4(alphaClip, scale, bias, weight);
|
||||||
|
output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw,
|
||||||
|
0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
|
||||||
|
output.viewDir = mul((float3x3)_EnvMatrix,
|
||||||
|
_WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz);
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
output.texcoord2 = float4(input.texcoord0 + bOffset, bScale, bBias);
|
||||||
|
output.underlayColor = underlayColor;
|
||||||
|
#endif
|
||||||
|
output.textures = float4(faceUV, outlineUV);
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fixed4 PixShader(pixel_t input) : SV_Target
|
||||||
|
{
|
||||||
|
UNITY_SETUP_INSTANCE_ID(input);
|
||||||
|
|
||||||
|
float c = tex2D(_MainTex, input.atlas).a;
|
||||||
|
|
||||||
|
#ifndef UNDERLAY_ON
|
||||||
|
clip(c - input.param.x);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
float scale = input.param.y;
|
||||||
|
float bias = input.param.z;
|
||||||
|
float weight = input.param.w;
|
||||||
|
float sd = (bias - c) * scale;
|
||||||
|
|
||||||
|
float outline = (_OutlineWidth * _ScaleRatioA) * scale;
|
||||||
|
float softness = (_OutlineSoftness * _ScaleRatioA) * scale;
|
||||||
|
|
||||||
|
half4 faceColor = _FaceColor;
|
||||||
|
half4 outlineColor = _OutlineColor;
|
||||||
|
|
||||||
|
faceColor.rgb *= input.color.rgb;
|
||||||
|
|
||||||
|
faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y);
|
||||||
|
outlineColor *= tex2D(_OutlineTex,
|
||||||
|
input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time
|
||||||
|
.y);
|
||||||
|
|
||||||
|
faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
|
||||||
|
|
||||||
|
#if BEVEL_ON
|
||||||
|
float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0);
|
||||||
|
float3 n = GetSurfaceNormal(input.atlas, weight, dxy);
|
||||||
|
|
||||||
|
float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz;
|
||||||
|
bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5));
|
||||||
|
n = normalize(n- bump);
|
||||||
|
|
||||||
|
float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0));
|
||||||
|
|
||||||
|
float3 col = GetSpecular(n, light);
|
||||||
|
faceColor.rgb += col*faceColor.a;
|
||||||
|
faceColor.rgb *= 1-(dot(n, light)*_Diffuse);
|
||||||
|
faceColor.rgb *= lerp(_Ambient, 1, n.z*n.z);
|
||||||
|
|
||||||
|
fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n));
|
||||||
|
faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_ON
|
||||||
|
float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z;
|
||||||
|
faceColor += input.underlayColor * saturate(d - input.texcoord2.w) * (1 - faceColor.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_INNER
|
||||||
|
float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z;
|
||||||
|
faceColor += input.underlayColor * (1 - saturate(d - input.texcoord2.w)) * saturate(1 - sd) * (1 - faceColor.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if GLOW_ON
|
||||||
|
float4 glowColor = GetGlowColor(sd, scale);
|
||||||
|
faceColor.rgb += glowColor.rgb * glowColor.a;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Alternative implementation to UnityGet2DClipping with support for softness.
|
||||||
|
#if UNITY_UI_CLIP_RECT
|
||||||
|
half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
|
||||||
|
faceColor *= m.x * m.y;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNITY_UI_ALPHACLIP
|
||||||
|
clip(faceColor.a - 0.001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return faceColor * input.color.a;
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Fallback "TextMeshPro/Mobile/Distance Field"
|
||||||
|
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 68e6db2ebdc24f95958faec2be5558d6
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,116 @@
|
||||||
|
Shader "TextMeshPro/Sprite"
|
||||||
|
{
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
|
||||||
|
_Color ("Tint", Color) = (1,1,1,1)
|
||||||
|
|
||||||
|
_StencilComp ("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil ("Stencil ID", Float) = 0
|
||||||
|
_StencilOp ("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask ("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask ("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_CullMode ("Cull Mode", Float) = 0
|
||||||
|
_ColorMask ("Color Mask", Float) = 15
|
||||||
|
_ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
|
||||||
|
|
||||||
|
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Transparent"
|
||||||
|
"IgnoreProjector"="True"
|
||||||
|
"RenderType"="Transparent"
|
||||||
|
"PreviewType"="Plane"
|
||||||
|
"CanUseSpriteAtlas"="True"
|
||||||
|
}
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref [_Stencil]
|
||||||
|
Comp [_StencilComp]
|
||||||
|
Pass [_StencilOp]
|
||||||
|
ReadMask [_StencilReadMask]
|
||||||
|
WriteMask [_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
Cull [_CullMode]
|
||||||
|
Lighting Off
|
||||||
|
ZWrite Off
|
||||||
|
ZTest [unity_GUIZTestMode]
|
||||||
|
Blend SrcAlpha OneMinusSrcAlpha
|
||||||
|
ColorMask [_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
Name "Default"
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma vertex vert
|
||||||
|
#pragma fragment frag
|
||||||
|
#pragma target 2.0
|
||||||
|
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
#include "UnityUI.cginc"
|
||||||
|
|
||||||
|
#pragma multi_compile __ UNITY_UI_CLIP_RECT
|
||||||
|
#pragma multi_compile __ UNITY_UI_ALPHACLIP
|
||||||
|
|
||||||
|
struct appdata_t
|
||||||
|
{
|
||||||
|
float4 vertex : POSITION;
|
||||||
|
float4 color : COLOR;
|
||||||
|
float2 texcoord : TEXCOORD0;
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
};
|
||||||
|
|
||||||
|
struct v2f
|
||||||
|
{
|
||||||
|
float4 vertex : SV_POSITION;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord : TEXCOORD0;
|
||||||
|
float4 worldPosition : TEXCOORD1;
|
||||||
|
UNITY_VERTEX_OUTPUT_STEREO
|
||||||
|
};
|
||||||
|
|
||||||
|
sampler2D _MainTex;
|
||||||
|
fixed4 _Color;
|
||||||
|
fixed4 _TextureSampleAdd;
|
||||||
|
float4 _ClipRect;
|
||||||
|
float4 _MainTex_ST;
|
||||||
|
|
||||||
|
v2f vert(appdata_t v)
|
||||||
|
{
|
||||||
|
v2f OUT;
|
||||||
|
UNITY_SETUP_INSTANCE_ID(v);
|
||||||
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
|
||||||
|
OUT.worldPosition = v.vertex;
|
||||||
|
OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);
|
||||||
|
|
||||||
|
OUT.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
|
||||||
|
|
||||||
|
OUT.color = v.color * _Color;
|
||||||
|
return OUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixed4 frag(v2f IN) : SV_Target
|
||||||
|
{
|
||||||
|
half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;
|
||||||
|
|
||||||
|
#ifdef UNITY_UI_CLIP_RECT
|
||||||
|
color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UNITY_UI_ALPHACLIP
|
||||||
|
clip (color.a - 0.001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cf81c85f95fe47e1a27f6ae460cf182c
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,85 @@
|
||||||
|
float2 UnpackUV(float uv)
|
||||||
|
{
|
||||||
|
float2 output;
|
||||||
|
output.x = floor(uv / 4096);
|
||||||
|
output.y = uv - 4096 * output.x;
|
||||||
|
|
||||||
|
return output * 0.001953125;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixed4 GetColor(half d, fixed4 faceColor, fixed4 outlineColor, half outline, half softness)
|
||||||
|
{
|
||||||
|
half faceAlpha = 1 - saturate((d - outline * 0.5 + softness * 0.5) / (1.0 + softness));
|
||||||
|
half outlineAlpha = saturate((d + outline * 0.5)) * sqrt(min(1.0, outline));
|
||||||
|
|
||||||
|
faceColor.rgb *= faceColor.a;
|
||||||
|
outlineColor.rgb *= outlineColor.a;
|
||||||
|
|
||||||
|
faceColor = lerp(faceColor, outlineColor, outlineAlpha);
|
||||||
|
|
||||||
|
faceColor *= faceAlpha;
|
||||||
|
|
||||||
|
return faceColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
float3 GetSurfaceNormal(float4 h, float bias)
|
||||||
|
{
|
||||||
|
bool raisedBevel = step(1, fmod(_ShaderFlags, 2));
|
||||||
|
|
||||||
|
h += bias + _BevelOffset;
|
||||||
|
|
||||||
|
float bevelWidth = max(.01, _OutlineWidth + _BevelWidth);
|
||||||
|
|
||||||
|
// Track outline
|
||||||
|
h -= .5;
|
||||||
|
h /= bevelWidth;
|
||||||
|
h = saturate(h + .5);
|
||||||
|
|
||||||
|
if (raisedBevel) h = 1 - abs(h * 2.0 - 1.0);
|
||||||
|
h = lerp(h, sin(h * 3.141592 / 2.0), _BevelRoundness);
|
||||||
|
h = min(h, 1.0 - _BevelClamp);
|
||||||
|
h *= _Bevel * bevelWidth * _GradientScale * -2.0;
|
||||||
|
|
||||||
|
float3 va = normalize(float3(1.0, 0.0, h.y - h.x));
|
||||||
|
float3 vb = normalize(float3(0.0, -1.0, h.w - h.z));
|
||||||
|
|
||||||
|
return cross(va, vb);
|
||||||
|
}
|
||||||
|
|
||||||
|
float3 GetSurfaceNormal(float2 uv, float bias, float3 delta)
|
||||||
|
{
|
||||||
|
// Read "height field"
|
||||||
|
float4 h = {
|
||||||
|
tex2D(_MainTex, uv - delta.xz).a,
|
||||||
|
tex2D(_MainTex, uv + delta.xz).a,
|
||||||
|
tex2D(_MainTex, uv - delta.zy).a,
|
||||||
|
tex2D(_MainTex, uv + delta.zy).a
|
||||||
|
};
|
||||||
|
|
||||||
|
return GetSurfaceNormal(h, bias);
|
||||||
|
}
|
||||||
|
|
||||||
|
float3 GetSpecular(float3 n, float3 l)
|
||||||
|
{
|
||||||
|
float spec = pow(max(0.0, dot(n, l)), _Reflectivity);
|
||||||
|
return _SpecularColor.rgb * spec * _SpecularPower;
|
||||||
|
}
|
||||||
|
|
||||||
|
float4 GetGlowColor(float d, float scale)
|
||||||
|
{
|
||||||
|
float glow = d - (_GlowOffset * _ScaleRatioB) * 0.5 * scale;
|
||||||
|
float t = lerp(_GlowInner, (_GlowOuter * _ScaleRatioB), step(0.0, glow)) * 0.5 * scale;
|
||||||
|
glow = saturate(abs(glow / (1.0 + t)));
|
||||||
|
glow = 1.0 - pow(glow, _GlowPower);
|
||||||
|
glow *= sqrt(min(1.0, t)); // Fade off glow thinner than 1 screen pixel
|
||||||
|
return float4(_GlowColor.rgb, saturate(_GlowColor.a * glow * 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
float4 BlendARGB(float4 overlying, float4 underlying)
|
||||||
|
{
|
||||||
|
overlying.rgb *= overlying.a;
|
||||||
|
underlying.rgb *= underlying.a;
|
||||||
|
float3 blended = overlying.rgb + ((1 - overlying.a) * underlying.rgb);
|
||||||
|
float alpha = underlying.a + (1 - underlying.a) * overlying.a;
|
||||||
|
return float4(blended, alpha);
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 407bc68d299748449bbf7f48ee690f8d
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,161 @@
|
||||||
|
struct vertex_t
|
||||||
|
{
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
float4 position : POSITION;
|
||||||
|
float3 normal : NORMAL;
|
||||||
|
float4 color : COLOR;
|
||||||
|
float2 texcoord0 : TEXCOORD0;
|
||||||
|
float2 texcoord1 : TEXCOORD1;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct pixel_t
|
||||||
|
{
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
UNITY_VERTEX_OUTPUT_STEREO
|
||||||
|
float4 position : SV_POSITION;
|
||||||
|
float4 faceColor : COLOR;
|
||||||
|
float4 outlineColor : COLOR1;
|
||||||
|
float4 texcoord0 : TEXCOORD0;
|
||||||
|
float4 param : TEXCOORD1; // weight, scaleRatio
|
||||||
|
float2 mask : TEXCOORD2;
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
float4 texcoord2 : TEXCOORD3;
|
||||||
|
float4 underlayColor : COLOR2;
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
float4 SRGBToLinear(float4 rgba)
|
||||||
|
{
|
||||||
|
return float4(lerp(rgba.rgb / 12.92f, pow((rgba.rgb + 0.055f) / 1.055f, 2.4f), step(0.04045f, rgba.rgb)), rgba.a);
|
||||||
|
}
|
||||||
|
|
||||||
|
pixel_t VertShader(vertex_t input)
|
||||||
|
{
|
||||||
|
pixel_t output;
|
||||||
|
|
||||||
|
UNITY_INITIALIZE_OUTPUT(pixel_t, output);
|
||||||
|
UNITY_SETUP_INSTANCE_ID(input);
|
||||||
|
UNITY_TRANSFER_INSTANCE_ID(input, output);
|
||||||
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
|
||||||
|
|
||||||
|
float bold = step(input.texcoord1.y, 0);
|
||||||
|
|
||||||
|
float4 vert = input.position;
|
||||||
|
vert.x += _VertexOffsetX;
|
||||||
|
vert.y += _VertexOffsetY;
|
||||||
|
|
||||||
|
float4 vPosition = UnityObjectToClipPos(vert);
|
||||||
|
|
||||||
|
float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
|
||||||
|
weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
|
||||||
|
|
||||||
|
// Generate UV for the Masking Texture
|
||||||
|
float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
|
||||||
|
float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
|
||||||
|
|
||||||
|
float4 color = input.color;
|
||||||
|
#if (FORCE_LINEAR && !UNITY_COLORSPACE_GAMMA)
|
||||||
|
color = SRGBToLinear(input.color);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
float opacity = color.a;
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
opacity = 1.0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
float4 faceColor = float4(color.rgb, opacity) * _FaceColor;
|
||||||
|
faceColor.rgb *= faceColor.a;
|
||||||
|
|
||||||
|
float4 outlineColor = _OutlineColor;
|
||||||
|
outlineColor.a *= opacity;
|
||||||
|
outlineColor.rgb *= outlineColor.a;
|
||||||
|
|
||||||
|
output.position = vPosition;
|
||||||
|
output.faceColor = faceColor;
|
||||||
|
output.outlineColor = outlineColor;
|
||||||
|
output.texcoord0 = float4(input.texcoord0.xy, maskUV.xy);
|
||||||
|
output.param = float4(0.5 - weight, 1.3333 * _GradientScale * (_Sharpness + 1) / _TextureWidth,
|
||||||
|
_OutlineWidth * _ScaleRatioA * 0.5, 0);
|
||||||
|
|
||||||
|
float2 mask = float2(0, 0);
|
||||||
|
#if UNITY_UI_CLIP_RECT
|
||||||
|
mask = vert.xy * 2 - clampedRect.xy - clampedRect.zw;
|
||||||
|
#endif
|
||||||
|
output.mask = mask;
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON || UNDERLAY_INNER)
|
||||||
|
float4 underlayColor = _UnderlayColor;
|
||||||
|
underlayColor.rgb *= underlayColor.a;
|
||||||
|
|
||||||
|
float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
|
||||||
|
float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
|
||||||
|
|
||||||
|
output.texcoord2 = float4(input.texcoord0 + float2(x, y), input.color.a, 0);
|
||||||
|
output.underlayColor = underlayColor;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
float4 PixShader(pixel_t input) : SV_Target
|
||||||
|
{
|
||||||
|
UNITY_SETUP_INSTANCE_ID(input);
|
||||||
|
|
||||||
|
float d = tex2D(_MainTex, input.texcoord0.xy).a;
|
||||||
|
|
||||||
|
float2 UV = input.texcoord0.xy;
|
||||||
|
float scale = rsqrt(abs(ddx(UV.x) * ddy(UV.y) - ddy(UV.x) * ddx(UV.y))) * input.param.y;
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
float layerScale = scale;
|
||||||
|
layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale);
|
||||||
|
float layerBias = input.param.x * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale);
|
||||||
|
|
||||||
|
float4 faceColor = input.faceColor * saturate((d - input.param.x) * scale + 0.5);
|
||||||
|
|
||||||
|
#ifdef OUTLINE_ON
|
||||||
|
float4 outlineColor = lerp(input.faceColor, input.outlineColor, sqrt(min(1.0, input.param.z * scale * 2)));
|
||||||
|
faceColor = lerp(outlineColor, input.faceColor, saturate((d - input.param.x - input.param.z) * scale + 0.5));
|
||||||
|
faceColor *= saturate((d - input.param.x + input.param.z) * scale + 0.5);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_ON
|
||||||
|
d = tex2D(_MainTex, input.texcoord2.xy).a * layerScale;
|
||||||
|
faceColor += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - layerBias) * (1 - faceColor.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNDERLAY_INNER
|
||||||
|
float bias = input.param.x * scale - 0.5;
|
||||||
|
float sd = saturate(d * scale - bias - input.param.z);
|
||||||
|
d = tex2D(_MainTex, input.texcoord2.xy).a * layerScale;
|
||||||
|
faceColor += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - layerBias)) * sd * (1 - faceColor.a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef MASKING
|
||||||
|
float a = abs(_MaskInverse - tex2D(_MaskTex, input.texcoord0.zw).a);
|
||||||
|
float t = a + (1 - _MaskWipeControl) * _MaskEdgeSoftness - _MaskWipeControl;
|
||||||
|
a = saturate(t / _MaskEdgeSoftness);
|
||||||
|
faceColor.rgb = lerp(_MaskEdgeColor.rgb * faceColor.a, faceColor.rgb, a);
|
||||||
|
faceColor *= a;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Alternative implementation to UnityGet2DClipping with support for softness
|
||||||
|
#if UNITY_UI_CLIP_RECT
|
||||||
|
float2 maskZW = 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + (1 / scale));
|
||||||
|
float2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * maskZW);
|
||||||
|
faceColor *= m.x * m.y;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (UNDERLAY_ON | UNDERLAY_INNER)
|
||||||
|
faceColor *= input.texcoord2.z;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNITY_UI_ALPHACLIP
|
||||||
|
clip(faceColor.a - 0.001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return faceColor;
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c334973cef89a9840b0b0c507e0377ab
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,85 @@
|
||||||
|
// UI Editable properties
|
||||||
|
uniform sampler2D _FaceTex; // Alpha : Signed Distance
|
||||||
|
uniform float _FaceUVSpeedX;
|
||||||
|
uniform float _FaceUVSpeedY;
|
||||||
|
uniform fixed4 _FaceColor; // RGBA : Color + Opacity
|
||||||
|
uniform float _FaceDilate; // v[ 0, 1]
|
||||||
|
uniform float _OutlineSoftness; // v[ 0, 1]
|
||||||
|
|
||||||
|
uniform sampler2D _OutlineTex; // RGBA : Color + Opacity
|
||||||
|
uniform float _OutlineUVSpeedX;
|
||||||
|
uniform float _OutlineUVSpeedY;
|
||||||
|
uniform fixed4 _OutlineColor; // RGBA : Color + Opacity
|
||||||
|
uniform float _OutlineWidth; // v[ 0, 1]
|
||||||
|
|
||||||
|
uniform float _Bevel; // v[ 0, 1]
|
||||||
|
uniform float _BevelOffset; // v[-1, 1]
|
||||||
|
uniform float _BevelWidth; // v[-1, 1]
|
||||||
|
uniform float _BevelClamp; // v[ 0, 1]
|
||||||
|
uniform float _BevelRoundness; // v[ 0, 1]
|
||||||
|
|
||||||
|
uniform sampler2D _BumpMap; // Normal map
|
||||||
|
uniform float _BumpOutline; // v[ 0, 1]
|
||||||
|
uniform float _BumpFace; // v[ 0, 1]
|
||||||
|
|
||||||
|
uniform samplerCUBE _Cube; // Cube / sphere map
|
||||||
|
uniform fixed4 _ReflectFaceColor; // RGB intensity
|
||||||
|
uniform fixed4 _ReflectOutlineColor;
|
||||||
|
//uniform float _EnvTiltX; // v[-1, 1]
|
||||||
|
//uniform float _EnvTiltY; // v[-1, 1]
|
||||||
|
uniform float3 _EnvMatrixRotation;
|
||||||
|
uniform float4x4 _EnvMatrix;
|
||||||
|
|
||||||
|
uniform fixed4 _SpecularColor; // RGB intensity
|
||||||
|
uniform float _LightAngle; // v[ 0,Tau]
|
||||||
|
uniform float _SpecularPower; // v[ 0, 1]
|
||||||
|
uniform float _Reflectivity; // v[ 5, 15]
|
||||||
|
uniform float _Diffuse; // v[ 0, 1]
|
||||||
|
uniform float _Ambient; // v[ 0, 1]
|
||||||
|
|
||||||
|
uniform fixed4 _UnderlayColor; // RGBA : Color + Opacity
|
||||||
|
uniform float _UnderlayOffsetX; // v[-1, 1]
|
||||||
|
uniform float _UnderlayOffsetY; // v[-1, 1]
|
||||||
|
uniform float _UnderlayDilate; // v[-1, 1]
|
||||||
|
uniform float _UnderlaySoftness; // v[ 0, 1]
|
||||||
|
|
||||||
|
uniform fixed4 _GlowColor; // RGBA : Color + Intesity
|
||||||
|
uniform float _GlowOffset; // v[-1, 1]
|
||||||
|
uniform float _GlowOuter; // v[ 0, 1]
|
||||||
|
uniform float _GlowInner; // v[ 0, 1]
|
||||||
|
uniform float _GlowPower; // v[ 1, 1/(1+4*4)]
|
||||||
|
|
||||||
|
// API Editable properties
|
||||||
|
uniform float _ShaderFlags;
|
||||||
|
uniform float _WeightNormal;
|
||||||
|
uniform float _WeightBold;
|
||||||
|
|
||||||
|
uniform float _ScaleRatioA;
|
||||||
|
uniform float _ScaleRatioB;
|
||||||
|
uniform float _ScaleRatioC;
|
||||||
|
|
||||||
|
uniform float _VertexOffsetX;
|
||||||
|
uniform float _VertexOffsetY;
|
||||||
|
|
||||||
|
//uniform float _UseClipRect;
|
||||||
|
uniform float _MaskID;
|
||||||
|
uniform sampler2D _MaskTex;
|
||||||
|
uniform float4 _MaskCoord;
|
||||||
|
uniform float4 _ClipRect; // bottom left(x,y) : top right(z,w)
|
||||||
|
//uniform float _MaskWipeControl;
|
||||||
|
//uniform float _MaskEdgeSoftness;
|
||||||
|
//uniform fixed4 _MaskEdgeColor;
|
||||||
|
//uniform bool _MaskInverse;
|
||||||
|
|
||||||
|
uniform float _MaskSoftnessX;
|
||||||
|
uniform float _MaskSoftnessY;
|
||||||
|
|
||||||
|
// Font Atlas properties
|
||||||
|
uniform sampler2D _MainTex;
|
||||||
|
uniform float _TextureWidth;
|
||||||
|
uniform float _TextureHeight;
|
||||||
|
uniform float _GradientScale;
|
||||||
|
uniform float _ScaleX;
|
||||||
|
uniform float _ScaleY;
|
||||||
|
uniform float _PerspectiveFilter;
|
||||||
|
uniform float _Sharpness;
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3997e2241185407d80309a82f9148466
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,103 @@
|
||||||
|
void VertShader(inout appdata_full v, out Input data)
|
||||||
|
{
|
||||||
|
v.vertex.x += _VertexOffsetX;
|
||||||
|
v.vertex.y += _VertexOffsetY;
|
||||||
|
|
||||||
|
UNITY_INITIALIZE_OUTPUT(Input, data);
|
||||||
|
|
||||||
|
float bold = step(v.texcoord1.y, 0);
|
||||||
|
|
||||||
|
// Generate normal for backface
|
||||||
|
float3 view = ObjSpaceViewDir(v.vertex);
|
||||||
|
v.normal *= sign(dot(v.normal, view));
|
||||||
|
|
||||||
|
#if USE_DERIVATIVE
|
||||||
|
data.param.y = 1;
|
||||||
|
#else
|
||||||
|
float4 vert = v.vertex;
|
||||||
|
float4 vPosition = UnityObjectToClipPos(vert);
|
||||||
|
float2 pixelSize = vPosition.w;
|
||||||
|
|
||||||
|
pixelSize /= float2(_ScaleX, _ScaleY) * mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy);
|
||||||
|
float scale = rsqrt(dot(pixelSize, pixelSize));
|
||||||
|
scale *= abs(v.texcoord1.y) * _GradientScale * (_Sharpness + 1);
|
||||||
|
scale = lerp(scale * (1 - _PerspectiveFilter), scale,
|
||||||
|
abs(dot(UnityObjectToWorldNormal(v.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
|
||||||
|
data.param.y = scale;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
data.param.x = (lerp(_WeightNormal, _WeightBold, bold) / 4.0 + _FaceDilate) * _ScaleRatioA * 0.5; //
|
||||||
|
|
||||||
|
v.texcoord1.xy = UnpackUV(v.texcoord1.x);
|
||||||
|
data.viewDirEnv = mul((float3x3)_EnvMatrix, WorldSpaceViewDir(v.vertex));
|
||||||
|
}
|
||||||
|
|
||||||
|
void PixShader(Input input, inout SurfaceOutput o)
|
||||||
|
{
|
||||||
|
#if USE_DERIVATIVE
|
||||||
|
float2 pixelSize = float2(ddx(input.uv_MainTex.y), ddy(input.uv_MainTex.y));
|
||||||
|
pixelSize *= _TextureWidth * .75;
|
||||||
|
float scale = rsqrt(dot(pixelSize, pixelSize)) * _GradientScale * (_Sharpness + 1);
|
||||||
|
#else
|
||||||
|
float scale = input.param.y;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Signed distance
|
||||||
|
float c = tex2D(_MainTex, input.uv_MainTex).a;
|
||||||
|
float sd = (.5 - c - input.param.x) * scale + .5;
|
||||||
|
float outline = _OutlineWidth * _ScaleRatioA * scale;
|
||||||
|
float softness = _OutlineSoftness * _ScaleRatioA * scale;
|
||||||
|
|
||||||
|
// Color & Alpha
|
||||||
|
float4 faceColor = _FaceColor;
|
||||||
|
float4 outlineColor = _OutlineColor;
|
||||||
|
faceColor *= input.color;
|
||||||
|
outlineColor.a *= input.color.a;
|
||||||
|
faceColor *= tex2D(_FaceTex, float2(input.uv2_FaceTex.x + _FaceUVSpeedX * _Time.y,
|
||||||
|
input.uv2_FaceTex.y + _FaceUVSpeedY * _Time.y));
|
||||||
|
outlineColor *= tex2D(_OutlineTex, float2(input.uv2_OutlineTex.x + _OutlineUVSpeedX * _Time.y,
|
||||||
|
input.uv2_OutlineTex.y + _OutlineUVSpeedY * _Time.y));
|
||||||
|
faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
|
||||||
|
faceColor.rgb /= max(faceColor.a, 0.0001);
|
||||||
|
|
||||||
|
#if BEVEL_ON
|
||||||
|
float3 delta = float3(1.0 / _TextureWidth, 1.0 / _TextureHeight, 0.0);
|
||||||
|
|
||||||
|
float4 smp4x = {tex2D(_MainTex, input.uv_MainTex - delta.xz).a,
|
||||||
|
tex2D(_MainTex, input.uv_MainTex + delta.xz).a,
|
||||||
|
tex2D(_MainTex, input.uv_MainTex - delta.zy).a,
|
||||||
|
tex2D(_MainTex, input.uv_MainTex + delta.zy).a };
|
||||||
|
|
||||||
|
// Face Normal
|
||||||
|
float3 n = GetSurfaceNormal(smp4x, input.param.x);
|
||||||
|
|
||||||
|
// Bumpmap
|
||||||
|
float3 bump = UnpackNormal(tex2D(_BumpMap, input.uv2_FaceTex.xy)).xyz;
|
||||||
|
bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5));
|
||||||
|
bump = lerp(float3(0, 0, 1), bump, faceColor.a);
|
||||||
|
n = normalize(n - bump);
|
||||||
|
|
||||||
|
// Cubemap reflection
|
||||||
|
fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDirEnv, mul((float3x3)unity_ObjectToWorld, n)));
|
||||||
|
float3 emission = reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a;
|
||||||
|
#else
|
||||||
|
float3 n = float3(0, 0, -1);
|
||||||
|
float3 emission = float3(0, 0, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if GLOW_ON
|
||||||
|
float4 glowColor = GetGlowColor(sd, scale);
|
||||||
|
glowColor.a *= input.color.a;
|
||||||
|
emission += glowColor.rgb*glowColor.a;
|
||||||
|
faceColor = BlendARGB(glowColor, faceColor);
|
||||||
|
faceColor.rgb /= max(faceColor.a, 0.0001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Set Standard output structure
|
||||||
|
o.Albedo = faceColor.rgb;
|
||||||
|
o.Normal = -n;
|
||||||
|
o.Emission = emission;
|
||||||
|
o.Specular = lerp(_FaceShininess, _OutlineShininess, saturate(sd + outline * 0.5));
|
||||||
|
o.Gloss = 1;
|
||||||
|
o.Alpha = faceColor.a;
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d930090c0cd643c7b55f19a38538c162
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d0603b6d5186471b96c778c3949c7ce2
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,3 @@
|
||||||
|
This sample of beautiful emojis are provided by EmojiOne https://www.emojione.com/
|
||||||
|
|
||||||
|
Please visit their website to view the complete set of their emojis and review their licensing terms.
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 381dcb09d5029d14897e55f98031fca5
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,416 @@
|
||||||
|
{
|
||||||
|
"frames": [
|
||||||
|
{
|
||||||
|
"filename": "1f60a.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "1f60b.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 128,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "1f60d.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 256,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "1f60e.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 384,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "1f600.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 128,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "1f601.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 128,
|
||||||
|
"y": 128,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "1f602.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 256,
|
||||||
|
"y": 128,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "1f603.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 384,
|
||||||
|
"y": 128,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "1f604.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 256,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "1f605.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 128,
|
||||||
|
"y": 256,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "1f606.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 256,
|
||||||
|
"y": 256,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "1f609.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 384,
|
||||||
|
"y": 256,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "1f618.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 384,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "1f923.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 128,
|
||||||
|
"y": 384,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "263a.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 256,
|
||||||
|
"y": 384,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "2639.png",
|
||||||
|
"frame": {
|
||||||
|
"x": 384,
|
||||||
|
"y": 384,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 128,
|
||||||
|
"h": 128
|
||||||
|
},
|
||||||
|
"pivot": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"meta": {
|
||||||
|
"app": "http://www.codeandweb.com/texturepacker",
|
||||||
|
"version": "1.0",
|
||||||
|
"image": "EmojiOne.png",
|
||||||
|
"format": "RGBA8888",
|
||||||
|
"size": {
|
||||||
|
"w": 512,
|
||||||
|
"h": 512
|
||||||
|
},
|
||||||
|
"scale": "1",
|
||||||
|
"smartupdate": "$TexturePacker:SmartUpdate:196a26a2e149d875b91ffc8fa3581e76:fc928c7e275404b7e0649307410475cb:424723c3774975ddb2053fd5c4b85f6e$"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8f05276190cf498a8153f6cbe761d4e6
|
||||||
|
timeCreated: 1480316860
|
||||||
|
licenseType: Pro
|
||||||
|
TextScriptImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
SheKnowsWhatYouAreToHerGame/Assets/TextMesh Pro/Sprites/EmojiOne.png
(Stored with Git LFS)
Normal file
BIN
SheKnowsWhatYouAreToHerGame/Assets/TextMesh Pro/Sprites/EmojiOne.png
(Stored with Git LFS)
Normal file
Binary file not shown.
|
@ -0,0 +1,431 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dffef66376be4fa480fb02b19edbe903
|
||||||
|
TextureImporter:
|
||||||
|
fileIDToRecycleName:
|
||||||
|
21300000: EmojiOne_0
|
||||||
|
21300002: EmojiOne_1
|
||||||
|
21300004: EmojiOne_2
|
||||||
|
21300006: EmojiOne_3
|
||||||
|
21300008: EmojiOne_4
|
||||||
|
21300010: EmojiOne_6
|
||||||
|
21300012: EmojiOne_7
|
||||||
|
21300014: EmojiOne_8
|
||||||
|
21300016: EmojiOne_9
|
||||||
|
21300018: EmojiOne_10
|
||||||
|
21300020: EmojiOne_11
|
||||||
|
21300022: EmojiOne_12
|
||||||
|
21300024: EmojiOne_13
|
||||||
|
21300026: EmojiOne_5
|
||||||
|
21300028: EmojiOne_14
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 5
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
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
|
||||||
|
isReadable: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: -1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -1
|
||||||
|
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}
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 512
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 512
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
buildTarget: iPhone
|
||||||
|
maxTextureSize: 512
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 512
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 384
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 4bcc36da2108f2c4ba3de5c921d25c3c
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_1
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 128
|
||||||
|
y: 384
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: e9eea8093eaeaee4d901c4553f572c22
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_2
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 256
|
||||||
|
y: 384
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 49451da35411dcc42a3692e39b0fde70
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_3
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 384
|
||||||
|
y: 384
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: f65709664b924904790c850a50ca82bc
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_4
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 256
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 5b92c568a5ec9ad4b9ed90e271f1c9a8
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_6
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 256
|
||||||
|
y: 256
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: b10f2b48b7281594bb8a24a6511a35af
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_7
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 384
|
||||||
|
y: 256
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 10a600f9329dc2246a897e89f4d283cd
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_8
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 128
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 66cffa363b90ab14787d8a5b90cf4502
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_9
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 128
|
||||||
|
y: 128
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 55cf3d409c9b89349b1e1bdc1cc224ad
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_10
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 256
|
||||||
|
y: 128
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 2a9e58eaf96feef42bcefa1cf257193f
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_11
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 384
|
||||||
|
y: 128
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 2489120affc155840ae6a7be2e93ce19
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_12
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: 412349a150598d14da4d7140df5c0286
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_13
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 128
|
||||||
|
y: 0
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: a937464b42bb3634782dea34c6becb6c
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_5
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 256
|
||||||
|
y: 0
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: b0f933b217682124dbfc5e6b89abe3d0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: EmojiOne_14
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 128
|
||||||
|
y: 256
|
||||||
|
width: 128
|
||||||
|
height: 128
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: f7235c763afe4434e8bb666750a41096
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 3e32d8f5477abfc43b19066e8ad5032e
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
spritePackingTag:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
SheKnowsWhatYouAreToHerGame/Assets/UI Toolkit.meta
Normal file
8
SheKnowsWhatYouAreToHerGame/Assets/UI Toolkit.meta
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bb9fc07297e15464197739d788c8fea2
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
SheKnowsWhatYouAreToHerGame/Assets/UI Toolkit/Audio.meta
Normal file
8
SheKnowsWhatYouAreToHerGame/Assets/UI Toolkit/Audio.meta
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: defc43d152e23014695858efe162a59e
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
SheKnowsWhatYouAreToHerGame/Assets/UI Toolkit/Fonts.meta
Normal file
8
SheKnowsWhatYouAreToHerGame/Assets/UI Toolkit/Fonts.meta
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6ab70aee4d56447429c680537fbf93ed
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,21 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4ed76fc5403d4cf46abb40fe85a81eeb
|
||||||
|
TrueTypeFontImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 4
|
||||||
|
fontSize: 16
|
||||||
|
forceTextureCase: -2
|
||||||
|
characterSpacing: 0
|
||||||
|
characterPadding: 1
|
||||||
|
includeFontData: 1
|
||||||
|
fontNames:
|
||||||
|
- Acrylic
|
||||||
|
fallbackFontReferences: []
|
||||||
|
customCharacters:
|
||||||
|
fontRenderingMode: 0
|
||||||
|
ascentCalculationMode: 1
|
||||||
|
useLegacyBoundsCalculation: 0
|
||||||
|
shouldRoundAdvanceValue: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c8274c96b92a1e04d8ff066162cf17e5
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,90 @@
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6b4df8918dfb17942b0b8b324bfc4897
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8de84222719caea4ab2fce3f9bad631a
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,21 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 56fb7208f6fbf114ab41edff1fb1f106
|
||||||
|
TrueTypeFontImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 4
|
||||||
|
fontSize: 16
|
||||||
|
forceTextureCase: -2
|
||||||
|
characterSpacing: 0
|
||||||
|
characterPadding: 1
|
||||||
|
includeFontData: 1
|
||||||
|
fontNames:
|
||||||
|
- Format
|
||||||
|
fallbackFontReferences: []
|
||||||
|
customCharacters:
|
||||||
|
fontRenderingMode: 0
|
||||||
|
ascentCalculationMode: 1
|
||||||
|
useLegacyBoundsCalculation: 0
|
||||||
|
shouldRoundAdvanceValue: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,103 @@
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
SIL Open Font License v1.1
|
||||||
|
====================================================
|
||||||
|
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
----------
|
||||||
|
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
|
||||||
|
Definitions
|
||||||
|
-------------
|
||||||
|
|
||||||
|
`"Font Software"` refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
`"Reserved Font Name"` refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
`"Original Version"` refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
`"Modified Version"` refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
`"Author"` refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
|
||||||
|
Permission & Conditions
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1. Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2. Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3. No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5. The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
|
||||||
|
Termination
|
||||||
|
-----------
|
||||||
|
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue