├── LICENSE ├── Prefabs.meta ├── Prefabs ├── MyCube.prefab ├── MyCube.prefab.meta ├── TargetIndicator.prefab └── TargetIndicator.prefab.meta ├── Scenes.meta ├── Scenes ├── SampleScene.unity └── SampleScene.unity.meta ├── Scripts.meta ├── Scripts ├── CameraMover.cs ├── CameraMover.cs.meta ├── TargetIndicator.cs ├── TargetIndicator.cs.meta ├── TargetObject.cs ├── TargetObject.cs.meta ├── UIController.cs └── UIController.cs.meta ├── Sprites.meta └── Sprites ├── Selector1.png ├── Selector1.png.meta ├── Triangle.png └── Triangle.png.meta /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bfcde2a05af22df4b8c13c8d2cad35ab 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Prefabs/MyCube.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &580641362088427726 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 2435326170668768601} 12 | - component: {fileID: 3192333127360200487} 13 | - component: {fileID: 876010895851414989} 14 | - component: {fileID: 9043893791313078508} 15 | - component: {fileID: 6650760627319185348} 16 | m_Layer: 0 17 | m_Name: MyCube 18 | m_TagString: Untagged 19 | m_Icon: {fileID: 0} 20 | m_NavMeshLayer: 0 21 | m_StaticEditorFlags: 0 22 | m_IsActive: 1 23 | --- !u!4 &2435326170668768601 24 | Transform: 25 | m_ObjectHideFlags: 0 26 | m_CorrespondingSourceObject: {fileID: 0} 27 | m_PrefabInstance: {fileID: 0} 28 | m_PrefabAsset: {fileID: 0} 29 | m_GameObject: {fileID: 580641362088427726} 30 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 31 | m_LocalPosition: {x: 0, y: 0, z: 0} 32 | m_LocalScale: {x: 1, y: 1, z: 1} 33 | m_Children: [] 34 | m_Father: {fileID: 0} 35 | m_RootOrder: 0 36 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 37 | --- !u!33 &3192333127360200487 38 | MeshFilter: 39 | m_ObjectHideFlags: 0 40 | m_CorrespondingSourceObject: {fileID: 0} 41 | m_PrefabInstance: {fileID: 0} 42 | m_PrefabAsset: {fileID: 0} 43 | m_GameObject: {fileID: 580641362088427726} 44 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 45 | --- !u!23 &876010895851414989 46 | MeshRenderer: 47 | m_ObjectHideFlags: 0 48 | m_CorrespondingSourceObject: {fileID: 0} 49 | m_PrefabInstance: {fileID: 0} 50 | m_PrefabAsset: {fileID: 0} 51 | m_GameObject: {fileID: 580641362088427726} 52 | m_Enabled: 1 53 | m_CastShadows: 1 54 | m_ReceiveShadows: 1 55 | m_DynamicOccludee: 1 56 | m_MotionVectors: 1 57 | m_LightProbeUsage: 1 58 | m_ReflectionProbeUsage: 1 59 | m_RayTracingMode: 2 60 | m_RenderingLayerMask: 1 61 | m_RendererPriority: 0 62 | m_Materials: 63 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 64 | m_StaticBatchInfo: 65 | firstSubMesh: 0 66 | subMeshCount: 0 67 | m_StaticBatchRoot: {fileID: 0} 68 | m_ProbeAnchor: {fileID: 0} 69 | m_LightProbeVolumeOverride: {fileID: 0} 70 | m_ScaleInLightmap: 1 71 | m_ReceiveGI: 1 72 | m_PreserveUVs: 0 73 | m_IgnoreNormalsForChartDetection: 0 74 | m_ImportantGI: 0 75 | m_StitchLightmapSeams: 1 76 | m_SelectedEditorRenderState: 3 77 | m_MinimumChartSize: 4 78 | m_AutoUVMaxDistance: 0.5 79 | m_AutoUVMaxAngle: 89 80 | m_LightmapParameters: {fileID: 0} 81 | m_SortingLayerID: 0 82 | m_SortingLayer: 0 83 | m_SortingOrder: 0 84 | --- !u!65 &9043893791313078508 85 | BoxCollider: 86 | m_ObjectHideFlags: 0 87 | m_CorrespondingSourceObject: {fileID: 0} 88 | m_PrefabInstance: {fileID: 0} 89 | m_PrefabAsset: {fileID: 0} 90 | m_GameObject: {fileID: 580641362088427726} 91 | m_Material: {fileID: 0} 92 | m_IsTrigger: 0 93 | m_Enabled: 1 94 | serializedVersion: 2 95 | m_Size: {x: 1, y: 1, z: 1} 96 | m_Center: {x: 0, y: 0, z: 0} 97 | --- !u!114 &6650760627319185348 98 | MonoBehaviour: 99 | m_ObjectHideFlags: 0 100 | m_CorrespondingSourceObject: {fileID: 0} 101 | m_PrefabInstance: {fileID: 0} 102 | m_PrefabAsset: {fileID: 0} 103 | m_GameObject: {fileID: 580641362088427726} 104 | m_Enabled: 1 105 | m_EditorHideFlags: 0 106 | m_Script: {fileID: 11500000, guid: 619d7048367c2f64896e873fc02c101c, type: 3} 107 | m_Name: 108 | m_EditorClassIdentifier: 109 | -------------------------------------------------------------------------------- /Prefabs/MyCube.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ebd2b9caba325cd46b00399d5949c5fd 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Prefabs/TargetIndicator.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &8057716851948084983 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 8057716851948084982} 12 | - component: {fileID: 8057716851948084976} 13 | - component: {fileID: 8057716851948084977} 14 | - component: {fileID: 8057716851948084979} 15 | m_Layer: 5 16 | m_Name: TargetIndicator 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!224 &8057716851948084982 23 | RectTransform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 8057716851948084983} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: 0, y: 0, z: 0} 31 | m_LocalScale: {x: 1, y: 1, z: 1} 32 | m_Children: 33 | - {fileID: 8057716852082733841} 34 | m_Father: {fileID: 0} 35 | m_RootOrder: 0 36 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 37 | m_AnchorMin: {x: 0.5, y: 0.5} 38 | m_AnchorMax: {x: 0.5, y: 0.5} 39 | m_AnchoredPosition: {x: 0, y: 0} 40 | m_SizeDelta: {x: 50, y: 50} 41 | m_Pivot: {x: 0.5, y: 0.5} 42 | --- !u!222 &8057716851948084976 43 | CanvasRenderer: 44 | m_ObjectHideFlags: 0 45 | m_CorrespondingSourceObject: {fileID: 0} 46 | m_PrefabInstance: {fileID: 0} 47 | m_PrefabAsset: {fileID: 0} 48 | m_GameObject: {fileID: 8057716851948084983} 49 | m_CullTransparentMesh: 0 50 | --- !u!114 &8057716851948084977 51 | MonoBehaviour: 52 | m_ObjectHideFlags: 0 53 | m_CorrespondingSourceObject: {fileID: 0} 54 | m_PrefabInstance: {fileID: 0} 55 | m_PrefabAsset: {fileID: 0} 56 | m_GameObject: {fileID: 8057716851948084983} 57 | m_Enabled: 1 58 | m_EditorHideFlags: 0 59 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 60 | m_Name: 61 | m_EditorClassIdentifier: 62 | m_Material: {fileID: 0} 63 | m_Color: {r: 1, g: 0.015686275, b: 0.2, a: 1} 64 | m_RaycastTarget: 1 65 | m_Maskable: 1 66 | m_OnCullStateChanged: 67 | m_PersistentCalls: 68 | m_Calls: [] 69 | m_Sprite: {fileID: 21300000, guid: 750c8ccd0f0370f4ebd7a1dc892bc4a5, type: 3} 70 | m_Type: 0 71 | m_PreserveAspect: 0 72 | m_FillCenter: 1 73 | m_FillMethod: 4 74 | m_FillAmount: 1 75 | m_FillClockwise: 1 76 | m_FillOrigin: 0 77 | m_UseSpriteMesh: 0 78 | m_PixelsPerUnitMultiplier: 1 79 | --- !u!114 &8057716851948084979 80 | MonoBehaviour: 81 | m_ObjectHideFlags: 0 82 | m_CorrespondingSourceObject: {fileID: 0} 83 | m_PrefabInstance: {fileID: 0} 84 | m_PrefabAsset: {fileID: 0} 85 | m_GameObject: {fileID: 8057716851948084983} 86 | m_Enabled: 1 87 | m_EditorHideFlags: 0 88 | m_Script: {fileID: 11500000, guid: 69d79d1a43715f74abffecf70ab9affe, type: 3} 89 | m_Name: 90 | m_EditorClassIdentifier: 91 | TargetIndicatorImage: {fileID: 8057716851948084977} 92 | OffScreenTargetIndicator: {fileID: 8057716852082733840} 93 | OutOfSightOffset: 15 94 | --- !u!1 &8057716852082733846 95 | GameObject: 96 | m_ObjectHideFlags: 0 97 | m_CorrespondingSourceObject: {fileID: 0} 98 | m_PrefabInstance: {fileID: 0} 99 | m_PrefabAsset: {fileID: 0} 100 | serializedVersion: 6 101 | m_Component: 102 | - component: {fileID: 8057716852082733841} 103 | - component: {fileID: 8057716852082733843} 104 | - component: {fileID: 8057716852082733840} 105 | m_Layer: 5 106 | m_Name: OffScreenTargetIndicator 107 | m_TagString: Untagged 108 | m_Icon: {fileID: 0} 109 | m_NavMeshLayer: 0 110 | m_StaticEditorFlags: 0 111 | m_IsActive: 1 112 | --- !u!224 &8057716852082733841 113 | RectTransform: 114 | m_ObjectHideFlags: 0 115 | m_CorrespondingSourceObject: {fileID: 0} 116 | m_PrefabInstance: {fileID: 0} 117 | m_PrefabAsset: {fileID: 0} 118 | m_GameObject: {fileID: 8057716852082733846} 119 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 120 | m_LocalPosition: {x: 0, y: 0, z: 0} 121 | m_LocalScale: {x: 1, y: 1, z: 1} 122 | m_Children: [] 123 | m_Father: {fileID: 8057716851948084982} 124 | m_RootOrder: 0 125 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 126 | m_AnchorMin: {x: 0.5, y: 0.5} 127 | m_AnchorMax: {x: 0.5, y: 0.5} 128 | m_AnchoredPosition: {x: 0, y: 0} 129 | m_SizeDelta: {x: 20, y: 30} 130 | m_Pivot: {x: 0.5, y: 0.5} 131 | --- !u!222 &8057716852082733843 132 | CanvasRenderer: 133 | m_ObjectHideFlags: 0 134 | m_CorrespondingSourceObject: {fileID: 0} 135 | m_PrefabInstance: {fileID: 0} 136 | m_PrefabAsset: {fileID: 0} 137 | m_GameObject: {fileID: 8057716852082733846} 138 | m_CullTransparentMesh: 0 139 | --- !u!114 &8057716852082733840 140 | MonoBehaviour: 141 | m_ObjectHideFlags: 0 142 | m_CorrespondingSourceObject: {fileID: 0} 143 | m_PrefabInstance: {fileID: 0} 144 | m_PrefabAsset: {fileID: 0} 145 | m_GameObject: {fileID: 8057716852082733846} 146 | m_Enabled: 1 147 | m_EditorHideFlags: 0 148 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 149 | m_Name: 150 | m_EditorClassIdentifier: 151 | m_Material: {fileID: 0} 152 | m_Color: {r: 1, g: 0.0141509175, b: 0.19903429, a: 1} 153 | m_RaycastTarget: 1 154 | m_Maskable: 1 155 | m_OnCullStateChanged: 156 | m_PersistentCalls: 157 | m_Calls: [] 158 | m_Sprite: {fileID: 21300000, guid: f29000640c1f94a458f722ddb05091f3, type: 3} 159 | m_Type: 0 160 | m_PreserveAspect: 0 161 | m_FillCenter: 1 162 | m_FillMethod: 4 163 | m_FillAmount: 1 164 | m_FillClockwise: 1 165 | m_FillOrigin: 0 166 | m_UseSpriteMesh: 0 167 | m_PixelsPerUnitMultiplier: 1 168 | -------------------------------------------------------------------------------- /Prefabs/TargetIndicator.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7fe8c3acc3d4db148a46f165d459aab8 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a0ddd2dd5f7afe041bf41bdda9af3dc1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Scenes/SampleScene.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, g: 0, b: 0, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 11 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_UseShadowmask: 1 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 2 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 | accuratePlacement: 0 121 | debug: 122 | m_Flags: 0 123 | m_NavMeshData: {fileID: 0} 124 | --- !u!1 &59316433 125 | GameObject: 126 | m_ObjectHideFlags: 0 127 | m_CorrespondingSourceObject: {fileID: 0} 128 | m_PrefabInstance: {fileID: 0} 129 | m_PrefabAsset: {fileID: 0} 130 | serializedVersion: 6 131 | m_Component: 132 | - component: {fileID: 59316437} 133 | - component: {fileID: 59316436} 134 | - component: {fileID: 59316435} 135 | - component: {fileID: 59316434} 136 | m_Layer: 5 137 | m_Name: Canvas 138 | m_TagString: Untagged 139 | m_Icon: {fileID: 0} 140 | m_NavMeshLayer: 0 141 | m_StaticEditorFlags: 0 142 | m_IsActive: 1 143 | --- !u!114 &59316434 144 | MonoBehaviour: 145 | m_ObjectHideFlags: 0 146 | m_CorrespondingSourceObject: {fileID: 0} 147 | m_PrefabInstance: {fileID: 0} 148 | m_PrefabAsset: {fileID: 0} 149 | m_GameObject: {fileID: 59316433} 150 | m_Enabled: 1 151 | m_EditorHideFlags: 0 152 | m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} 153 | m_Name: 154 | m_EditorClassIdentifier: 155 | m_IgnoreReversedGraphics: 1 156 | m_BlockingObjects: 0 157 | m_BlockingMask: 158 | serializedVersion: 2 159 | m_Bits: 4294967295 160 | --- !u!114 &59316435 161 | MonoBehaviour: 162 | m_ObjectHideFlags: 0 163 | m_CorrespondingSourceObject: {fileID: 0} 164 | m_PrefabInstance: {fileID: 0} 165 | m_PrefabAsset: {fileID: 0} 166 | m_GameObject: {fileID: 59316433} 167 | m_Enabled: 1 168 | m_EditorHideFlags: 0 169 | m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} 170 | m_Name: 171 | m_EditorClassIdentifier: 172 | m_UiScaleMode: 1 173 | m_ReferencePixelsPerUnit: 100 174 | m_ScaleFactor: 1 175 | m_ReferenceResolution: {x: 800, y: 600} 176 | m_ScreenMatchMode: 0 177 | m_MatchWidthOrHeight: 0 178 | m_PhysicalUnit: 3 179 | m_FallbackScreenDPI: 96 180 | m_DefaultSpriteDPI: 96 181 | m_DynamicPixelsPerUnit: 1 182 | --- !u!223 &59316436 183 | Canvas: 184 | m_ObjectHideFlags: 0 185 | m_CorrespondingSourceObject: {fileID: 0} 186 | m_PrefabInstance: {fileID: 0} 187 | m_PrefabAsset: {fileID: 0} 188 | m_GameObject: {fileID: 59316433} 189 | m_Enabled: 1 190 | serializedVersion: 3 191 | m_RenderMode: 0 192 | m_Camera: {fileID: 0} 193 | m_PlaneDistance: 100 194 | m_PixelPerfect: 0 195 | m_ReceivesEvents: 1 196 | m_OverrideSorting: 0 197 | m_OverridePixelPerfect: 0 198 | m_SortingBucketNormalizedSize: 0 199 | m_AdditionalShaderChannelsFlag: 0 200 | m_SortingLayerID: 0 201 | m_SortingOrder: 0 202 | m_TargetDisplay: 0 203 | --- !u!224 &59316437 204 | RectTransform: 205 | m_ObjectHideFlags: 0 206 | m_CorrespondingSourceObject: {fileID: 0} 207 | m_PrefabInstance: {fileID: 0} 208 | m_PrefabAsset: {fileID: 0} 209 | m_GameObject: {fileID: 59316433} 210 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 211 | m_LocalPosition: {x: 0, y: 0, z: 0} 212 | m_LocalScale: {x: 0, y: 0, z: 0} 213 | m_Children: [] 214 | m_Father: {fileID: 0} 215 | m_RootOrder: 2 216 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 217 | m_AnchorMin: {x: 0, y: 0} 218 | m_AnchorMax: {x: 0, y: 0} 219 | m_AnchoredPosition: {x: 0, y: 0} 220 | m_SizeDelta: {x: 0, y: 0} 221 | m_Pivot: {x: 0, y: 0} 222 | --- !u!1 &705507993 223 | GameObject: 224 | m_ObjectHideFlags: 0 225 | m_CorrespondingSourceObject: {fileID: 0} 226 | m_PrefabInstance: {fileID: 0} 227 | m_PrefabAsset: {fileID: 0} 228 | serializedVersion: 6 229 | m_Component: 230 | - component: {fileID: 705507995} 231 | - component: {fileID: 705507994} 232 | m_Layer: 0 233 | m_Name: Directional Light 234 | m_TagString: Untagged 235 | m_Icon: {fileID: 0} 236 | m_NavMeshLayer: 0 237 | m_StaticEditorFlags: 0 238 | m_IsActive: 1 239 | --- !u!108 &705507994 240 | Light: 241 | m_ObjectHideFlags: 0 242 | m_CorrespondingSourceObject: {fileID: 0} 243 | m_PrefabInstance: {fileID: 0} 244 | m_PrefabAsset: {fileID: 0} 245 | m_GameObject: {fileID: 705507993} 246 | m_Enabled: 1 247 | serializedVersion: 10 248 | m_Type: 1 249 | m_Shape: 0 250 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 251 | m_Intensity: 1 252 | m_Range: 10 253 | m_SpotAngle: 30 254 | m_InnerSpotAngle: 21.80208 255 | m_CookieSize: 10 256 | m_Shadows: 257 | m_Type: 2 258 | m_Resolution: -1 259 | m_CustomResolution: -1 260 | m_Strength: 1 261 | m_Bias: 0.05 262 | m_NormalBias: 0.4 263 | m_NearPlane: 0.2 264 | m_CullingMatrixOverride: 265 | e00: 1 266 | e01: 0 267 | e02: 0 268 | e03: 0 269 | e10: 0 270 | e11: 1 271 | e12: 0 272 | e13: 0 273 | e20: 0 274 | e21: 0 275 | e22: 1 276 | e23: 0 277 | e30: 0 278 | e31: 0 279 | e32: 0 280 | e33: 1 281 | m_UseCullingMatrixOverride: 0 282 | m_Cookie: {fileID: 0} 283 | m_DrawHalo: 0 284 | m_Flare: {fileID: 0} 285 | m_RenderMode: 0 286 | m_CullingMask: 287 | serializedVersion: 2 288 | m_Bits: 4294967295 289 | m_RenderingLayerMask: 1 290 | m_Lightmapping: 1 291 | m_LightShadowCasterMode: 0 292 | m_AreaSize: {x: 1, y: 1} 293 | m_BounceIntensity: 1 294 | m_ColorTemperature: 6570 295 | m_UseColorTemperature: 0 296 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 297 | m_UseBoundingSphereOverride: 0 298 | m_ShadowRadius: 0 299 | m_ShadowAngle: 0 300 | --- !u!4 &705507995 301 | Transform: 302 | m_ObjectHideFlags: 0 303 | m_CorrespondingSourceObject: {fileID: 0} 304 | m_PrefabInstance: {fileID: 0} 305 | m_PrefabAsset: {fileID: 0} 306 | m_GameObject: {fileID: 705507993} 307 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 308 | m_LocalPosition: {x: 0, y: 3, z: 0} 309 | m_LocalScale: {x: 1, y: 1, z: 1} 310 | m_Children: [] 311 | m_Father: {fileID: 0} 312 | m_RootOrder: 1 313 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 314 | --- !u!1 &951136389 315 | GameObject: 316 | m_ObjectHideFlags: 0 317 | m_CorrespondingSourceObject: {fileID: 0} 318 | m_PrefabInstance: {fileID: 0} 319 | m_PrefabAsset: {fileID: 0} 320 | serializedVersion: 6 321 | m_Component: 322 | - component: {fileID: 951136392} 323 | - component: {fileID: 951136391} 324 | - component: {fileID: 951136390} 325 | m_Layer: 0 326 | m_Name: EventSystem 327 | m_TagString: Untagged 328 | m_Icon: {fileID: 0} 329 | m_NavMeshLayer: 0 330 | m_StaticEditorFlags: 0 331 | m_IsActive: 1 332 | --- !u!114 &951136390 333 | MonoBehaviour: 334 | m_ObjectHideFlags: 0 335 | m_CorrespondingSourceObject: {fileID: 0} 336 | m_PrefabInstance: {fileID: 0} 337 | m_PrefabAsset: {fileID: 0} 338 | m_GameObject: {fileID: 951136389} 339 | m_Enabled: 1 340 | m_EditorHideFlags: 0 341 | m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} 342 | m_Name: 343 | m_EditorClassIdentifier: 344 | m_HorizontalAxis: Horizontal 345 | m_VerticalAxis: Vertical 346 | m_SubmitButton: Submit 347 | m_CancelButton: Cancel 348 | m_InputActionsPerSecond: 10 349 | m_RepeatDelay: 0.5 350 | m_ForceModuleActive: 0 351 | --- !u!114 &951136391 352 | MonoBehaviour: 353 | m_ObjectHideFlags: 0 354 | m_CorrespondingSourceObject: {fileID: 0} 355 | m_PrefabInstance: {fileID: 0} 356 | m_PrefabAsset: {fileID: 0} 357 | m_GameObject: {fileID: 951136389} 358 | m_Enabled: 1 359 | m_EditorHideFlags: 0 360 | m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} 361 | m_Name: 362 | m_EditorClassIdentifier: 363 | m_FirstSelected: {fileID: 0} 364 | m_sendNavigationEvents: 1 365 | m_DragThreshold: 10 366 | --- !u!4 &951136392 367 | Transform: 368 | m_ObjectHideFlags: 0 369 | m_CorrespondingSourceObject: {fileID: 0} 370 | m_PrefabInstance: {fileID: 0} 371 | m_PrefabAsset: {fileID: 0} 372 | m_GameObject: {fileID: 951136389} 373 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 374 | m_LocalPosition: {x: 0, y: 0, z: 0} 375 | m_LocalScale: {x: 1, y: 1, z: 1} 376 | m_Children: [] 377 | m_Father: {fileID: 0} 378 | m_RootOrder: 3 379 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 380 | --- !u!1 &963194225 381 | GameObject: 382 | m_ObjectHideFlags: 0 383 | m_CorrespondingSourceObject: {fileID: 0} 384 | m_PrefabInstance: {fileID: 0} 385 | m_PrefabAsset: {fileID: 0} 386 | serializedVersion: 6 387 | m_Component: 388 | - component: {fileID: 963194228} 389 | - component: {fileID: 963194227} 390 | - component: {fileID: 963194226} 391 | - component: {fileID: 963194229} 392 | m_Layer: 0 393 | m_Name: Main Camera 394 | m_TagString: MainCamera 395 | m_Icon: {fileID: 0} 396 | m_NavMeshLayer: 0 397 | m_StaticEditorFlags: 0 398 | m_IsActive: 1 399 | --- !u!81 &963194226 400 | AudioListener: 401 | m_ObjectHideFlags: 0 402 | m_CorrespondingSourceObject: {fileID: 0} 403 | m_PrefabInstance: {fileID: 0} 404 | m_PrefabAsset: {fileID: 0} 405 | m_GameObject: {fileID: 963194225} 406 | m_Enabled: 1 407 | --- !u!20 &963194227 408 | Camera: 409 | m_ObjectHideFlags: 0 410 | m_CorrespondingSourceObject: {fileID: 0} 411 | m_PrefabInstance: {fileID: 0} 412 | m_PrefabAsset: {fileID: 0} 413 | m_GameObject: {fileID: 963194225} 414 | m_Enabled: 1 415 | serializedVersion: 2 416 | m_ClearFlags: 1 417 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 418 | m_projectionMatrixMode: 1 419 | m_GateFitMode: 2 420 | m_FOVAxisMode: 0 421 | m_SensorSize: {x: 36, y: 24} 422 | m_LensShift: {x: 0, y: 0} 423 | m_FocalLength: 50 424 | m_NormalizedViewPortRect: 425 | serializedVersion: 2 426 | x: 0 427 | y: 0 428 | width: 1 429 | height: 1 430 | near clip plane: 0.3 431 | far clip plane: 1000 432 | field of view: 60 433 | orthographic: 0 434 | orthographic size: 5 435 | m_Depth: -1 436 | m_CullingMask: 437 | serializedVersion: 2 438 | m_Bits: 4294967295 439 | m_RenderingPath: -1 440 | m_TargetTexture: {fileID: 0} 441 | m_TargetDisplay: 0 442 | m_TargetEye: 3 443 | m_HDR: 1 444 | m_AllowMSAA: 1 445 | m_AllowDynamicResolution: 0 446 | m_ForceIntoRT: 0 447 | m_OcclusionCulling: 1 448 | m_StereoConvergence: 10 449 | m_StereoSeparation: 0.022 450 | --- !u!4 &963194228 451 | Transform: 452 | m_ObjectHideFlags: 0 453 | m_CorrespondingSourceObject: {fileID: 0} 454 | m_PrefabInstance: {fileID: 0} 455 | m_PrefabAsset: {fileID: 0} 456 | m_GameObject: {fileID: 963194225} 457 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 458 | m_LocalPosition: {x: 0, y: 1, z: -10} 459 | m_LocalScale: {x: 1, y: 1, z: 1} 460 | m_Children: [] 461 | m_Father: {fileID: 0} 462 | m_RootOrder: 0 463 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 464 | --- !u!114 &963194229 465 | MonoBehaviour: 466 | m_ObjectHideFlags: 0 467 | m_CorrespondingSourceObject: {fileID: 0} 468 | m_PrefabInstance: {fileID: 0} 469 | m_PrefabAsset: {fileID: 0} 470 | m_GameObject: {fileID: 963194225} 471 | m_Enabled: 1 472 | m_EditorHideFlags: 0 473 | m_Script: {fileID: 11500000, guid: aa7912cc50b227940b556d0761e67b73, type: 3} 474 | m_Name: 475 | m_EditorClassIdentifier: 476 | sensitivity: 1 477 | --- !u!1001 &1031070405 478 | PrefabInstance: 479 | m_ObjectHideFlags: 0 480 | serializedVersion: 2 481 | m_Modification: 482 | m_TransformParent: {fileID: 1988921289} 483 | m_Modifications: 484 | - target: {fileID: 580641362088427726, guid: ebd2b9caba325cd46b00399d5949c5fd, 485 | type: 3} 486 | propertyPath: m_Name 487 | value: MyCube (1) 488 | objectReference: {fileID: 0} 489 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 490 | type: 3} 491 | propertyPath: m_LocalPosition.x 492 | value: 0 493 | objectReference: {fileID: 0} 494 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 495 | type: 3} 496 | propertyPath: m_LocalPosition.y 497 | value: 0 498 | objectReference: {fileID: 0} 499 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 500 | type: 3} 501 | propertyPath: m_LocalPosition.z 502 | value: 0 503 | objectReference: {fileID: 0} 504 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 505 | type: 3} 506 | propertyPath: m_LocalRotation.x 507 | value: 0 508 | objectReference: {fileID: 0} 509 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 510 | type: 3} 511 | propertyPath: m_LocalRotation.y 512 | value: 0 513 | objectReference: {fileID: 0} 514 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 515 | type: 3} 516 | propertyPath: m_LocalRotation.z 517 | value: 0 518 | objectReference: {fileID: 0} 519 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 520 | type: 3} 521 | propertyPath: m_LocalRotation.w 522 | value: 1 523 | objectReference: {fileID: 0} 524 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 525 | type: 3} 526 | propertyPath: m_RootOrder 527 | value: 1 528 | objectReference: {fileID: 0} 529 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 530 | type: 3} 531 | propertyPath: m_LocalEulerAnglesHint.x 532 | value: 0 533 | objectReference: {fileID: 0} 534 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 535 | type: 3} 536 | propertyPath: m_LocalEulerAnglesHint.y 537 | value: 0 538 | objectReference: {fileID: 0} 539 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 540 | type: 3} 541 | propertyPath: m_LocalEulerAnglesHint.z 542 | value: 0 543 | objectReference: {fileID: 0} 544 | m_RemovedComponents: [] 545 | m_SourcePrefab: {fileID: 100100000, guid: ebd2b9caba325cd46b00399d5949c5fd, type: 3} 546 | --- !u!4 &1129219885 stripped 547 | Transform: 548 | m_CorrespondingSourceObject: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 549 | type: 3} 550 | m_PrefabInstance: {fileID: 1031070405} 551 | m_PrefabAsset: {fileID: 0} 552 | --- !u!1 &1988921287 553 | GameObject: 554 | m_ObjectHideFlags: 0 555 | m_CorrespondingSourceObject: {fileID: 0} 556 | m_PrefabInstance: {fileID: 0} 557 | m_PrefabAsset: {fileID: 0} 558 | serializedVersion: 6 559 | m_Component: 560 | - component: {fileID: 1988921289} 561 | - component: {fileID: 1988921288} 562 | m_Layer: 0 563 | m_Name: World 564 | m_TagString: Untagged 565 | m_Icon: {fileID: 0} 566 | m_NavMeshLayer: 0 567 | m_StaticEditorFlags: 0 568 | m_IsActive: 1 569 | --- !u!114 &1988921288 570 | MonoBehaviour: 571 | m_ObjectHideFlags: 0 572 | m_CorrespondingSourceObject: {fileID: 0} 573 | m_PrefabInstance: {fileID: 0} 574 | m_PrefabAsset: {fileID: 0} 575 | m_GameObject: {fileID: 1988921287} 576 | m_Enabled: 1 577 | m_EditorHideFlags: 0 578 | m_Script: {fileID: 11500000, guid: 7025f486146828b4d8ed47fab98aba62, type: 3} 579 | m_Name: 580 | m_EditorClassIdentifier: 581 | canvas: {fileID: 59316436} 582 | targetIndicators: [] 583 | MainCamera: {fileID: 963194227} 584 | TargetIndicatorPrefab: {fileID: 8057716851948084983, guid: 7fe8c3acc3d4db148a46f165d459aab8, 585 | type: 3} 586 | --- !u!4 &1988921289 587 | Transform: 588 | m_ObjectHideFlags: 0 589 | m_CorrespondingSourceObject: {fileID: 0} 590 | m_PrefabInstance: {fileID: 0} 591 | m_PrefabAsset: {fileID: 0} 592 | m_GameObject: {fileID: 1988921287} 593 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 594 | m_LocalPosition: {x: 0, y: 0, z: 0} 595 | m_LocalScale: {x: 1, y: 1, z: 1} 596 | m_Children: 597 | - {fileID: 3675337960790792528} 598 | - {fileID: 1129219885} 599 | m_Father: {fileID: 0} 600 | m_RootOrder: 4 601 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 602 | --- !u!1001 &3675337960790792527 603 | PrefabInstance: 604 | m_ObjectHideFlags: 0 605 | serializedVersion: 2 606 | m_Modification: 607 | m_TransformParent: {fileID: 1988921289} 608 | m_Modifications: 609 | - target: {fileID: 580641362088427726, guid: ebd2b9caba325cd46b00399d5949c5fd, 610 | type: 3} 611 | propertyPath: m_Name 612 | value: MyCube 613 | objectReference: {fileID: 0} 614 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 615 | type: 3} 616 | propertyPath: m_LocalPosition.x 617 | value: 6.5 618 | objectReference: {fileID: 0} 619 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 620 | type: 3} 621 | propertyPath: m_LocalPosition.y 622 | value: 7 623 | objectReference: {fileID: 0} 624 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 625 | type: 3} 626 | propertyPath: m_LocalPosition.z 627 | value: 0 628 | objectReference: {fileID: 0} 629 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 630 | type: 3} 631 | propertyPath: m_LocalRotation.x 632 | value: 0 633 | objectReference: {fileID: 0} 634 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 635 | type: 3} 636 | propertyPath: m_LocalRotation.y 637 | value: 0 638 | objectReference: {fileID: 0} 639 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 640 | type: 3} 641 | propertyPath: m_LocalRotation.z 642 | value: 0 643 | objectReference: {fileID: 0} 644 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 645 | type: 3} 646 | propertyPath: m_LocalRotation.w 647 | value: 1 648 | objectReference: {fileID: 0} 649 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 650 | type: 3} 651 | propertyPath: m_RootOrder 652 | value: 0 653 | objectReference: {fileID: 0} 654 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 655 | type: 3} 656 | propertyPath: m_LocalEulerAnglesHint.x 657 | value: 0 658 | objectReference: {fileID: 0} 659 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 660 | type: 3} 661 | propertyPath: m_LocalEulerAnglesHint.y 662 | value: 0 663 | objectReference: {fileID: 0} 664 | - target: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 665 | type: 3} 666 | propertyPath: m_LocalEulerAnglesHint.z 667 | value: 0 668 | objectReference: {fileID: 0} 669 | m_RemovedComponents: [] 670 | m_SourcePrefab: {fileID: 100100000, guid: ebd2b9caba325cd46b00399d5949c5fd, type: 3} 671 | --- !u!4 &3675337960790792528 stripped 672 | Transform: 673 | m_CorrespondingSourceObject: {fileID: 2435326170668768601, guid: ebd2b9caba325cd46b00399d5949c5fd, 674 | type: 3} 675 | m_PrefabInstance: {fileID: 3675337960790792527} 676 | m_PrefabAsset: {fileID: 0} 677 | -------------------------------------------------------------------------------- /Scenes/SampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fc0d4010bbf28b4594072e72b8655ab 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 242c2099a6517bb49acd7fad2d2b91e1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Scripts/CameraMover.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class CameraMover : MonoBehaviour 6 | { 7 | private GameObject player; 8 | public float sensitivity = 1f; 9 | 10 | private void Awake() 11 | { 12 | player=this.gameObject; 13 | 14 | } 15 | 16 | 17 | private void Update() 18 | { 19 | 20 | float rotateHorizontal = Input.GetAxis ("Mouse X"); 21 | float rotateVertical = Input.GetAxis ("Mouse Y"); 22 | transform.RotateAround (player.transform.position, -Vector3.up, rotateHorizontal * sensitivity); //use transform.Rotate(-transform.up * rotateHorizontal * sensitivity) instead if you dont want the camera to rotate around the player 23 | transform.RotateAround (Vector3.zero, transform.right, rotateVertical * sensitivity); // again, use transform.Rotate(transform.right * rotateVertical * sensitivity) if you don't want the camera to rotate around the player 24 | } 25 | } 26 | 27 | 28 | -------------------------------------------------------------------------------- /Scripts/CameraMover.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aa7912cc50b227940b556d0761e67b73 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Scripts/TargetIndicator.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | public class TargetIndicator : MonoBehaviour 7 | { 8 | public Image TargetIndicatorImage; 9 | public Image OffScreenTargetIndicator; 10 | public float OutOfSightOffset = 20f; 11 | private float outOfSightOffest { get { return OutOfSightOffset /* canvasRect.localScale.x*/; } } 12 | 13 | private GameObject target; 14 | private Camera mainCamera; 15 | private RectTransform canvasRect; 16 | 17 | private RectTransform rectTransform; 18 | 19 | private void Awake() 20 | { 21 | rectTransform = GetComponent(); 22 | } 23 | 24 | 25 | public void InitialiseTargetIndicator(GameObject target, Camera mainCamera, Canvas canvas) 26 | { 27 | this.target = target; 28 | this.mainCamera = mainCamera; 29 | canvasRect = canvas.GetComponent(); 30 | } 31 | 32 | public void UpdateTargetIndicator() 33 | { 34 | SetIndicatorPosition(); 35 | 36 | //Adjust distance display 37 | //Turn on or off when in range/out of range 38 | //Do stuff if picked as main target 39 | } 40 | 41 | 42 | protected void SetIndicatorPosition() 43 | { 44 | 45 | //Get the position of the target in relation to the screenSpace 46 | Vector3 indicatorPosition = mainCamera.WorldToScreenPoint(target.transform.position); 47 | //Debug.Log("GO: "+ gameObject.name + "; slPos: " + indicatorPosition + "; cvWidt: " + canvasRect.rect.width + "; cvHeight: " + canvasRect.rect.height); 48 | 49 | //In case the target is both in front of the camera and within the bounds of its frustrum 50 | if (indicatorPosition.z >= 0f & indicatorPosition.x <= canvasRect.rect.width * canvasRect.localScale.x 51 | & indicatorPosition.y <= canvasRect.rect.height * canvasRect.localScale.x & indicatorPosition.x >= 0f & indicatorPosition.y >= 0f) 52 | { 53 | 54 | //Set z to zero since it's not needed and only causes issues (too far away from Camera to be shown!) 55 | indicatorPosition.z = 0f; 56 | 57 | //Target is in sight, change indicator parts around accordingly 58 | targetOutOfSight(false, indicatorPosition); 59 | } 60 | 61 | //In case the target is in front of the ship, but out of sight 62 | else if (indicatorPosition.z >= 0f) 63 | { 64 | //Set indicatorposition and set targetIndicator to outOfSight form. 65 | indicatorPosition = OutOfRangeindicatorPositionB(indicatorPosition); 66 | targetOutOfSight(true, indicatorPosition); 67 | } 68 | else 69 | { 70 | //Invert indicatorPosition! Otherwise the indicator's positioning will invert if the target is on the backside of the camera! 71 | indicatorPosition *= -1f; 72 | 73 | //Set indicatorposition and set targetIndicator to outOfSight form. 74 | indicatorPosition = OutOfRangeindicatorPositionB(indicatorPosition); 75 | targetOutOfSight(true, indicatorPosition); 76 | 77 | } 78 | 79 | //Set the position of the indicator 80 | rectTransform.position = indicatorPosition; 81 | 82 | } 83 | 84 | private Vector3 OutOfRangeindicatorPositionB(Vector3 indicatorPosition) 85 | { 86 | //Set indicatorPosition.z to 0f; We don't need that and it'll actually cause issues if it's outside the camera range (which easily happens in my case) 87 | indicatorPosition.z = 0f; 88 | 89 | //Calculate Center of Canvas and subtract from the indicator position to have indicatorCoordinates from the Canvas Center instead the bottom left! 90 | Vector3 canvasCenter = new Vector3(canvasRect.rect.width / 2f, canvasRect.rect.height / 2f, 0f) * canvasRect.localScale.x; 91 | indicatorPosition -= canvasCenter; 92 | 93 | //Calculate if Vector to target intersects (first) with y border of canvas rect or if Vector intersects (first) with x border: 94 | //This is required to see which border needs to be set to the max value and at which border the indicator needs to be moved (up & down or left & right) 95 | float divX = (canvasRect.rect.width / 2f - outOfSightOffest) / Mathf.Abs(indicatorPosition.x); 96 | float divY = (canvasRect.rect.height / 2f - outOfSightOffest) / Mathf.Abs(indicatorPosition.y); 97 | 98 | //In case it intersects with x border first, put the x-one to the border and adjust the y-one accordingly (Trigonometry) 99 | if (divX < divY) 100 | { 101 | float angle = Vector3.SignedAngle(Vector3.right, indicatorPosition, Vector3.forward); 102 | indicatorPosition.x = Mathf.Sign(indicatorPosition.x) * (canvasRect.rect.width * 0.5f - outOfSightOffest) * canvasRect.localScale.x; 103 | indicatorPosition.y = Mathf.Tan(Mathf.Deg2Rad * angle) * indicatorPosition.x; 104 | } 105 | 106 | //In case it intersects with y border first, put the y-one to the border and adjust the x-one accordingly (Trigonometry) 107 | else 108 | { 109 | float angle = Vector3.SignedAngle(Vector3.up, indicatorPosition, Vector3.forward); 110 | 111 | indicatorPosition.y = Mathf.Sign(indicatorPosition.y) * (canvasRect.rect.height / 2f - outOfSightOffest) * canvasRect.localScale.y; 112 | indicatorPosition.x = -Mathf.Tan(Mathf.Deg2Rad * angle) * indicatorPosition.y; 113 | } 114 | 115 | //Change the indicator Position back to the actual rectTransform coordinate system and return indicatorPosition 116 | indicatorPosition += canvasCenter; 117 | return indicatorPosition; 118 | } 119 | 120 | 121 | 122 | private void targetOutOfSight(bool oos, Vector3 indicatorPosition) 123 | { 124 | //In Case the indicator is OutOfSight 125 | if (oos) 126 | { 127 | //Activate and Deactivate some stuff 128 | if (OffScreenTargetIndicator.gameObject.activeSelf == false) OffScreenTargetIndicator.gameObject.SetActive(true); 129 | if (TargetIndicatorImage.isActiveAndEnabled == true) TargetIndicatorImage.enabled = false; 130 | 131 | //Set the rotation of the OutOfSight direction indicator 132 | OffScreenTargetIndicator.rectTransform.rotation = Quaternion.Euler(rotationOutOfSightTargetindicator(indicatorPosition)); 133 | 134 | //outOfSightArrow.rectTransform.rotation = Quaternion.LookRotation(indicatorPosition- new Vector3(canvasRect.rect.width/2f,canvasRect.rect.height/2f,0f)) ; 135 | /*outOfSightArrow.rectTransform.rotation = Quaternion.LookRotation(indicatorPosition); 136 | viewVector = indicatorPosition- new Vector3(canvasRect.rect.width/2f,canvasRect.rect.height/2f,0f); 137 | 138 | //Debug.Log("CanvasRectCenter: " + canvasRect.rect.center); 139 | outOfSightArrow.rectTransform.rotation *= Quaternion.Euler(0f,90f,0f);*/ 140 | } 141 | 142 | //In case that the indicator is InSight, turn on the inSight stuff and turn off the OOS stuff. 143 | else 144 | { 145 | if (OffScreenTargetIndicator.gameObject.activeSelf == true) OffScreenTargetIndicator.gameObject.SetActive(false); 146 | if (TargetIndicatorImage.isActiveAndEnabled == false) TargetIndicatorImage.enabled = true; 147 | } 148 | } 149 | 150 | 151 | private Vector3 rotationOutOfSightTargetindicator(Vector3 indicatorPosition) 152 | { 153 | //Calculate the canvasCenter 154 | Vector3 canvasCenter = new Vector3(canvasRect.rect.width / 2f, canvasRect.rect.height / 2f, 0f) * canvasRect.localScale.x; 155 | 156 | //Calculate the signedAngle between the position of the indicator and the Direction up. 157 | float angle = Vector3.SignedAngle(Vector3.up, indicatorPosition - canvasCenter, Vector3.forward); 158 | 159 | //return the angle as a rotation Vector 160 | return new Vector3(0f, 0f, angle); 161 | } 162 | } 163 | -------------------------------------------------------------------------------- /Scripts/TargetIndicator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 69d79d1a43715f74abffecf70ab9affe 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Scripts/TargetObject.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class TargetObject : MonoBehaviour 6 | { 7 | private void Awake() 8 | { 9 | UIController ui = GetComponentInParent(); 10 | if(ui == null) 11 | { 12 | ui = GameObject.Find("World").GetComponent(); 13 | } 14 | 15 | if (ui == null) Debug.LogError("No UIController component found"); 16 | 17 | ui.AddTargetIndicator(this.gameObject); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Scripts/TargetObject.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 619d7048367c2f64896e873fc02c101c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Scripts/UIController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | public class UIController : MonoBehaviour 7 | { 8 | public Canvas canvas; 9 | 10 | public List targetIndicators = new List(); 11 | 12 | public Camera MainCamera; 13 | 14 | public GameObject TargetIndicatorPrefab; 15 | 16 | // Start is called before the first frame update 17 | void Start() 18 | { 19 | 20 | } 21 | 22 | // Update is called once per frame 23 | void Update() 24 | { 25 | if(targetIndicators.Count > 0) 26 | { 27 | for(int i = 0; i < targetIndicators.Count; i++) 28 | { 29 | targetIndicators[i].UpdateTargetIndicator(); 30 | } 31 | } 32 | } 33 | 34 | public void AddTargetIndicator(GameObject target) 35 | { 36 | TargetIndicator indicator = GameObject.Instantiate(TargetIndicatorPrefab, canvas.transform).GetComponent(); 37 | indicator.InitialiseTargetIndicator(target, MainCamera, canvas); 38 | targetIndicators.Add(indicator); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Scripts/UIController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7025f486146828b4d8ed47fab98aba62 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Sprites.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 93b9ecbd7d6775b41a643ca1be4d53d6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Sprites/Selector1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Omti90/Off-Screen-Target-Indicator-Tutorial/fc93e5494f7ae61979961a8a1f9bdfd547ff21a3/Sprites/Selector1.png -------------------------------------------------------------------------------- /Sprites/Selector1.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 750c8ccd0f0370f4ebd7a1dc892bc4a5 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 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 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | spriteSheet: 87 | serializedVersion: 2 88 | sprites: [] 89 | outline: [] 90 | physicsShape: [] 91 | bones: [] 92 | spriteID: 5e97eb03825dee720800000000000000 93 | internalID: 0 94 | vertices: [] 95 | indices: 96 | edges: [] 97 | weights: [] 98 | secondaryTextures: [] 99 | spritePackingTag: 100 | pSDRemoveMatte: 0 101 | pSDShowRemoveMatteOption: 0 102 | userData: 103 | assetBundleName: 104 | assetBundleVariant: 105 | -------------------------------------------------------------------------------- /Sprites/Triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Omti90/Off-Screen-Target-Indicator-Tutorial/fc93e5494f7ae61979961a8a1f9bdfd547ff21a3/Sprites/Triangle.png -------------------------------------------------------------------------------- /Sprites/Triangle.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f29000640c1f94a458f722ddb05091f3 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 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 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 2 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | spriteSheet: 87 | serializedVersion: 2 88 | sprites: [] 89 | outline: [] 90 | physicsShape: [] 91 | bones: [] 92 | spriteID: 5e97eb03825dee720800000000000000 93 | internalID: 0 94 | vertices: [] 95 | indices: 96 | edges: [] 97 | weights: [] 98 | secondaryTextures: [] 99 | spritePackingTag: 100 | pSDRemoveMatte: 0 101 | pSDShowRemoveMatteOption: 0 102 | userData: 103 | assetBundleName: 104 | assetBundleVariant: 105 | --------------------------------------------------------------------------------