├── .gitignore ├── Assets ├── Plugins.meta └── Plugins │ ├── EnumSelection.meta │ └── EnumSelection │ ├── Editor.meta │ ├── Editor │ ├── EnumSelection-Editor.asmdef │ ├── EnumSelection-Editor.asmdef.meta │ ├── EnumSelectionDrawer.cs │ ├── EnumSelectionDrawer.cs.meta │ ├── EnumSelectionOptionDrawer.cs │ └── EnumSelectionOptionDrawer.cs.meta │ ├── Examples.meta │ ├── Examples │ ├── EnumSelection-Examples.asmdef │ ├── EnumSelection-Examples.asmdef.meta │ ├── EnumSelectionDemo.cs │ ├── EnumSelectionDemo.cs.meta │ ├── EnumSelectionDemo.unity │ ├── EnumSelectionDemo.unity.meta │ ├── SampleEnum1.cs │ ├── SampleEnum1.cs.meta │ ├── SampleEnum2.cs │ └── SampleEnum2.cs.meta │ ├── Scripts.meta │ ├── Scripts │ ├── EnumSelection-Scripts.asmdef │ ├── EnumSelection-Scripts.asmdef.meta │ ├── EnumSelection.cs │ ├── EnumSelection.cs.meta │ ├── EnumSelectionEnable.cs │ ├── EnumSelectionEnable.cs.meta │ ├── EnumSelectionOption.cs │ └── EnumSelectionOption.cs.meta │ ├── Tests.meta │ └── Tests │ ├── EnumSelection-UnitTest.asmdef │ ├── EnumSelection-UnitTest.asmdef.meta │ ├── EnumSelectionTests.cs │ └── EnumSelectionTests.cs.meta ├── LICENSE.md ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset └── UnityConnectSettings.asset ├── README.md └── art ├── enum_selection.gif └── multiple_skills.png /.gitignore: -------------------------------------------------------------------------------- 1 | [Ll]ibrary/ 2 | [Tt]emp/ 3 | [Oo]bj/ 4 | [Bb]uild/ 5 | [Bb]uilds/ 6 | Assets/AssetStoreTools* 7 | 8 | # Visual Studio cache directory 9 | .vs/ 10 | 11 | # Autogenerated VS/MD/Consulo solution and project files 12 | ExportedObj/ 13 | .consulo/ 14 | *.csproj 15 | *.unityproj 16 | *.sln 17 | *.suo 18 | *.tmp 19 | *.user 20 | *.userprefs 21 | *.pidb 22 | *.booproj 23 | *.svd 24 | *.pdb 25 | *.opendb 26 | 27 | # Unity3D generated meta files 28 | *.pidb.meta 29 | *.pdb.meta 30 | 31 | # Unity3D Generated File On Crash Reports 32 | sysinfo.txt 33 | 34 | # Builds 35 | *.apk 36 | *.unitypackage 37 | 38 | Assets/Plugins/Editor.meta 39 | Assets/Plugins/Editor/ 40 | -------------------------------------------------------------------------------- /Assets/Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e02875bca72b64c3ca7449ec75544d1e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a69f43574a0c042fbad80dd23a8bbbcb 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ce1861407e5e647e0919daa798b108fc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Editor/EnumSelection-Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "EnumSelection-Editor", 3 | "references": [ 4 | "EnumSelection-Scripts" 5 | ], 6 | "optionalUnityReferences": [], 7 | "includePlatforms": [ 8 | "Editor" 9 | ], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false 12 | } -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Editor/EnumSelection-Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fa5e3c67d3c2d47b1be47aa1b027897b 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Editor/EnumSelectionDrawer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Reflection; 5 | using UnityEditor; 6 | using UnityEngine; 7 | 8 | namespace EnumSelectionTool 9 | { 10 | [CustomPropertyDrawer(typeof(EnumSelection))] 11 | public class EnumSelectionDrawer : PropertyDrawer 12 | { 13 | const float HeightLabel = 16f; 14 | const float HeightPopup = 18f; 15 | const float HeightHelpBox = 36f; 16 | 17 | protected List EnumTypes; 18 | protected List EnumNames; 19 | protected List EnumAssemblyNames; 20 | protected float TotalHeight = HeightLabel + HeightPopup * 2; 21 | 22 | protected virtual void CheckInitialize() 23 | { 24 | if (this.EnumTypes == null) 25 | { 26 | var typeNames = AppDomain.CurrentDomain.GetAssemblies() 27 | .SelectMany(it => it.GetTypes()) 28 | .Where(it => it.IsEnum) 29 | .Select(it => 30 | { 31 | var attributes = it.GetCustomAttributes(typeof(EnumSelectionEnable), false); 32 | if (!attributes.Any()) return null; 33 | 34 | return new 35 | { 36 | Type = it, 37 | Name = it.FullName, 38 | Assembly = it.Assembly.GetName().Name 39 | }; 40 | }) 41 | .Where(it => it != null); 42 | 43 | this.EnumTypes = typeNames.Select(it => it.Type).ToList(); 44 | this.EnumNames = typeNames.Select(it => it.Name).ToList(); 45 | this.EnumAssemblyNames = typeNames.Select(it => it.Assembly).ToList(); 46 | } 47 | } 48 | 49 | List GetEnumValues(Type type) 50 | { 51 | var array = Enum.GetValues(type); 52 | var result = new List(); 53 | 54 | foreach (var val in array) 55 | { 56 | var enumValue = val as Enum; 57 | result.Add(enumValue.ToString()); 58 | } 59 | 60 | return result; 61 | } 62 | 63 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) 64 | { 65 | EditorGUI.BeginProperty(position, label, property); 66 | 67 | var rectLabel = new Rect(position.x, position.y, position.width, HeightLabel); 68 | var rectPopup1 = new Rect(position.x, position.y + HeightLabel, position.width, HeightPopup); 69 | var rectPopup2 = new Rect(position.x, position.y + HeightLabel + HeightPopup, position.width, HeightPopup); 70 | var className = property.FindPropertyRelative("ClassName"); 71 | var classValue = property.FindPropertyRelative("ClassValue"); 72 | var assemblyName = property.FindPropertyRelative("AssemblyName"); 73 | 74 | this.CheckInitialize(); 75 | EditorGUI.LabelField(rectLabel, property.name); 76 | this.TotalHeight = HeightLabel; 77 | 78 | if (this.EnumNames.Count > 0) 79 | { 80 | EditorGUI.indentLevel++; 81 | 82 | var classNameIndex = this.EnumNames.IndexOf(className.stringValue); 83 | classNameIndex = EditorGUI.Popup(rectPopup1, "Class", classNameIndex, this.EnumNames.ToArray()); 84 | this.TotalHeight += HeightPopup; 85 | 86 | if (classNameIndex >= 0) 87 | { 88 | className.stringValue = this.EnumNames[classNameIndex]; 89 | assemblyName.stringValue = this.EnumAssemblyNames[classNameIndex]; 90 | 91 | var type = this.EnumTypes[classNameIndex]; 92 | var values = this.GetEnumValues(type); 93 | 94 | var classValueIndex = values.IndexOf(classValue.stringValue); 95 | classValueIndex = EditorGUI.Popup( 96 | rectPopup2, 97 | "Value", 98 | classValueIndex, 99 | this.GetEnumValues(type).ToArray() 100 | ); 101 | this.TotalHeight += HeightPopup; 102 | 103 | if (classValueIndex >= 0) 104 | { 105 | classValue.stringValue = values[classValueIndex]; 106 | } 107 | 108 | property.serializedObject.ApplyModifiedProperties(); 109 | } 110 | 111 | EditorGUI.indentLevel--; 112 | } 113 | else 114 | { 115 | var rectHelpBox = new Rect(position.x, position.y + this.TotalHeight, position.width, HeightHelpBox); 116 | EditorGUI.HelpBox( 117 | rectHelpBox, 118 | "Please define enum with attribute of EnumSelectionEnable.", 119 | MessageType.Info 120 | ); 121 | this.TotalHeight += HeightHelpBox; 122 | } 123 | 124 | EditorGUI.EndProperty(); 125 | } 126 | 127 | public override float GetPropertyHeight(SerializedProperty property, GUIContent label) 128 | { 129 | return this.TotalHeight; 130 | } 131 | } 132 | } -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Editor/EnumSelectionDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2a8b6a2984b67404aa6ddadd24d16281 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Editor/EnumSelectionOptionDrawer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Reflection; 4 | using UnityEditor; 5 | 6 | namespace EnumSelectionTool 7 | { 8 | [CustomPropertyDrawer(typeof(EnumSelectionOption))] 9 | public class EnumSelectionOptionDrawer : EnumSelectionDrawer 10 | { 11 | protected override void CheckInitialize() 12 | { 13 | var option = (EnumSelectionOption) attribute; 14 | 15 | if (this.EnumTypes == null) 16 | { 17 | var typeNames = AppDomain.CurrentDomain.GetAssemblies() 18 | .SelectMany(it => it.GetTypes()) 19 | .Where(it => it.IsEnum) 20 | .Select(it => 21 | { 22 | var attributes = it.GetCustomAttributes(typeof(EnumSelectionEnable), false); 23 | if (!attributes.Any()) return null; 24 | var attr = attributes.First() as EnumSelectionEnable; 25 | 26 | return new 27 | { 28 | Type = it, 29 | Name = it.FullName, 30 | Assembly = it.Assembly.GetName().Name, 31 | Category = attr.Category 32 | }; 33 | }) 34 | .Where(it => it != null) 35 | .Where(it => option == null || option.Category == it.Category); 36 | 37 | this.EnumTypes = typeNames.Select(it => it.Type).ToList(); 38 | this.EnumNames = typeNames.Select(it => it.Name).ToList(); 39 | this.EnumAssemblyNames = typeNames.Select(it => it.Assembly).ToList(); 40 | } 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Editor/EnumSelectionOptionDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d5f5b135c9354f8a863fbfc5efe7e09d 3 | timeCreated: 1527150066 -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Examples.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 044fa9efd11e14e959badc260f424257 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Examples/EnumSelection-Examples.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "EnumSelection-Examples", 3 | "references": [ 4 | "EnumSelection-Scripts", 5 | "EnumSelection-Editor" 6 | ], 7 | "optionalUnityReferences": [], 8 | "includePlatforms": [], 9 | "excludePlatforms": [], 10 | "allowUnsafeCode": false 11 | } -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Examples/EnumSelection-Examples.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b5624f37983d4466f8a25e13ee7d681f 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Examples/EnumSelectionDemo.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace EnumSelectionTool.Example 4 | { 5 | public class EnumSelectionDemo : MonoBehaviour 6 | { 7 | public EnumSelection Demo1; 8 | public EnumSelection Demo2; 9 | public EnumSelection Demo3; 10 | 11 | // show only specified category enums 12 | [EnumSelectionOption(Category = "MyCategory")] 13 | public EnumSelection CategoryDemo; 14 | 15 | private void Start() 16 | { 17 | // get enum value with generics, type, non-generics 18 | Debug.Log(this.Demo1.GetEnum()); 19 | Debug.Log(this.Demo2.GetEnum(typeof(SampleEnum2))); 20 | Debug.Log(this.Demo3.GetEnum()); 21 | 22 | // check enum type safely 23 | if (this.Demo3.IsEnumClass()) 24 | { 25 | var value = this.Demo3.GetEnum(); 26 | Debug.LogFormat("Class:SampleEnum1, Value:{0}", value); 27 | } 28 | else if (this.Demo3.IsEnumClass()) 29 | { 30 | var value = this.Demo3.GetEnum(); 31 | Debug.LogFormat("Class:SampleEnum2, Value:{0}", value); 32 | } 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Examples/EnumSelectionDemo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fc6cea62755464d68ab280c67456ab72 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Examples/EnumSelectionDemo.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: 0} 41 | m_IndirectSpecularColor: {r: 0.44657838, g: 0.49641234, b: 0.57481676, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 11 47 | m_GIWorkflowMode: 0 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_TemporalCoherenceThreshold: 1 54 | m_EnvironmentLightingMode: 0 55 | m_EnableBakedLightmaps: 1 56 | m_EnableRealtimeLightmaps: 0 57 | m_LightmapEditorSettings: 58 | serializedVersion: 10 59 | m_Resolution: 2 60 | m_BakeResolution: 10 61 | m_AtlasSize: 512 62 | m_AO: 0 63 | m_AOMaxDistance: 1 64 | m_CompAOExponent: 1 65 | m_CompAOExponentDirect: 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: 256 79 | m_PVRBounces: 2 80 | m_PVRFilterTypeDirect: 0 81 | m_PVRFilterTypeIndirect: 0 82 | m_PVRFilterTypeAO: 0 83 | m_PVRFilteringMode: 1 84 | m_PVRCulling: 1 85 | m_PVRFilteringGaussRadiusDirect: 1 86 | m_PVRFilteringGaussRadiusIndirect: 5 87 | m_PVRFilteringGaussRadiusAO: 2 88 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 89 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 90 | m_PVRFilteringAtrousPositionSigmaAO: 1 91 | m_ShowResolutionOverlay: 1 92 | m_LightingDataAsset: {fileID: 0} 93 | m_UseShadowmask: 1 94 | --- !u!196 &4 95 | NavMeshSettings: 96 | serializedVersion: 2 97 | m_ObjectHideFlags: 0 98 | m_BuildSettings: 99 | serializedVersion: 2 100 | agentTypeID: 0 101 | agentRadius: 0.5 102 | agentHeight: 2 103 | agentSlope: 45 104 | agentClimb: 0.4 105 | ledgeDropHeight: 0 106 | maxJumpAcrossDistance: 0 107 | minRegionArea: 2 108 | manualCellSize: 0 109 | cellSize: 0.16666667 110 | manualTileSize: 0 111 | tileSize: 256 112 | accuratePlacement: 0 113 | debug: 114 | m_Flags: 0 115 | m_NavMeshData: {fileID: 0} 116 | --- !u!1 &170076733 117 | GameObject: 118 | m_ObjectHideFlags: 0 119 | m_PrefabParentObject: {fileID: 0} 120 | m_PrefabInternal: {fileID: 0} 121 | serializedVersion: 5 122 | m_Component: 123 | - component: {fileID: 170076735} 124 | - component: {fileID: 170076734} 125 | m_Layer: 0 126 | m_Name: Directional Light 127 | m_TagString: Untagged 128 | m_Icon: {fileID: 0} 129 | m_NavMeshLayer: 0 130 | m_StaticEditorFlags: 0 131 | m_IsActive: 1 132 | --- !u!108 &170076734 133 | Light: 134 | m_ObjectHideFlags: 0 135 | m_PrefabParentObject: {fileID: 0} 136 | m_PrefabInternal: {fileID: 0} 137 | m_GameObject: {fileID: 170076733} 138 | m_Enabled: 1 139 | serializedVersion: 8 140 | m_Type: 1 141 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 142 | m_Intensity: 1 143 | m_Range: 10 144 | m_SpotAngle: 30 145 | m_CookieSize: 10 146 | m_Shadows: 147 | m_Type: 2 148 | m_Resolution: -1 149 | m_CustomResolution: -1 150 | m_Strength: 1 151 | m_Bias: 0.05 152 | m_NormalBias: 0.4 153 | m_NearPlane: 0.2 154 | m_Cookie: {fileID: 0} 155 | m_DrawHalo: 0 156 | m_Flare: {fileID: 0} 157 | m_RenderMode: 0 158 | m_CullingMask: 159 | serializedVersion: 2 160 | m_Bits: 4294967295 161 | m_Lightmapping: 1 162 | m_AreaSize: {x: 1, y: 1} 163 | m_BounceIntensity: 1 164 | m_ColorTemperature: 6570 165 | m_UseColorTemperature: 0 166 | m_ShadowRadius: 0 167 | m_ShadowAngle: 0 168 | --- !u!4 &170076735 169 | Transform: 170 | m_ObjectHideFlags: 0 171 | m_PrefabParentObject: {fileID: 0} 172 | m_PrefabInternal: {fileID: 0} 173 | m_GameObject: {fileID: 170076733} 174 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 175 | m_LocalPosition: {x: 0, y: 3, z: 0} 176 | m_LocalScale: {x: 1, y: 1, z: 1} 177 | m_Children: [] 178 | m_Father: {fileID: 0} 179 | m_RootOrder: 1 180 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 181 | --- !u!1 &282840810 182 | GameObject: 183 | m_ObjectHideFlags: 0 184 | m_PrefabParentObject: {fileID: 0} 185 | m_PrefabInternal: {fileID: 0} 186 | serializedVersion: 5 187 | m_Component: 188 | - component: {fileID: 282840814} 189 | - component: {fileID: 282840813} 190 | - component: {fileID: 282840811} 191 | m_Layer: 0 192 | m_Name: Main Camera 193 | m_TagString: MainCamera 194 | m_Icon: {fileID: 0} 195 | m_NavMeshLayer: 0 196 | m_StaticEditorFlags: 0 197 | m_IsActive: 1 198 | --- !u!81 &282840811 199 | AudioListener: 200 | m_ObjectHideFlags: 0 201 | m_PrefabParentObject: {fileID: 0} 202 | m_PrefabInternal: {fileID: 0} 203 | m_GameObject: {fileID: 282840810} 204 | m_Enabled: 1 205 | --- !u!20 &282840813 206 | Camera: 207 | m_ObjectHideFlags: 0 208 | m_PrefabParentObject: {fileID: 0} 209 | m_PrefabInternal: {fileID: 0} 210 | m_GameObject: {fileID: 282840810} 211 | m_Enabled: 1 212 | serializedVersion: 2 213 | m_ClearFlags: 1 214 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 215 | m_NormalizedViewPortRect: 216 | serializedVersion: 2 217 | x: 0 218 | y: 0 219 | width: 1 220 | height: 1 221 | near clip plane: 0.3 222 | far clip plane: 1000 223 | field of view: 60 224 | orthographic: 0 225 | orthographic size: 5 226 | m_Depth: -1 227 | m_CullingMask: 228 | serializedVersion: 2 229 | m_Bits: 4294967295 230 | m_RenderingPath: -1 231 | m_TargetTexture: {fileID: 0} 232 | m_TargetDisplay: 0 233 | m_TargetEye: 3 234 | m_HDR: 1 235 | m_AllowMSAA: 1 236 | m_AllowDynamicResolution: 0 237 | m_ForceIntoRT: 1 238 | m_OcclusionCulling: 1 239 | m_StereoConvergence: 10 240 | m_StereoSeparation: 0.022 241 | --- !u!4 &282840814 242 | Transform: 243 | m_ObjectHideFlags: 0 244 | m_PrefabParentObject: {fileID: 0} 245 | m_PrefabInternal: {fileID: 0} 246 | m_GameObject: {fileID: 282840810} 247 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 248 | m_LocalPosition: {x: 0, y: 1, z: -10} 249 | m_LocalScale: {x: 1, y: 1, z: 1} 250 | m_Children: [] 251 | m_Father: {fileID: 0} 252 | m_RootOrder: 0 253 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 254 | --- !u!1 &1165854916 255 | GameObject: 256 | m_ObjectHideFlags: 0 257 | m_PrefabParentObject: {fileID: 0} 258 | m_PrefabInternal: {fileID: 0} 259 | serializedVersion: 5 260 | m_Component: 261 | - component: {fileID: 1165854919} 262 | - component: {fileID: 1165854918} 263 | - component: {fileID: 1165854917} 264 | m_Layer: 0 265 | m_Name: EventSystem 266 | m_TagString: Untagged 267 | m_Icon: {fileID: 0} 268 | m_NavMeshLayer: 0 269 | m_StaticEditorFlags: 0 270 | m_IsActive: 1 271 | --- !u!114 &1165854917 272 | MonoBehaviour: 273 | m_ObjectHideFlags: 0 274 | m_PrefabParentObject: {fileID: 0} 275 | m_PrefabInternal: {fileID: 0} 276 | m_GameObject: {fileID: 1165854916} 277 | m_Enabled: 1 278 | m_EditorHideFlags: 0 279 | m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} 280 | m_Name: 281 | m_EditorClassIdentifier: 282 | m_HorizontalAxis: Horizontal 283 | m_VerticalAxis: Vertical 284 | m_SubmitButton: Submit 285 | m_CancelButton: Cancel 286 | m_InputActionsPerSecond: 10 287 | m_RepeatDelay: 0.5 288 | m_ForceModuleActive: 0 289 | --- !u!114 &1165854918 290 | MonoBehaviour: 291 | m_ObjectHideFlags: 0 292 | m_PrefabParentObject: {fileID: 0} 293 | m_PrefabInternal: {fileID: 0} 294 | m_GameObject: {fileID: 1165854916} 295 | m_Enabled: 1 296 | m_EditorHideFlags: 0 297 | m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} 298 | m_Name: 299 | m_EditorClassIdentifier: 300 | m_FirstSelected: {fileID: 0} 301 | m_sendNavigationEvents: 1 302 | m_DragThreshold: 10 303 | --- !u!4 &1165854919 304 | Transform: 305 | m_ObjectHideFlags: 0 306 | m_PrefabParentObject: {fileID: 0} 307 | m_PrefabInternal: {fileID: 0} 308 | m_GameObject: {fileID: 1165854916} 309 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 310 | m_LocalPosition: {x: 0, y: 0, z: 0} 311 | m_LocalScale: {x: 1, y: 1, z: 1} 312 | m_Children: [] 313 | m_Father: {fileID: 0} 314 | m_RootOrder: 3 315 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 316 | --- !u!1 &1667997853 317 | GameObject: 318 | m_ObjectHideFlags: 0 319 | m_PrefabParentObject: {fileID: 0} 320 | m_PrefabInternal: {fileID: 0} 321 | serializedVersion: 5 322 | m_Component: 323 | - component: {fileID: 1667997854} 324 | - component: {fileID: 1667997855} 325 | m_Layer: 0 326 | m_Name: Demo 327 | m_TagString: Untagged 328 | m_Icon: {fileID: 0} 329 | m_NavMeshLayer: 0 330 | m_StaticEditorFlags: 0 331 | m_IsActive: 1 332 | --- !u!4 &1667997854 333 | Transform: 334 | m_ObjectHideFlags: 0 335 | m_PrefabParentObject: {fileID: 0} 336 | m_PrefabInternal: {fileID: 0} 337 | m_GameObject: {fileID: 1667997853} 338 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 339 | m_LocalPosition: {x: 9, y: 0, z: 0} 340 | m_LocalScale: {x: 1, y: 1, z: 1} 341 | m_Children: [] 342 | m_Father: {fileID: 0} 343 | m_RootOrder: 2 344 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 345 | --- !u!114 &1667997855 346 | MonoBehaviour: 347 | m_ObjectHideFlags: 0 348 | m_PrefabParentObject: {fileID: 0} 349 | m_PrefabInternal: {fileID: 0} 350 | m_GameObject: {fileID: 1667997853} 351 | m_Enabled: 1 352 | m_EditorHideFlags: 0 353 | m_Script: {fileID: 11500000, guid: fc6cea62755464d68ab280c67456ab72, type: 3} 354 | m_Name: 355 | m_EditorClassIdentifier: 356 | Demo1: 357 | AssemblyName: 358 | ClassName: 359 | ClassValue: 360 | Demo2: 361 | AssemblyName: 362 | ClassName: 363 | ClassValue: 364 | Demo3: 365 | AssemblyName: 366 | ClassName: 367 | ClassValue: 368 | CategoryDemo: 369 | AssemblyName: 370 | ClassName: 371 | ClassValue: 372 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Examples/EnumSelectionDemo.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 49cc4bf2e700a41548bdde97b4fc7860 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Examples/SampleEnum1.cs: -------------------------------------------------------------------------------- 1 | namespace EnumSelectionTool.Example 2 | { 3 | [EnumSelectionEnable] 4 | public enum SampleEnum1 5 | { 6 | Enum1Value1, 7 | 8 | Enum1Value2, 9 | } 10 | } -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Examples/SampleEnum1.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a2c47f24343ab485c9a02a5824e0eedd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Examples/SampleEnum2.cs: -------------------------------------------------------------------------------- 1 | namespace EnumSelectionTool.Example 2 | { 3 | [EnumSelectionEnable(Category = "MyCategory")] 4 | public enum SampleEnum2 5 | { 6 | Enum2Value1, 7 | 8 | Enum2Value2, 9 | } 10 | } -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Examples/SampleEnum2.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3eede0a22262d45aab15156b222b0b1f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fa111247b3f9e4bcdb87f94ccefcaaf0 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Scripts/EnumSelection-Scripts.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "EnumSelection-Scripts" 3 | } 4 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Scripts/EnumSelection-Scripts.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c891eb236b54a457ea292d4b58a1391c 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Scripts/EnumSelection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace EnumSelectionTool 5 | { 6 | [Serializable] 7 | public class EnumSelection 8 | { 9 | public string AssemblyName; 10 | public string ClassName; 11 | public string ClassValue; 12 | 13 | public EnumSelection() 14 | { 15 | } 16 | 17 | public EnumSelection(Type type) 18 | { 19 | this.AssemblyName = type.Assembly.GetName().Name; 20 | this.ClassName = type.FullName; 21 | } 22 | 23 | public EnumSelection(Enum enumValue) 24 | { 25 | this.AssemblyName = enumValue.GetType().Assembly.GetName().Name; 26 | this.ClassName = enumValue.GetType().FullName; 27 | this.ClassValue = enumValue.ToString(); 28 | } 29 | 30 | public TEnum? GetEnum() 31 | where TEnum : struct 32 | { 33 | return Parse(typeof(TEnum)) as TEnum?; 34 | } 35 | 36 | public Enum GetEnum(Type type) 37 | { 38 | return Parse(type) as Enum; 39 | } 40 | 41 | public Enum GetEnum() 42 | { 43 | return this.GetEnum(this.GetClass()); 44 | } 45 | 46 | public Type GetClass() 47 | { 48 | try 49 | { 50 | return Type.GetType(string.Format("{0}, {1}", this.ClassName, this.AssemblyName)); 51 | } 52 | catch (Exception) 53 | { 54 | return null; 55 | } 56 | } 57 | 58 | public bool IsEnumClass(Type type) 59 | { 60 | return this.GetClass() == type; 61 | } 62 | 63 | public bool IsEnumClass() 64 | { 65 | return this.GetClass() == typeof(TEnum); 66 | } 67 | 68 | public bool CanParse() 69 | { 70 | var type = this.GetClass(); 71 | if (type == null) return false; 72 | 73 | try 74 | { 75 | Enum.Parse(type, this.ClassValue); 76 | return true; 77 | } 78 | catch 79 | { 80 | return false; 81 | } 82 | } 83 | 84 | private object Parse(Type type) 85 | { 86 | try 87 | { 88 | return Enum.Parse(type, this.ClassValue); 89 | } 90 | catch (Exception) 91 | { 92 | } 93 | 94 | LogCannotParse(type); 95 | return null; 96 | } 97 | 98 | private void LogCannotParse(Type type) 99 | { 100 | Debug.LogWarningFormat( 101 | "Cannot parse enum: {0}, {1} as {2}", 102 | this.ClassName, 103 | this.ClassValue, 104 | type != null ? type.FullName : "" 105 | ); 106 | } 107 | } 108 | } -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Scripts/EnumSelection.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 249719374a9d4e2885f7e66387ad2d26 3 | timeCreated: 1527130358 -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Scripts/EnumSelectionEnable.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace EnumSelectionTool 4 | { 5 | public class EnumSelectionEnable : Attribute 6 | { 7 | public string Category = "Default"; 8 | } 9 | } -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Scripts/EnumSelectionEnable.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ab28831b4b46f45998c8c6f36c4b862b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Scripts/EnumSelectionOption.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace EnumSelectionTool 4 | { 5 | public class EnumSelectionOption : PropertyAttribute 6 | { 7 | public string Category = "Default"; 8 | } 9 | } -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Scripts/EnumSelectionOption.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6e5c9943e64441f8934371e2e1a37d1b 3 | timeCreated: 1527148632 -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Tests.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 80ed04c9e0fd44c55a519ae3a0d99d8b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Tests/EnumSelection-UnitTest.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "EnumSelection-Test", 3 | "references": [ 4 | "EnumSelection-Scripts" 5 | ], 6 | "optionalUnityReferences": [ 7 | "TestAssemblies" 8 | ], 9 | "includePlatforms": [ 10 | "Editor" 11 | ], 12 | "excludePlatforms": [], 13 | "allowUnsafeCode": false 14 | } -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Tests/EnumSelection-UnitTest.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d79258621cfe948368bdbabd4d21f8b2 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Tests/EnumSelectionTests.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | 3 | namespace EnumSelectionTool 4 | { 5 | public class EnumSelectionTests 6 | { 7 | [Test] 8 | public void GetTypeTest() 9 | { 10 | var selection1 = new EnumSelection() 11 | { 12 | AssemblyName = typeof(EnumTest1).Assembly.GetName().Name, 13 | ClassName = typeof(EnumTest1).FullName, 14 | ClassValue = "Value2" 15 | }; 16 | Assert.AreEqual(EnumTest1.Value2, selection1.GetEnum()); 17 | Assert.AreEqual(EnumTest1.Value2, selection1.GetEnum(typeof(EnumTest1))); 18 | Assert.AreEqual(EnumTest1.Value2, selection1.GetEnum()); 19 | 20 | var selectionEmpty = new EnumSelection(); 21 | Assert.IsNull(selectionEmpty.GetEnum()); 22 | Assert.IsNull(selectionEmpty.GetEnum(typeof(EnumTest1))); 23 | Assert.IsNull(selectionEmpty.GetEnum()); 24 | 25 | var selectionInvalid1 = new EnumSelection() 26 | { 27 | AssemblyName = "Invalid", 28 | ClassName = "Invalid", 29 | ClassValue = "Invalid", 30 | }; 31 | var selectionInvalid2 = new EnumSelection() 32 | { 33 | AssemblyName = typeof(EnumTest1).Assembly.GetName().Name, 34 | ClassName = typeof(EnumTest1).FullName, 35 | ClassValue = "Invalid", 36 | }; 37 | Assert.IsNull(selectionInvalid1.GetEnum()); 38 | Assert.IsNull(selectionInvalid1.GetEnum(typeof(EnumTest1))); 39 | Assert.IsNull(selectionInvalid1.GetEnum()); 40 | Assert.IsNull(selectionInvalid2.GetEnum()); 41 | Assert.IsNull(selectionInvalid2.GetEnum(typeof(EnumTest1))); 42 | Assert.IsNull(selectionInvalid2.GetEnum()); 43 | 44 | var selectionConstructor1 = new EnumSelection(typeof(EnumTest1)); 45 | var selectionConstructor2 = new EnumSelection(EnumTest1.Value1); 46 | Assert.AreEqual(typeof(EnumTest1).Assembly.GetName().Name, selectionConstructor1.AssemblyName); 47 | Assert.AreEqual("EnumSelectionTool.EnumTest1", selectionConstructor1.ClassName); 48 | Assert.IsNull(selectionConstructor1.ClassValue); 49 | 50 | Assert.AreEqual(typeof(EnumTest1).Assembly.GetName().Name, selectionConstructor2.AssemblyName); 51 | Assert.AreEqual("EnumSelectionTool.EnumTest1", selectionConstructor2.ClassName); 52 | Assert.AreEqual("Value1", selectionConstructor2.ClassValue); 53 | } 54 | 55 | [Test] 56 | public void IsEnumClassTest() 57 | { 58 | Assert.IsTrue(new EnumSelection(typeof(EnumTest1)).IsEnumClass()); 59 | Assert.IsTrue(new EnumSelection(typeof(EnumTest1)).IsEnumClass(typeof(EnumTest1))); 60 | Assert.IsFalse(new EnumSelection(typeof(EnumTest1)).IsEnumClass()); 61 | Assert.IsFalse(new EnumSelection(typeof(EnumTest1)).IsEnumClass(typeof(EnumTest2))); 62 | 63 | Assert.IsTrue(new EnumSelection(EnumTest1.Value1).IsEnumClass()); 64 | Assert.IsTrue(new EnumSelection(EnumTest1.Value1).IsEnumClass(typeof(EnumTest1))); 65 | Assert.IsFalse(new EnumSelection(EnumTest1.Value1).IsEnumClass()); 66 | Assert.IsFalse(new EnumSelection(EnumTest1.Value1).IsEnumClass(typeof(EnumTest2))); 67 | } 68 | 69 | [Test] 70 | public void CanParse() 71 | { 72 | Assert.IsTrue(new EnumSelection(EnumTest1.Value1).CanParse()); 73 | Assert.IsFalse(new EnumSelection(typeof(EnumTest1)).CanParse()); 74 | Assert.IsFalse(new EnumSelection().CanParse()); 75 | Assert.IsFalse(new EnumSelection() 76 | { 77 | AssemblyName = typeof(EnumTest1).Assembly.GetName().Name, 78 | ClassName = typeof(EnumTest1).FullName, 79 | ClassValue = "Invalid", 80 | }.CanParse()); 81 | } 82 | } 83 | 84 | public enum EnumTest1 85 | { 86 | Value1, 87 | Value2, 88 | } 89 | 90 | public enum EnumTest2 91 | { 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /Assets/Plugins/EnumSelection/Tests/EnumSelectionTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f8678c146a100420fae3afa827d72f13 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright 2018 mattak 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | } 4 | } 5 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 1024 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 7 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 1 23 | m_ClothInterCollisionSettingsToggle: 0 24 | m_ContactPairsMode: 0 25 | m_BroadphaseType: 0 26 | m_WorldBounds: 27 | m_Center: {x: 0, y: 0, z: 0} 28 | m_Extent: {x: 250, y: 250, z: 250} 29 | m_WorldSubdivisions: 8 30 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/Scenes/SampleScene.unity 10 | guid: 99c9720ab356a0642a771bea13969a05 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 7 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 2 10 | m_DefaultBehaviorMode: 0 11 | m_SpritePackerMode: 0 12 | m_SpritePackerPaddingPower: 1 13 | m_EtcTextureCompressorBehavior: 1 14 | m_EtcTextureFastCompressor: 1 15 | m_EtcTextureNormalCompressor: 2 16 | m_EtcTextureBestCompressor: 4 17 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd 18 | m_ProjectGenerationRootNamespace: 19 | m_UserGeneratedProjectSuffix: 20 | m_CollabEditorSettings: 21 | inProgressEnabled: 1 22 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_AutoSyncTransforms: 1 28 | m_AlwaysShowColliders: 0 29 | m_ShowColliderSleep: 1 30 | m_ShowColliderContacts: 0 31 | m_ShowColliderAABB: 0 32 | m_ContactArrowScale: 0.2 33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 38 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: 7 | - type: 8 | m_NativeTypeID: 108 9 | m_ManagedTypePPtr: {fileID: 0} 10 | m_ManagedTypeFallback: 11 | defaultPresets: 12 | - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea, 13 | type: 2} 14 | - type: 15 | m_NativeTypeID: 1020 16 | m_ManagedTypePPtr: {fileID: 0} 17 | m_ManagedTypeFallback: 18 | defaultPresets: 19 | - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6, 20 | type: 2} 21 | - type: 22 | m_NativeTypeID: 1006 23 | m_ManagedTypePPtr: {fileID: 0} 24 | m_ManagedTypeFallback: 25 | defaultPresets: 26 | - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9, 27 | type: 2} 28 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 15 7 | productGUID: fc0ad1761958540ecaaf38a451da3960 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: DefaultCompany 16 | productName: EditorTypes 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 53 | iosShowActivityIndicatorOnLoading: -1 54 | androidShowActivityIndicatorOnLoading: -1 55 | tizenShowActivityIndicatorOnLoading: -1 56 | iosAppInBackgroundBehavior: 0 57 | displayResolutionDialog: 1 58 | iosAllowHTTPDownload: 1 59 | allowedAutorotateToPortrait: 1 60 | allowedAutorotateToPortraitUpsideDown: 1 61 | allowedAutorotateToLandscapeRight: 1 62 | allowedAutorotateToLandscapeLeft: 1 63 | useOSAutorotation: 1 64 | use32BitDisplayBuffer: 1 65 | preserveFramebufferAlpha: 0 66 | disableDepthAndStencilBuffers: 0 67 | androidBlitType: 0 68 | defaultIsNativeResolution: 1 69 | macRetinaSupport: 1 70 | runInBackground: 1 71 | captureSingleScreen: 0 72 | muteOtherAudioSources: 0 73 | Prepare IOS For Recording: 0 74 | Force IOS Speakers When Recording: 0 75 | deferSystemGesturesMode: 0 76 | hideHomeButton: 0 77 | submitAnalytics: 1 78 | usePlayerLog: 1 79 | bakeCollisionMeshes: 0 80 | forceSingleInstance: 0 81 | resizableWindow: 0 82 | useMacAppStoreValidation: 0 83 | macAppStoreCategory: public.app-category.games 84 | gpuSkinning: 1 85 | graphicsJobs: 0 86 | xboxPIXTextureCapture: 0 87 | xboxEnableAvatar: 0 88 | xboxEnableKinect: 0 89 | xboxEnableKinectAutoTracking: 0 90 | xboxEnableFitness: 0 91 | visibleInBackground: 1 92 | allowFullscreenSwitch: 1 93 | graphicsJobMode: 0 94 | fullscreenMode: 1 95 | xboxSpeechDB: 0 96 | xboxEnableHeadOrientation: 0 97 | xboxEnableGuest: 0 98 | xboxEnablePIXSampling: 0 99 | metalFramebufferOnly: 0 100 | n3dsDisableStereoscopicView: 0 101 | n3dsEnableSharedListOpt: 1 102 | n3dsEnableVSync: 0 103 | xboxOneResolution: 0 104 | xboxOneSResolution: 0 105 | xboxOneXResolution: 3 106 | xboxOneMonoLoggingLevel: 0 107 | xboxOneLoggingLevel: 1 108 | xboxOneDisableEsram: 0 109 | xboxOnePresentImmediateThreshold: 0 110 | switchQueueCommandMemory: 0 111 | videoMemoryForVertexBuffers: 0 112 | psp2PowerMode: 0 113 | psp2AcquireBGM: 1 114 | m_SupportedAspectRatios: 115 | 4:3: 1 116 | 5:4: 1 117 | 16:10: 1 118 | 16:9: 1 119 | Others: 1 120 | bundleVersion: 0.1 121 | preloadedAssets: [] 122 | metroInputSource: 0 123 | wsaTransparentSwapchain: 0 124 | m_HolographicPauseOnTrackingLoss: 1 125 | xboxOneDisableKinectGpuReservation: 0 126 | xboxOneEnable7thCore: 0 127 | vrSettings: 128 | cardboard: 129 | depthFormat: 0 130 | enableTransitionView: 0 131 | daydream: 132 | depthFormat: 0 133 | useSustainedPerformanceMode: 0 134 | enableVideoLayer: 0 135 | useProtectedVideoMemory: 0 136 | minimumSupportedHeadTracking: 0 137 | maximumSupportedHeadTracking: 1 138 | hololens: 139 | depthFormat: 1 140 | depthBufferSharingEnabled: 0 141 | enable360StereoCapture: 0 142 | oculus: 143 | sharedDepthBuffer: 0 144 | dashSupport: 0 145 | protectGraphicsMemory: 0 146 | useHDRDisplay: 0 147 | m_ColorGamuts: 00000000 148 | targetPixelDensity: 30 149 | resolutionScalingMode: 0 150 | androidSupportedAspectRatio: 1 151 | androidMaxAspectRatio: 2.1 152 | applicationIdentifier: {} 153 | buildNumber: {} 154 | AndroidBundleVersionCode: 1 155 | AndroidMinSdkVersion: 16 156 | AndroidTargetSdkVersion: 0 157 | AndroidPreferredInstallLocation: 1 158 | aotOptions: 159 | stripEngineCode: 1 160 | iPhoneStrippingLevel: 0 161 | iPhoneScriptCallOptimization: 0 162 | ForceInternetPermission: 0 163 | ForceSDCardPermission: 0 164 | CreateWallpaper: 0 165 | APKExpansionFiles: 0 166 | keepLoadedShadersAlive: 0 167 | StripUnusedMeshComponents: 1 168 | VertexChannelCompressionMask: 4054 169 | iPhoneSdkVersion: 988 170 | iOSTargetOSVersionString: 8.0 171 | tvOSSdkVersion: 0 172 | tvOSRequireExtendedGameController: 0 173 | tvOSTargetOSVersionString: 9.0 174 | uIPrerenderedIcon: 0 175 | uIRequiresPersistentWiFi: 0 176 | uIRequiresFullScreen: 1 177 | uIStatusBarHidden: 1 178 | uIExitOnSuspend: 0 179 | uIStatusBarStyle: 0 180 | iPhoneSplashScreen: {fileID: 0} 181 | iPhoneHighResSplashScreen: {fileID: 0} 182 | iPhoneTallHighResSplashScreen: {fileID: 0} 183 | iPhone47inSplashScreen: {fileID: 0} 184 | iPhone55inPortraitSplashScreen: {fileID: 0} 185 | iPhone55inLandscapeSplashScreen: {fileID: 0} 186 | iPhone58inPortraitSplashScreen: {fileID: 0} 187 | iPhone58inLandscapeSplashScreen: {fileID: 0} 188 | iPadPortraitSplashScreen: {fileID: 0} 189 | iPadHighResPortraitSplashScreen: {fileID: 0} 190 | iPadLandscapeSplashScreen: {fileID: 0} 191 | iPadHighResLandscapeSplashScreen: {fileID: 0} 192 | appleTVSplashScreen: {fileID: 0} 193 | appleTVSplashScreen2x: {fileID: 0} 194 | tvOSSmallIconLayers: [] 195 | tvOSSmallIconLayers2x: [] 196 | tvOSLargeIconLayers: [] 197 | tvOSLargeIconLayers2x: [] 198 | tvOSTopShelfImageLayers: [] 199 | tvOSTopShelfImageLayers2x: [] 200 | tvOSTopShelfImageWideLayers: [] 201 | tvOSTopShelfImageWideLayers2x: [] 202 | iOSLaunchScreenType: 0 203 | iOSLaunchScreenPortrait: {fileID: 0} 204 | iOSLaunchScreenLandscape: {fileID: 0} 205 | iOSLaunchScreenBackgroundColor: 206 | serializedVersion: 2 207 | rgba: 0 208 | iOSLaunchScreenFillPct: 100 209 | iOSLaunchScreenSize: 100 210 | iOSLaunchScreenCustomXibPath: 211 | iOSLaunchScreeniPadType: 0 212 | iOSLaunchScreeniPadImage: {fileID: 0} 213 | iOSLaunchScreeniPadBackgroundColor: 214 | serializedVersion: 2 215 | rgba: 0 216 | iOSLaunchScreeniPadFillPct: 100 217 | iOSLaunchScreeniPadSize: 100 218 | iOSLaunchScreeniPadCustomXibPath: 219 | iOSUseLaunchScreenStoryboard: 0 220 | iOSLaunchScreenCustomStoryboardPath: 221 | iOSDeviceRequirements: [] 222 | iOSURLSchemes: [] 223 | iOSBackgroundModes: 0 224 | iOSMetalForceHardShadows: 0 225 | metalEditorSupport: 1 226 | metalAPIValidation: 1 227 | iOSRenderExtraFrameOnPause: 0 228 | appleDeveloperTeamID: 229 | iOSManualSigningProvisioningProfileID: 230 | tvOSManualSigningProvisioningProfileID: 231 | iOSManualSigningProvisioningProfileType: 0 232 | tvOSManualSigningProvisioningProfileType: 0 233 | appleEnableAutomaticSigning: 0 234 | iOSRequireARKit: 0 235 | appleEnableProMotion: 0 236 | clonedFromGUID: 56e7a2d3a00f33d44bdd161b773c35b5 237 | templatePackageId: com.unity.template.3d@1.0.0 238 | templateDefaultScene: Assets/Scenes/SampleScene.unity 239 | AndroidTargetArchitectures: 5 240 | AndroidSplashScreenScale: 0 241 | androidSplashScreen: {fileID: 0} 242 | AndroidKeystoreName: 243 | AndroidKeyaliasName: 244 | AndroidTVCompatibility: 1 245 | AndroidIsGame: 1 246 | AndroidEnableTango: 0 247 | androidEnableBanner: 1 248 | androidUseLowAccuracyLocation: 0 249 | m_AndroidBanners: 250 | - width: 320 251 | height: 180 252 | banner: {fileID: 0} 253 | androidGamepadSupportLevel: 0 254 | resolutionDialogBanner: {fileID: 0} 255 | m_BuildTargetIcons: [] 256 | m_BuildTargetPlatformIcons: [] 257 | m_BuildTargetBatching: 258 | - m_BuildTarget: Standalone 259 | m_StaticBatching: 1 260 | m_DynamicBatching: 0 261 | - m_BuildTarget: tvOS 262 | m_StaticBatching: 1 263 | m_DynamicBatching: 0 264 | - m_BuildTarget: Android 265 | m_StaticBatching: 1 266 | m_DynamicBatching: 0 267 | - m_BuildTarget: iPhone 268 | m_StaticBatching: 1 269 | m_DynamicBatching: 0 270 | - m_BuildTarget: WebGL 271 | m_StaticBatching: 0 272 | m_DynamicBatching: 0 273 | m_BuildTargetGraphicsAPIs: 274 | - m_BuildTarget: AndroidPlayer 275 | m_APIs: 0b00000015000000 276 | m_Automatic: 1 277 | - m_BuildTarget: iOSSupport 278 | m_APIs: 10000000 279 | m_Automatic: 1 280 | - m_BuildTarget: AppleTVSupport 281 | m_APIs: 10000000 282 | m_Automatic: 0 283 | - m_BuildTarget: WebGLSupport 284 | m_APIs: 0b000000 285 | m_Automatic: 1 286 | m_BuildTargetVRSettings: 287 | - m_BuildTarget: Standalone 288 | m_Enabled: 0 289 | m_Devices: 290 | - Oculus 291 | - OpenVR 292 | m_BuildTargetEnableVuforiaSettings: [] 293 | openGLRequireES31: 0 294 | openGLRequireES31AEP: 0 295 | m_TemplateCustomTags: {} 296 | mobileMTRendering: 297 | Android: 1 298 | iPhone: 1 299 | tvOS: 1 300 | m_BuildTargetGroupLightmapEncodingQuality: [] 301 | playModeTestRunnerEnabled: 0 302 | runPlayModeTestAsEditModeTest: 0 303 | actionOnDotNetUnhandledException: 1 304 | enableInternalProfiler: 0 305 | logObjCUncaughtExceptions: 1 306 | enableCrashReportAPI: 0 307 | cameraUsageDescription: 308 | locationUsageDescription: 309 | microphoneUsageDescription: 310 | switchNetLibKey: 311 | switchSocketMemoryPoolSize: 6144 312 | switchSocketAllocatorPoolSize: 128 313 | switchSocketConcurrencyLimit: 14 314 | switchScreenResolutionBehavior: 2 315 | switchUseCPUProfiler: 0 316 | switchApplicationID: 0x01004b9000490000 317 | switchNSODependencies: 318 | switchTitleNames_0: 319 | switchTitleNames_1: 320 | switchTitleNames_2: 321 | switchTitleNames_3: 322 | switchTitleNames_4: 323 | switchTitleNames_5: 324 | switchTitleNames_6: 325 | switchTitleNames_7: 326 | switchTitleNames_8: 327 | switchTitleNames_9: 328 | switchTitleNames_10: 329 | switchTitleNames_11: 330 | switchTitleNames_12: 331 | switchTitleNames_13: 332 | switchTitleNames_14: 333 | switchPublisherNames_0: 334 | switchPublisherNames_1: 335 | switchPublisherNames_2: 336 | switchPublisherNames_3: 337 | switchPublisherNames_4: 338 | switchPublisherNames_5: 339 | switchPublisherNames_6: 340 | switchPublisherNames_7: 341 | switchPublisherNames_8: 342 | switchPublisherNames_9: 343 | switchPublisherNames_10: 344 | switchPublisherNames_11: 345 | switchPublisherNames_12: 346 | switchPublisherNames_13: 347 | switchPublisherNames_14: 348 | switchIcons_0: {fileID: 0} 349 | switchIcons_1: {fileID: 0} 350 | switchIcons_2: {fileID: 0} 351 | switchIcons_3: {fileID: 0} 352 | switchIcons_4: {fileID: 0} 353 | switchIcons_5: {fileID: 0} 354 | switchIcons_6: {fileID: 0} 355 | switchIcons_7: {fileID: 0} 356 | switchIcons_8: {fileID: 0} 357 | switchIcons_9: {fileID: 0} 358 | switchIcons_10: {fileID: 0} 359 | switchIcons_11: {fileID: 0} 360 | switchIcons_12: {fileID: 0} 361 | switchIcons_13: {fileID: 0} 362 | switchIcons_14: {fileID: 0} 363 | switchSmallIcons_0: {fileID: 0} 364 | switchSmallIcons_1: {fileID: 0} 365 | switchSmallIcons_2: {fileID: 0} 366 | switchSmallIcons_3: {fileID: 0} 367 | switchSmallIcons_4: {fileID: 0} 368 | switchSmallIcons_5: {fileID: 0} 369 | switchSmallIcons_6: {fileID: 0} 370 | switchSmallIcons_7: {fileID: 0} 371 | switchSmallIcons_8: {fileID: 0} 372 | switchSmallIcons_9: {fileID: 0} 373 | switchSmallIcons_10: {fileID: 0} 374 | switchSmallIcons_11: {fileID: 0} 375 | switchSmallIcons_12: {fileID: 0} 376 | switchSmallIcons_13: {fileID: 0} 377 | switchSmallIcons_14: {fileID: 0} 378 | switchManualHTML: 379 | switchAccessibleURLs: 380 | switchLegalInformation: 381 | switchMainThreadStackSize: 1048576 382 | switchPresenceGroupId: 383 | switchLogoHandling: 0 384 | switchReleaseVersion: 0 385 | switchDisplayVersion: 1.0.0 386 | switchStartupUserAccount: 0 387 | switchTouchScreenUsage: 0 388 | switchSupportedLanguagesMask: 0 389 | switchLogoType: 0 390 | switchApplicationErrorCodeCategory: 391 | switchUserAccountSaveDataSize: 0 392 | switchUserAccountSaveDataJournalSize: 0 393 | switchApplicationAttribute: 0 394 | switchCardSpecSize: -1 395 | switchCardSpecClock: -1 396 | switchRatingsMask: 0 397 | switchRatingsInt_0: 0 398 | switchRatingsInt_1: 0 399 | switchRatingsInt_2: 0 400 | switchRatingsInt_3: 0 401 | switchRatingsInt_4: 0 402 | switchRatingsInt_5: 0 403 | switchRatingsInt_6: 0 404 | switchRatingsInt_7: 0 405 | switchRatingsInt_8: 0 406 | switchRatingsInt_9: 0 407 | switchRatingsInt_10: 0 408 | switchRatingsInt_11: 0 409 | switchLocalCommunicationIds_0: 410 | switchLocalCommunicationIds_1: 411 | switchLocalCommunicationIds_2: 412 | switchLocalCommunicationIds_3: 413 | switchLocalCommunicationIds_4: 414 | switchLocalCommunicationIds_5: 415 | switchLocalCommunicationIds_6: 416 | switchLocalCommunicationIds_7: 417 | switchParentalControl: 0 418 | switchAllowsScreenshot: 1 419 | switchAllowsVideoCapturing: 1 420 | switchAllowsRuntimeAddOnContentInstall: 0 421 | switchDataLossConfirmation: 0 422 | switchSupportedNpadStyles: 3 423 | switchSocketConfigEnabled: 0 424 | switchTcpInitialSendBufferSize: 32 425 | switchTcpInitialReceiveBufferSize: 64 426 | switchTcpAutoSendBufferSizeMax: 256 427 | switchTcpAutoReceiveBufferSizeMax: 256 428 | switchUdpSendBufferSize: 9 429 | switchUdpReceiveBufferSize: 42 430 | switchSocketBufferEfficiency: 4 431 | switchSocketInitializeEnabled: 1 432 | switchNetworkInterfaceManagerInitializeEnabled: 1 433 | switchPlayerConnectionEnabled: 1 434 | ps4NPAgeRating: 12 435 | ps4NPTitleSecret: 436 | ps4NPTrophyPackPath: 437 | ps4ParentalLevel: 11 438 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 439 | ps4Category: 0 440 | ps4MasterVersion: 01.00 441 | ps4AppVersion: 01.00 442 | ps4AppType: 0 443 | ps4ParamSfxPath: 444 | ps4VideoOutPixelFormat: 0 445 | ps4VideoOutInitialWidth: 1920 446 | ps4VideoOutBaseModeInitialWidth: 1920 447 | ps4VideoOutReprojectionRate: 60 448 | ps4PronunciationXMLPath: 449 | ps4PronunciationSIGPath: 450 | ps4BackgroundImagePath: 451 | ps4StartupImagePath: 452 | ps4StartupImagesFolder: 453 | ps4IconImagesFolder: 454 | ps4SaveDataImagePath: 455 | ps4SdkOverride: 456 | ps4BGMPath: 457 | ps4ShareFilePath: 458 | ps4ShareOverlayImagePath: 459 | ps4PrivacyGuardImagePath: 460 | ps4NPtitleDatPath: 461 | ps4RemotePlayKeyAssignment: -1 462 | ps4RemotePlayKeyMappingDir: 463 | ps4PlayTogetherPlayerCount: 0 464 | ps4EnterButtonAssignment: 1 465 | ps4ApplicationParam1: 0 466 | ps4ApplicationParam2: 0 467 | ps4ApplicationParam3: 0 468 | ps4ApplicationParam4: 0 469 | ps4DownloadDataSize: 0 470 | ps4GarlicHeapSize: 2048 471 | ps4ProGarlicHeapSize: 2560 472 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 473 | ps4pnSessions: 1 474 | ps4pnPresence: 1 475 | ps4pnFriends: 1 476 | ps4pnGameCustomData: 1 477 | playerPrefsSupport: 0 478 | enableApplicationExit: 0 479 | restrictedAudioUsageRights: 0 480 | ps4UseResolutionFallback: 0 481 | ps4ReprojectionSupport: 0 482 | ps4UseAudio3dBackend: 0 483 | ps4SocialScreenEnabled: 0 484 | ps4ScriptOptimizationLevel: 0 485 | ps4Audio3dVirtualSpeakerCount: 14 486 | ps4attribCpuUsage: 0 487 | ps4PatchPkgPath: 488 | ps4PatchLatestPkgPath: 489 | ps4PatchChangeinfoPath: 490 | ps4PatchDayOne: 0 491 | ps4attribUserManagement: 0 492 | ps4attribMoveSupport: 0 493 | ps4attrib3DSupport: 0 494 | ps4attribShareSupport: 0 495 | ps4attribExclusiveVR: 0 496 | ps4disableAutoHideSplash: 0 497 | ps4videoRecordingFeaturesUsed: 0 498 | ps4contentSearchFeaturesUsed: 0 499 | ps4attribEyeToEyeDistanceSettingVR: 0 500 | ps4IncludedModules: [] 501 | monoEnv: 502 | psp2Splashimage: {fileID: 0} 503 | psp2NPTrophyPackPath: 504 | psp2NPSupportGBMorGJP: 0 505 | psp2NPAgeRating: 12 506 | psp2NPTitleDatPath: 507 | psp2NPCommsID: 508 | psp2NPCommunicationsID: 509 | psp2NPCommsPassphrase: 510 | psp2NPCommsSig: 511 | psp2ParamSfxPath: 512 | psp2ManualPath: 513 | psp2LiveAreaGatePath: 514 | psp2LiveAreaBackroundPath: 515 | psp2LiveAreaPath: 516 | psp2LiveAreaTrialPath: 517 | psp2PatchChangeInfoPath: 518 | psp2PatchOriginalPackage: 519 | psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui 520 | psp2KeystoneFile: 521 | psp2MemoryExpansionMode: 0 522 | psp2DRMType: 0 523 | psp2StorageType: 0 524 | psp2MediaCapacity: 0 525 | psp2DLCConfigPath: 526 | psp2ThumbnailPath: 527 | psp2BackgroundPath: 528 | psp2SoundPath: 529 | psp2TrophyCommId: 530 | psp2TrophyPackagePath: 531 | psp2PackagedResourcesPath: 532 | psp2SaveDataQuota: 10240 533 | psp2ParentalLevel: 1 534 | psp2ShortTitle: Not Set 535 | psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF 536 | psp2Category: 0 537 | psp2MasterVersion: 01.00 538 | psp2AppVersion: 01.00 539 | psp2TVBootMode: 0 540 | psp2EnterButtonAssignment: 2 541 | psp2TVDisableEmu: 0 542 | psp2AllowTwitterDialog: 1 543 | psp2Upgradable: 0 544 | psp2HealthWarning: 0 545 | psp2UseLibLocation: 0 546 | psp2InfoBarOnStartup: 0 547 | psp2InfoBarColor: 0 548 | psp2ScriptOptimizationLevel: 0 549 | splashScreenBackgroundSourceLandscape: {fileID: 0} 550 | splashScreenBackgroundSourcePortrait: {fileID: 0} 551 | spritePackerPolicy: 552 | webGLMemorySize: 256 553 | webGLExceptionSupport: 1 554 | webGLNameFilesAsHashes: 0 555 | webGLDataCaching: 0 556 | webGLDebugSymbols: 0 557 | webGLEmscriptenArgs: 558 | webGLModulesDirectory: 559 | webGLTemplate: APPLICATION:Default 560 | webGLAnalyzeBuildSize: 0 561 | webGLUseEmbeddedResources: 0 562 | webGLCompressionFormat: 1 563 | webGLLinkerTarget: 0 564 | scriptingDefineSymbols: 565 | 1: UNITY_POST_PROCESSING_STACK_V2 566 | 4: UNITY_POST_PROCESSING_STACK_V2 567 | 7: UNITY_POST_PROCESSING_STACK_V2 568 | 13: UNITY_POST_PROCESSING_STACK_V2 569 | 17: UNITY_POST_PROCESSING_STACK_V2 570 | 18: UNITY_POST_PROCESSING_STACK_V2 571 | 19: UNITY_POST_PROCESSING_STACK_V2 572 | 21: UNITY_POST_PROCESSING_STACK_V2 573 | 23: UNITY_POST_PROCESSING_STACK_V2 574 | 24: UNITY_POST_PROCESSING_STACK_V2 575 | 25: UNITY_POST_PROCESSING_STACK_V2 576 | 26: UNITY_POST_PROCESSING_STACK_V2 577 | 27: UNITY_POST_PROCESSING_STACK_V2 578 | platformArchitecture: {} 579 | scriptingBackend: {} 580 | il2cppCompilerConfiguration: {} 581 | incrementalIl2cppBuild: {} 582 | allowUnsafeCode: 0 583 | additionalIl2CppArgs: 584 | scriptingRuntimeVersion: 0 585 | apiCompatibilityLevelPerPlatform: 586 | Standalone: 3 587 | m_RenderingPath: 1 588 | m_MobileRenderingPath: 1 589 | metroPackageName: Template_3D 590 | metroPackageVersion: 591 | metroCertificatePath: 592 | metroCertificatePassword: 593 | metroCertificateSubject: 594 | metroCertificateIssuer: 595 | metroCertificateNotAfter: 0000000000000000 596 | metroApplicationDescription: Template_3D 597 | wsaImages: {} 598 | metroTileShortName: 599 | metroCommandLineArgsFile: 600 | metroTileShowName: 0 601 | metroMediumTileShowName: 0 602 | metroLargeTileShowName: 0 603 | metroWideTileShowName: 0 604 | metroDefaultTileSize: 1 605 | metroTileForegroundText: 2 606 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 607 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 608 | a: 1} 609 | metroSplashScreenUseBackgroundColor: 0 610 | platformCapabilities: {} 611 | metroFTAName: 612 | metroFTAFileTypes: [] 613 | metroProtocolName: 614 | metroCompilationOverrides: 1 615 | tizenProductDescription: 616 | tizenProductURL: 617 | tizenSigningProfileName: 618 | tizenGPSPermissions: 0 619 | tizenMicrophonePermissions: 0 620 | tizenDeploymentTarget: 621 | tizenDeploymentTargetType: -1 622 | tizenMinOSVersion: 1 623 | n3dsUseExtSaveData: 0 624 | n3dsCompressStaticMem: 1 625 | n3dsExtSaveDataNumber: 0x12345 626 | n3dsStackSize: 131072 627 | n3dsTargetPlatform: 2 628 | n3dsRegion: 7 629 | n3dsMediaSize: 0 630 | n3dsLogoStyle: 3 631 | n3dsTitle: GameName 632 | n3dsProductCode: 633 | n3dsApplicationId: 0xFF3FF 634 | XboxOneProductId: 635 | XboxOneUpdateKey: 636 | XboxOneSandboxId: 637 | XboxOneContentId: 638 | XboxOneTitleId: 639 | XboxOneSCId: 640 | XboxOneGameOsOverridePath: 641 | XboxOnePackagingOverridePath: 642 | XboxOneAppManifestOverridePath: 643 | XboxOnePackageEncryption: 0 644 | XboxOnePackageUpdateGranularity: 2 645 | XboxOneDescription: 646 | XboxOneLanguage: 647 | - enus 648 | XboxOneCapability: [] 649 | XboxOneGameRating: {} 650 | XboxOneIsContentPackage: 0 651 | XboxOneEnableGPUVariability: 0 652 | XboxOneSockets: {} 653 | XboxOneSplashScreen: {fileID: 0} 654 | XboxOneAllowedProductIds: [] 655 | XboxOnePersistentLocalStorageSize: 0 656 | XboxOneXTitleMemory: 8 657 | xboxOneScriptCompiler: 0 658 | vrEditorSettings: 659 | daydream: 660 | daydreamIconForeground: {fileID: 0} 661 | daydreamIconBackground: {fileID: 0} 662 | cloudServicesEnabled: 663 | UNet: 1 664 | facebookSdkVersion: 7.9.4 665 | apiCompatibilityLevel: 3 666 | cloudProjectId: db63320b-1e55-4a04-ab1a-3ec620d8eb79 667 | projectName: EditorTypes 668 | organizationId: mattak 669 | cloudEnabled: 0 670 | enableNativePlatformBackendsForNewInputSystem: 0 671 | disableOldInputManagerSupport: 0 672 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2018.1.0f2 2 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 4 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 4 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: Low 39 | pixelLightCount: 0 40 | shadows: 0 41 | shadowResolution: 0 42 | shadowProjection: 1 43 | shadowCascades: 1 44 | shadowDistance: 20 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 0 49 | blendWeights: 2 50 | textureQuality: 0 51 | anisotropicTextures: 0 52 | antiAliasing: 0 53 | softParticles: 0 54 | softVegetation: 0 55 | realtimeReflectionProbes: 0 56 | billboardsFaceCameraPosition: 0 57 | vSyncCount: 0 58 | lodBias: 0.4 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 16 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 4 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | - serializedVersion: 2 66 | name: Medium 67 | pixelLightCount: 1 68 | shadows: 1 69 | shadowResolution: 0 70 | shadowProjection: 1 71 | shadowCascades: 1 72 | shadowDistance: 20 73 | shadowNearPlaneOffset: 3 74 | shadowCascade2Split: 0.33333334 75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 76 | shadowmaskMode: 0 77 | blendWeights: 2 78 | textureQuality: 0 79 | anisotropicTextures: 1 80 | antiAliasing: 0 81 | softParticles: 0 82 | softVegetation: 0 83 | realtimeReflectionProbes: 0 84 | billboardsFaceCameraPosition: 0 85 | vSyncCount: 1 86 | lodBias: 0.7 87 | maximumLODLevel: 0 88 | particleRaycastBudget: 64 89 | asyncUploadTimeSlice: 2 90 | asyncUploadBufferSize: 4 91 | resolutionScalingFixedDPIFactor: 1 92 | excludedTargetPlatforms: [] 93 | - serializedVersion: 2 94 | name: High 95 | pixelLightCount: 2 96 | shadows: 2 97 | shadowResolution: 1 98 | shadowProjection: 1 99 | shadowCascades: 2 100 | shadowDistance: 40 101 | shadowNearPlaneOffset: 3 102 | shadowCascade2Split: 0.33333334 103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 104 | shadowmaskMode: 1 105 | blendWeights: 2 106 | textureQuality: 0 107 | anisotropicTextures: 1 108 | antiAliasing: 2 109 | softParticles: 0 110 | softVegetation: 1 111 | realtimeReflectionProbes: 1 112 | billboardsFaceCameraPosition: 1 113 | vSyncCount: 1 114 | lodBias: 1 115 | maximumLODLevel: 0 116 | particleRaycastBudget: 256 117 | asyncUploadTimeSlice: 2 118 | asyncUploadBufferSize: 4 119 | resolutionScalingFixedDPIFactor: 1 120 | excludedTargetPlatforms: [] 121 | - serializedVersion: 2 122 | name: Very High 123 | pixelLightCount: 3 124 | shadows: 2 125 | shadowResolution: 2 126 | shadowProjection: 1 127 | shadowCascades: 2 128 | shadowDistance: 40 129 | shadowNearPlaneOffset: 3 130 | shadowCascade2Split: 0.33333334 131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 132 | shadowmaskMode: 1 133 | blendWeights: 4 134 | textureQuality: 0 135 | anisotropicTextures: 1 136 | antiAliasing: 4 137 | softParticles: 1 138 | softVegetation: 1 139 | realtimeReflectionProbes: 1 140 | billboardsFaceCameraPosition: 1 141 | vSyncCount: 1 142 | lodBias: 1.5 143 | maximumLODLevel: 0 144 | particleRaycastBudget: 1024 145 | asyncUploadTimeSlice: 2 146 | asyncUploadBufferSize: 4 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Ultra 151 | pixelLightCount: 4 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 4 156 | shadowDistance: 150 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 1 164 | antiAliasing: 4 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 2 171 | maximumLODLevel: 0 172 | particleRaycastBudget: 4096 173 | asyncUploadTimeSlice: 2 174 | asyncUploadBufferSize: 4 175 | resolutionScalingFixedDPIFactor: 1 176 | excludedTargetPlatforms: [] 177 | m_PerPlatformDefaultQuality: 178 | Android: 2 179 | Nintendo 3DS: 5 180 | Nintendo Switch: 5 181 | PS4: 5 182 | PSP2: 2 183 | Standalone: 5 184 | Tizen: 2 185 | WebGL: 3 186 | WiiU: 5 187 | Windows Store Apps: 5 188 | XboxOne: 5 189 | iPhone: 2 190 | tvOS: 2 191 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - PostProcessing 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.0167 7 | Maximum Allowed Timestep: 0.1 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | m_Enabled: 0 7 | m_TestMode: 0 8 | m_TestEventUrl: 9 | m_TestConfigUrl: 10 | m_TestInitMode: 0 11 | CrashReportingSettings: 12 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes 13 | m_NativeEventUrl: https://perf-events.cloud.unity3d.com/symbolicate 14 | m_Enabled: 0 15 | m_CaptureEditorExceptions: 1 16 | UnityPurchasingSettings: 17 | m_Enabled: 0 18 | m_TestMode: 0 19 | UnityAnalyticsSettings: 20 | m_Enabled: 1 21 | m_InitializeOnStartup: 1 22 | m_TestMode: 0 23 | m_TestEventUrl: 24 | m_TestConfigUrl: 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # EnumSelection 2 | 3 | EnumSelection shows popups which can select enum class & value. 4 | 5 | If you like, please press :star: :star: :star: 6 | 7 | ## Why? 8 | 9 | Unity's default enum popup is easy to use by just declaring simple enum field. 10 | 11 | ```csharp 12 | public class SampleBehaviour : MonoBehaviour { 13 | public SampleEnum Value; 14 | } 15 | 16 | public enum SampleEnum {} 17 | ``` 18 | 19 | But there are some cases which require to handle multiple enum class at one field. 20 | For example, implementing skill slots that each of skills is defined by enum. 21 | 22 | ```csharp 23 | [EnumSelectionEnable(Category = "Skill")] 24 | public enum AttackSkill 25 | { 26 | DamageAdd, 27 | DamageMutiply, 28 | // ... 29 | } 30 | 31 | [EnumSelectionEnable(Category = "Skill")] 32 | public enum DefenceSkill 33 | { 34 | DamageSubtract, 35 | // ... 36 | } 37 | ``` 38 | 39 | EnumSelection handles multiple skill enums at one field. 40 | 41 | ```csharp 42 | public class Accessory : MonoBehaviour 43 | { 44 | [EnumSelectionOption(Category = "Skill")] 45 | public EnumSelection[] Slot = new EnumSelection[3]; 46 | 47 | private void Start() 48 | { 49 | foreach(var skill in this.Slot) 50 | { 51 | if (skill.IsEnumClass()) 52 | { 53 | var value = skill.GetEnum(); 54 | // apply attack skill 55 | } 56 | // ... 57 | } 58 | } 59 | } 60 | ``` 61 | 62 | It's very easy to handle multiple enum types and select enum type & value with popups. 63 | 64 | ![multiple skills](./art/multiple_skills.png) 65 | 66 | ## Demo 67 | 68 | ![enum selection](./art/enum_selection.gif) 69 | 70 | ## Download 71 | 72 | Download from [latest release page](https://github.com/mattak/EnumSelection/releases). 73 | 74 | ## Usage 75 | 76 | Define enum with EnumSelectionEnable attribute. 77 | 78 | ```csharp 79 | [EnumSelectionEnable] 80 | public enum Sample { 81 | Value1, 82 | Value2, 83 | } 84 | ``` 85 | 86 | Refer EnumSelection class on your MonoBehaviour. 87 | 88 | ```csharp 89 | public class Demo : MonoBehaviour { 90 | public EnumSelection Value; 91 | } 92 | ``` 93 | 94 | That's it! 95 | 96 | Now you can select any enums with EnumSelectionEnable attribute. 97 | 98 | ### Parse 99 | 100 | There are some methods to parse enum Value. 101 | 102 | ```csharp 103 | // EnumSelection Value; 104 | var value1 = this.Value.GetEnum(); 105 | var value2 = this.Value.GetEnum(typeof(Sample)); 106 | var value3 = this.Value.GetEnum(); // automatically parse enum by stored class name & assembly name 107 | ``` 108 | 109 | ### Class Check 110 | 111 | Check stored class is expecting enum. 112 | 113 | ```csharp 114 | bool isSampleEnum1 = this.Value.IsEnumClass(); 115 | bool isSampleEnum2 = this.Value.IsEnumClass(typeof(Sample)); 116 | ``` 117 | 118 | ### Categroy 119 | 120 | Category restricts enum class on popup menu. 121 | 122 | ```csharp 123 | [EnumSelectionEnable(Category = "MyCategory")] 124 | public enum Sample { 125 | Value1, 126 | Value2, 127 | } 128 | ``` 129 | 130 | ```csharp 131 | public class Demo : MonoBehaviour { 132 | [EnumSelectionOption(Category = "MyCategory")] 133 | public EnumSelection Value; 134 | } 135 | ``` 136 | 137 | 138 | ## License 139 | 140 | - [MIT](./LICENSE.md) 141 | -------------------------------------------------------------------------------- /art/enum_selection.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattak/EnumSelection/1b36d57bb2de63b68694d61037320350c308a096/art/enum_selection.gif -------------------------------------------------------------------------------- /art/multiple_skills.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattak/EnumSelection/1b36d57bb2de63b68694d61037320350c308a096/art/multiple_skills.png --------------------------------------------------------------------------------