├── README.md ├── Gradient.png ├── Sample.unity.meta ├── UILineRenderer.cs.meta ├── LICENSE ├── Gradient.png.meta ├── UILineRenderer.cs └── Sample.unity /README.md: -------------------------------------------------------------------------------- 1 | Use the .unitypackage file for easy importing into your project 2 | -------------------------------------------------------------------------------- /Gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Radishmouse22/UILineRenderer/HEAD/Gradient.png -------------------------------------------------------------------------------- /Sample.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fc0d4010bbf28b4594072e72b8655ab 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /UILineRenderer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b33b2e663e78774c9f0c9af55018725 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Radishmouse22 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Gradient.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 980e274b7ed2de945bdefcc1d0423472 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 0 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 8 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Server 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | spriteSheet: 110 | serializedVersion: 2 111 | sprites: [] 112 | outline: [] 113 | physicsShape: [] 114 | bones: [] 115 | spriteID: 5e97eb03825dee720800000000000000 116 | internalID: 0 117 | vertices: [] 118 | indices: 119 | edges: [] 120 | weights: [] 121 | secondaryTextures: [] 122 | nameFileIdTable: {} 123 | mipmapLimitGroupName: 124 | pSDRemoveMatte: 0 125 | userData: 126 | assetBundleName: 127 | assetBundleVariant: 128 | -------------------------------------------------------------------------------- /UILineRenderer.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | 4 | namespace Radishmouse 5 | { 6 | [RequireComponent(typeof(CanvasRenderer))] 7 | public class UILineRenderer : MaskableGraphic 8 | { 9 | public Vector2[] points; 10 | 11 | public float thickness = 10f; 12 | public bool center = true; 13 | 14 | protected override void OnPopulateMesh(VertexHelper vh) 15 | { 16 | vh.Clear(); 17 | 18 | if (points.Length < 2) 19 | return; 20 | 21 | for (int i = 0; i < points.Length-1; i++) 22 | { 23 | // Create a line segment between the next two points 24 | CreateLineSegment(points[i], points[i+1], vh); 25 | 26 | int index = i * 5; 27 | 28 | // Add the line segment to the triangles array 29 | vh.AddTriangle(index, index+1, index+3); 30 | vh.AddTriangle(index+3, index+2, index); 31 | 32 | // These two triangles create the beveled edges 33 | // between line segments using the end point of 34 | // the last line segment and the start points of this one 35 | if (i != 0) 36 | { 37 | vh.AddTriangle(index, index-1, index-3); 38 | vh.AddTriangle(index+1, index-1, index-2); 39 | } 40 | } 41 | } 42 | 43 | /// 44 | /// Creates a rect from two points that acts as a line segment 45 | /// 46 | /// The starting point of the segment 47 | /// The endint point of the segment 48 | /// The vertex helper that the segment is added to 49 | private void CreateLineSegment(Vector3 point1, Vector3 point2, VertexHelper vh) 50 | { 51 | Vector3 offset = center ? (rectTransform.sizeDelta / 2) : Vector2.zero; 52 | 53 | // Create vertex template 54 | UIVertex vertex = UIVertex.simpleVert; 55 | vertex.color = color; 56 | 57 | // Create the start of the segment 58 | Quaternion point1Rotation = Quaternion.Euler(0, 0, RotatePointTowards(point1, point2) + 90); 59 | vertex.position = point1Rotation * new Vector3(-thickness / 2, 0); 60 | vertex.position += point1 - offset; 61 | vh.AddVert(vertex); 62 | vertex.position = point1Rotation * new Vector3(thickness / 2, 0); 63 | vertex.position += point1 - offset; 64 | vh.AddVert(vertex); 65 | 66 | // Create the end of the segment 67 | Quaternion point2Rotation = Quaternion.Euler(0, 0, RotatePointTowards(point2, point1) - 90); 68 | vertex.position = point2Rotation * new Vector3(-thickness / 2, 0); 69 | vertex.position += point2 - offset; 70 | vh.AddVert(vertex); 71 | vertex.position = point2Rotation * new Vector3(thickness / 2, 0); 72 | vertex.position += point2 - offset; 73 | vh.AddVert(vertex); 74 | 75 | // Also add the end point 76 | vertex.position = point2 - offset; 77 | vh.AddVert(vertex); 78 | } 79 | 80 | /// 81 | /// Gets the angle that a vertex needs to rotate to face target vertex 82 | /// 83 | /// The vertex being rotated 84 | /// The vertex to rotate towards 85 | /// The angle required to rotate vertex towards target 86 | private float RotatePointTowards(Vector2 vertex, Vector2 target) 87 | { 88 | return (float)(Mathf.Atan2(target.y - vertex.y, target.x - vertex.x) * (180 / Mathf.PI)); 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /Sample.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 705507994} 41 | m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641275, b: 0.5748172, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 500 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 2 83 | m_PVRDenoiserTypeDirect: 0 84 | m_PVRDenoiserTypeIndirect: 0 85 | m_PVRDenoiserTypeAO: 0 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 0 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_LightingSettings: {fileID: 0} 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 3 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | buildHeightMesh: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | --- !u!1 &246206081 127 | GameObject: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | serializedVersion: 6 133 | m_Component: 134 | - component: {fileID: 246206082} 135 | - component: {fileID: 246206084} 136 | - component: {fileID: 246206083} 137 | m_Layer: 5 138 | m_Name: LineRenderer 139 | m_TagString: Untagged 140 | m_Icon: {fileID: 0} 141 | m_NavMeshLayer: 0 142 | m_StaticEditorFlags: 0 143 | m_IsActive: 1 144 | --- !u!224 &246206082 145 | RectTransform: 146 | m_ObjectHideFlags: 0 147 | m_CorrespondingSourceObject: {fileID: 0} 148 | m_PrefabInstance: {fileID: 0} 149 | m_PrefabAsset: {fileID: 0} 150 | m_GameObject: {fileID: 246206081} 151 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 152 | m_LocalPosition: {x: 0, y: 0, z: 0} 153 | m_LocalScale: {x: 1.5, y: 1.5, z: 1.5} 154 | m_ConstrainProportionsScale: 1 155 | m_Children: [] 156 | m_Father: {fileID: 387643621} 157 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 158 | m_AnchorMin: {x: 0.5, y: 0.5} 159 | m_AnchorMax: {x: 0.5, y: 0.5} 160 | m_AnchoredPosition: {x: 0, y: 0} 161 | m_SizeDelta: {x: 1000, y: 300} 162 | m_Pivot: {x: 0.5, y: 0.5} 163 | --- !u!114 &246206083 164 | MonoBehaviour: 165 | m_ObjectHideFlags: 0 166 | m_CorrespondingSourceObject: {fileID: 0} 167 | m_PrefabInstance: {fileID: 0} 168 | m_PrefabAsset: {fileID: 0} 169 | m_GameObject: {fileID: 246206081} 170 | m_Enabled: 1 171 | m_EditorHideFlags: 0 172 | m_Script: {fileID: 11500000, guid: 5b33b2e663e78774c9f0c9af55018725, type: 3} 173 | m_Name: 174 | m_EditorClassIdentifier: 175 | m_Material: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 176 | m_Color: {r: 1, g: 1, b: 1, a: 1} 177 | m_RaycastTarget: 1 178 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} 179 | points: 180 | - {x: 0, y: 0} 181 | - {x: 58.7, y: 138.4} 182 | - {x: 125.1, y: 80.6} 183 | - {x: 238.9, y: 300} 184 | - {x: 354, y: 100} 185 | - {x: 512.2, y: 70} 186 | - {x: 716.1, y: 192.5} 187 | - {x: 938.8, y: 3.85} 188 | - {x: 1000, y: 133} 189 | thickness: 20 190 | center: 1 191 | --- !u!222 &246206084 192 | CanvasRenderer: 193 | m_ObjectHideFlags: 0 194 | m_CorrespondingSourceObject: {fileID: 0} 195 | m_PrefabInstance: {fileID: 0} 196 | m_PrefabAsset: {fileID: 0} 197 | m_GameObject: {fileID: 246206081} 198 | m_CullTransparentMesh: 1 199 | --- !u!1 &387643617 200 | GameObject: 201 | m_ObjectHideFlags: 0 202 | m_CorrespondingSourceObject: {fileID: 0} 203 | m_PrefabInstance: {fileID: 0} 204 | m_PrefabAsset: {fileID: 0} 205 | serializedVersion: 6 206 | m_Component: 207 | - component: {fileID: 387643621} 208 | - component: {fileID: 387643620} 209 | - component: {fileID: 387643619} 210 | - component: {fileID: 387643618} 211 | m_Layer: 5 212 | m_Name: Canvas 213 | m_TagString: Untagged 214 | m_Icon: {fileID: 0} 215 | m_NavMeshLayer: 0 216 | m_StaticEditorFlags: 0 217 | m_IsActive: 1 218 | --- !u!114 &387643618 219 | MonoBehaviour: 220 | m_ObjectHideFlags: 0 221 | m_CorrespondingSourceObject: {fileID: 0} 222 | m_PrefabInstance: {fileID: 0} 223 | m_PrefabAsset: {fileID: 0} 224 | m_GameObject: {fileID: 387643617} 225 | m_Enabled: 1 226 | m_EditorHideFlags: 0 227 | m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} 228 | m_Name: 229 | m_EditorClassIdentifier: 230 | m_IgnoreReversedGraphics: 1 231 | m_BlockingObjects: 0 232 | m_BlockingMask: 233 | serializedVersion: 2 234 | m_Bits: 4294967295 235 | --- !u!114 &387643619 236 | MonoBehaviour: 237 | m_ObjectHideFlags: 0 238 | m_CorrespondingSourceObject: {fileID: 0} 239 | m_PrefabInstance: {fileID: 0} 240 | m_PrefabAsset: {fileID: 0} 241 | m_GameObject: {fileID: 387643617} 242 | m_Enabled: 1 243 | m_EditorHideFlags: 0 244 | m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} 245 | m_Name: 246 | m_EditorClassIdentifier: 247 | m_UiScaleMode: 1 248 | m_ReferencePixelsPerUnit: 100 249 | m_ScaleFactor: 1 250 | m_ReferenceResolution: {x: 1920, y: 1080} 251 | m_ScreenMatchMode: 0 252 | m_MatchWidthOrHeight: 0 253 | m_PhysicalUnit: 3 254 | m_FallbackScreenDPI: 96 255 | m_DefaultSpriteDPI: 96 256 | m_DynamicPixelsPerUnit: 1 257 | m_PresetInfoIsWorld: 0 258 | --- !u!223 &387643620 259 | Canvas: 260 | m_ObjectHideFlags: 0 261 | m_CorrespondingSourceObject: {fileID: 0} 262 | m_PrefabInstance: {fileID: 0} 263 | m_PrefabAsset: {fileID: 0} 264 | m_GameObject: {fileID: 387643617} 265 | m_Enabled: 1 266 | serializedVersion: 3 267 | m_RenderMode: 0 268 | m_Camera: {fileID: 0} 269 | m_PlaneDistance: 100 270 | m_PixelPerfect: 0 271 | m_ReceivesEvents: 1 272 | m_OverrideSorting: 0 273 | m_OverridePixelPerfect: 0 274 | m_SortingBucketNormalizedSize: 0 275 | m_VertexColorAlwaysGammaSpace: 0 276 | m_AdditionalShaderChannelsFlag: 0 277 | m_UpdateRectTransformForStandalone: 0 278 | m_SortingLayerID: 0 279 | m_SortingOrder: 0 280 | m_TargetDisplay: 0 281 | --- !u!224 &387643621 282 | RectTransform: 283 | m_ObjectHideFlags: 0 284 | m_CorrespondingSourceObject: {fileID: 0} 285 | m_PrefabInstance: {fileID: 0} 286 | m_PrefabAsset: {fileID: 0} 287 | m_GameObject: {fileID: 387643617} 288 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 289 | m_LocalPosition: {x: 0, y: 0, z: 0} 290 | m_LocalScale: {x: 0, y: 0, z: 0} 291 | m_ConstrainProportionsScale: 0 292 | m_Children: 293 | - {fileID: 1231462426} 294 | - {fileID: 246206082} 295 | m_Father: {fileID: 0} 296 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 297 | m_AnchorMin: {x: 0, y: 0} 298 | m_AnchorMax: {x: 0, y: 0} 299 | m_AnchoredPosition: {x: 0, y: 0} 300 | m_SizeDelta: {x: 0, y: 0} 301 | m_Pivot: {x: 0, y: 0} 302 | --- !u!1 &705507993 303 | GameObject: 304 | m_ObjectHideFlags: 0 305 | m_CorrespondingSourceObject: {fileID: 0} 306 | m_PrefabInstance: {fileID: 0} 307 | m_PrefabAsset: {fileID: 0} 308 | serializedVersion: 6 309 | m_Component: 310 | - component: {fileID: 705507995} 311 | - component: {fileID: 705507994} 312 | m_Layer: 0 313 | m_Name: Directional Light 314 | m_TagString: Untagged 315 | m_Icon: {fileID: 0} 316 | m_NavMeshLayer: 0 317 | m_StaticEditorFlags: 0 318 | m_IsActive: 1 319 | --- !u!108 &705507994 320 | Light: 321 | m_ObjectHideFlags: 0 322 | m_CorrespondingSourceObject: {fileID: 0} 323 | m_PrefabInstance: {fileID: 0} 324 | m_PrefabAsset: {fileID: 0} 325 | m_GameObject: {fileID: 705507993} 326 | m_Enabled: 1 327 | serializedVersion: 10 328 | m_Type: 1 329 | m_Shape: 0 330 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 331 | m_Intensity: 1 332 | m_Range: 10 333 | m_SpotAngle: 30 334 | m_InnerSpotAngle: 21.80208 335 | m_CookieSize: 10 336 | m_Shadows: 337 | m_Type: 2 338 | m_Resolution: -1 339 | m_CustomResolution: -1 340 | m_Strength: 1 341 | m_Bias: 0.05 342 | m_NormalBias: 0.4 343 | m_NearPlane: 0.2 344 | m_CullingMatrixOverride: 345 | e00: 1 346 | e01: 0 347 | e02: 0 348 | e03: 0 349 | e10: 0 350 | e11: 1 351 | e12: 0 352 | e13: 0 353 | e20: 0 354 | e21: 0 355 | e22: 1 356 | e23: 0 357 | e30: 0 358 | e31: 0 359 | e32: 0 360 | e33: 1 361 | m_UseCullingMatrixOverride: 0 362 | m_Cookie: {fileID: 0} 363 | m_DrawHalo: 0 364 | m_Flare: {fileID: 0} 365 | m_RenderMode: 0 366 | m_CullingMask: 367 | serializedVersion: 2 368 | m_Bits: 4294967295 369 | m_RenderingLayerMask: 1 370 | m_Lightmapping: 1 371 | m_LightShadowCasterMode: 0 372 | m_AreaSize: {x: 1, y: 1} 373 | m_BounceIntensity: 1 374 | m_ColorTemperature: 6570 375 | m_UseColorTemperature: 0 376 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 377 | m_UseBoundingSphereOverride: 0 378 | m_UseViewFrustumForShadowCasterCull: 1 379 | m_ShadowRadius: 0 380 | m_ShadowAngle: 0 381 | --- !u!4 &705507995 382 | Transform: 383 | m_ObjectHideFlags: 0 384 | m_CorrespondingSourceObject: {fileID: 0} 385 | m_PrefabInstance: {fileID: 0} 386 | m_PrefabAsset: {fileID: 0} 387 | m_GameObject: {fileID: 705507993} 388 | serializedVersion: 2 389 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 390 | m_LocalPosition: {x: 0, y: 3, z: 0} 391 | m_LocalScale: {x: 1, y: 1, z: 1} 392 | m_ConstrainProportionsScale: 0 393 | m_Children: [] 394 | m_Father: {fileID: 0} 395 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 396 | --- !u!1 &963194225 397 | GameObject: 398 | m_ObjectHideFlags: 0 399 | m_CorrespondingSourceObject: {fileID: 0} 400 | m_PrefabInstance: {fileID: 0} 401 | m_PrefabAsset: {fileID: 0} 402 | serializedVersion: 6 403 | m_Component: 404 | - component: {fileID: 963194228} 405 | - component: {fileID: 963194227} 406 | - component: {fileID: 963194226} 407 | m_Layer: 0 408 | m_Name: Main Camera 409 | m_TagString: MainCamera 410 | m_Icon: {fileID: 0} 411 | m_NavMeshLayer: 0 412 | m_StaticEditorFlags: 0 413 | m_IsActive: 1 414 | --- !u!81 &963194226 415 | AudioListener: 416 | m_ObjectHideFlags: 0 417 | m_CorrespondingSourceObject: {fileID: 0} 418 | m_PrefabInstance: {fileID: 0} 419 | m_PrefabAsset: {fileID: 0} 420 | m_GameObject: {fileID: 963194225} 421 | m_Enabled: 1 422 | --- !u!20 &963194227 423 | Camera: 424 | m_ObjectHideFlags: 0 425 | m_CorrespondingSourceObject: {fileID: 0} 426 | m_PrefabInstance: {fileID: 0} 427 | m_PrefabAsset: {fileID: 0} 428 | m_GameObject: {fileID: 963194225} 429 | m_Enabled: 1 430 | serializedVersion: 2 431 | m_ClearFlags: 1 432 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 433 | m_projectionMatrixMode: 1 434 | m_GateFitMode: 2 435 | m_FOVAxisMode: 0 436 | m_Iso: 200 437 | m_ShutterSpeed: 0.005 438 | m_Aperture: 16 439 | m_FocusDistance: 10 440 | m_FocalLength: 50 441 | m_BladeCount: 5 442 | m_Curvature: {x: 2, y: 11} 443 | m_BarrelClipping: 0.25 444 | m_Anamorphism: 0 445 | m_SensorSize: {x: 36, y: 24} 446 | m_LensShift: {x: 0, y: 0} 447 | m_NormalizedViewPortRect: 448 | serializedVersion: 2 449 | x: 0 450 | y: 0 451 | width: 1 452 | height: 1 453 | near clip plane: 0.3 454 | far clip plane: 1000 455 | field of view: 60 456 | orthographic: 0 457 | orthographic size: 5 458 | m_Depth: -1 459 | m_CullingMask: 460 | serializedVersion: 2 461 | m_Bits: 4294967295 462 | m_RenderingPath: -1 463 | m_TargetTexture: {fileID: 0} 464 | m_TargetDisplay: 0 465 | m_TargetEye: 3 466 | m_HDR: 1 467 | m_AllowMSAA: 1 468 | m_AllowDynamicResolution: 0 469 | m_ForceIntoRT: 0 470 | m_OcclusionCulling: 1 471 | m_StereoConvergence: 10 472 | m_StereoSeparation: 0.022 473 | --- !u!4 &963194228 474 | Transform: 475 | m_ObjectHideFlags: 0 476 | m_CorrespondingSourceObject: {fileID: 0} 477 | m_PrefabInstance: {fileID: 0} 478 | m_PrefabAsset: {fileID: 0} 479 | m_GameObject: {fileID: 963194225} 480 | serializedVersion: 2 481 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 482 | m_LocalPosition: {x: 0, y: 1, z: -10} 483 | m_LocalScale: {x: 1, y: 1, z: 1} 484 | m_ConstrainProportionsScale: 0 485 | m_Children: [] 486 | m_Father: {fileID: 0} 487 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 488 | --- !u!1 &1231462425 489 | GameObject: 490 | m_ObjectHideFlags: 0 491 | m_CorrespondingSourceObject: {fileID: 0} 492 | m_PrefabInstance: {fileID: 0} 493 | m_PrefabAsset: {fileID: 0} 494 | serializedVersion: 6 495 | m_Component: 496 | - component: {fileID: 1231462426} 497 | - component: {fileID: 1231462428} 498 | - component: {fileID: 1231462427} 499 | m_Layer: 5 500 | m_Name: Background 501 | m_TagString: Untagged 502 | m_Icon: {fileID: 0} 503 | m_NavMeshLayer: 0 504 | m_StaticEditorFlags: 0 505 | m_IsActive: 1 506 | --- !u!224 &1231462426 507 | RectTransform: 508 | m_ObjectHideFlags: 0 509 | m_CorrespondingSourceObject: {fileID: 0} 510 | m_PrefabInstance: {fileID: 0} 511 | m_PrefabAsset: {fileID: 0} 512 | m_GameObject: {fileID: 1231462425} 513 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 514 | m_LocalPosition: {x: 0, y: 0, z: 0} 515 | m_LocalScale: {x: 1, y: 1, z: 1} 516 | m_ConstrainProportionsScale: 1 517 | m_Children: [] 518 | m_Father: {fileID: 387643621} 519 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 520 | m_AnchorMin: {x: 0, y: 0} 521 | m_AnchorMax: {x: 1, y: 1} 522 | m_AnchoredPosition: {x: 0, y: 0} 523 | m_SizeDelta: {x: 0, y: 0} 524 | m_Pivot: {x: 0.5, y: 0.5} 525 | --- !u!114 &1231462427 526 | MonoBehaviour: 527 | m_ObjectHideFlags: 0 528 | m_CorrespondingSourceObject: {fileID: 0} 529 | m_PrefabInstance: {fileID: 0} 530 | m_PrefabAsset: {fileID: 0} 531 | m_GameObject: {fileID: 1231462425} 532 | m_Enabled: 1 533 | m_EditorHideFlags: 0 534 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 535 | m_Name: 536 | m_EditorClassIdentifier: 537 | m_Material: {fileID: 0} 538 | m_Color: {r: 1, g: 1, b: 1, a: 1} 539 | m_RaycastTarget: 1 540 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} 541 | m_Maskable: 1 542 | m_OnCullStateChanged: 543 | m_PersistentCalls: 544 | m_Calls: [] 545 | m_Sprite: {fileID: 21300000, guid: 980e274b7ed2de945bdefcc1d0423472, type: 3} 546 | m_Type: 0 547 | m_PreserveAspect: 0 548 | m_FillCenter: 1 549 | m_FillMethod: 4 550 | m_FillAmount: 1 551 | m_FillClockwise: 1 552 | m_FillOrigin: 0 553 | m_UseSpriteMesh: 0 554 | m_PixelsPerUnitMultiplier: 1 555 | --- !u!222 &1231462428 556 | CanvasRenderer: 557 | m_ObjectHideFlags: 0 558 | m_CorrespondingSourceObject: {fileID: 0} 559 | m_PrefabInstance: {fileID: 0} 560 | m_PrefabAsset: {fileID: 0} 561 | m_GameObject: {fileID: 1231462425} 562 | m_CullTransparentMesh: 1 563 | --- !u!1 &1721653935 564 | GameObject: 565 | m_ObjectHideFlags: 0 566 | m_CorrespondingSourceObject: {fileID: 0} 567 | m_PrefabInstance: {fileID: 0} 568 | m_PrefabAsset: {fileID: 0} 569 | serializedVersion: 6 570 | m_Component: 571 | - component: {fileID: 1721653938} 572 | - component: {fileID: 1721653937} 573 | - component: {fileID: 1721653936} 574 | m_Layer: 0 575 | m_Name: EventSystem 576 | m_TagString: Untagged 577 | m_Icon: {fileID: 0} 578 | m_NavMeshLayer: 0 579 | m_StaticEditorFlags: 0 580 | m_IsActive: 1 581 | --- !u!114 &1721653936 582 | MonoBehaviour: 583 | m_ObjectHideFlags: 0 584 | m_CorrespondingSourceObject: {fileID: 0} 585 | m_PrefabInstance: {fileID: 0} 586 | m_PrefabAsset: {fileID: 0} 587 | m_GameObject: {fileID: 1721653935} 588 | m_Enabled: 1 589 | m_EditorHideFlags: 0 590 | m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} 591 | m_Name: 592 | m_EditorClassIdentifier: 593 | m_SendPointerHoverToParent: 1 594 | m_HorizontalAxis: Horizontal 595 | m_VerticalAxis: Vertical 596 | m_SubmitButton: Submit 597 | m_CancelButton: Cancel 598 | m_InputActionsPerSecond: 10 599 | m_RepeatDelay: 0.5 600 | m_ForceModuleActive: 0 601 | --- !u!114 &1721653937 602 | MonoBehaviour: 603 | m_ObjectHideFlags: 0 604 | m_CorrespondingSourceObject: {fileID: 0} 605 | m_PrefabInstance: {fileID: 0} 606 | m_PrefabAsset: {fileID: 0} 607 | m_GameObject: {fileID: 1721653935} 608 | m_Enabled: 1 609 | m_EditorHideFlags: 0 610 | m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} 611 | m_Name: 612 | m_EditorClassIdentifier: 613 | m_FirstSelected: {fileID: 0} 614 | m_sendNavigationEvents: 1 615 | m_DragThreshold: 10 616 | --- !u!4 &1721653938 617 | Transform: 618 | m_ObjectHideFlags: 0 619 | m_CorrespondingSourceObject: {fileID: 0} 620 | m_PrefabInstance: {fileID: 0} 621 | m_PrefabAsset: {fileID: 0} 622 | m_GameObject: {fileID: 1721653935} 623 | serializedVersion: 2 624 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 625 | m_LocalPosition: {x: 0, y: 0, z: 0} 626 | m_LocalScale: {x: 1, y: 1, z: 1} 627 | m_ConstrainProportionsScale: 0 628 | m_Children: [] 629 | m_Father: {fileID: 0} 630 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 631 | --- !u!1660057539 &9223372036854775807 632 | SceneRoots: 633 | m_ObjectHideFlags: 0 634 | m_Roots: 635 | - {fileID: 963194228} 636 | - {fileID: 705507995} 637 | - {fileID: 387643621} 638 | - {fileID: 1721653938} 639 | --------------------------------------------------------------------------------