├── ProjectSettings ├── ProjectVersion.txt ├── ClusterInputManager.asset ├── NetworkManager.asset ├── TimeManager.asset ├── EditorBuildSettings.asset ├── VFXManager.asset ├── AudioManager.asset ├── TagManager.asset ├── EditorSettings.asset ├── PresetManager.asset ├── UnityConnectSettings.asset ├── DynamicsManager.asset ├── Physics2DSettings.asset ├── NavMeshAreas.asset ├── GraphicsSettings.asset ├── QualitySettings.asset ├── InputManager.asset └── ProjectSettings.asset ├── .gitignore ├── AssetsForReadme ├── UseEvent.gif └── CreateEvent.gif ├── Assets ├── StateMachineBehaviours.meta └── StateMachineBehaviours │ ├── Test.meta │ ├── Test │ ├── Test scene 4 SMB.unity.meta │ ├── test controller.controller.meta │ ├── TestOrder.cs.meta │ ├── TestOrder.cs │ ├── test controller.controller │ └── Test scene 4 SMB.unity │ ├── Editor.meta │ ├── SetParamSMB.cs.meta │ ├── Editor │ ├── SetParamSMBEditor.cs.meta │ ├── AnimatorEventEditor.cs.meta │ ├── ScrubAnimatorUtil.cs.meta │ ├── AnimatorEventSMBEditor.cs.meta │ ├── SetParamSMBEditor.cs │ ├── ScrubAnimatorUtil.cs │ ├── AnimatorEventEditor.cs │ └── AnimatorEventSMBEditor.cs │ ├── AnimatorEvent.cs.meta │ ├── AnimatorEventSMB.cs.meta │ ├── StateMachineBehaviourExtended.cs.meta │ ├── AnimatorEvent.cs │ ├── AnimatorEventSMB.cs │ ├── SetParamSMB.cs │ └── StateMachineBehaviourExtended.cs ├── LICENSE ├── Packages └── manifest.json └── README.md /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2018.4.14f1 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /Library/ 2 | /Logs/ 3 | /Temp/ 4 | /.vs/ 5 | *.csproj 6 | *.sln 7 | /obj/ 8 | -------------------------------------------------------------------------------- /AssetsForReadme/UseEvent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/forestrf/UnityAnimatorEvents/HEAD/AssetsForReadme/UseEvent.gif -------------------------------------------------------------------------------- /AssetsForReadme/CreateEvent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/forestrf/UnityAnimatorEvents/HEAD/AssetsForReadme/CreateEvent.gif -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d6d210dcd5929cb4694d68e9294c2b6f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Test.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 97066a2f0919f7b409fb374abb3b7ae7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Test/Test scene 4 SMB.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1bfa3e84d57f55b498aaeb2b2b470107 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /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.02 7 | Maximum Allowed Timestep: 0.1 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d681c5a96bae4804ba6802dab15bbe3d 3 | folderAsset: yes 4 | timeCreated: 1503267686 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Test/test controller.controller.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4586a48e41182664fb1199ce3547f0cb 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 9100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/SetParamSMB.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2bb7c705bf5f31e42b40e2f0e023c02e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Test/TestOrder.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 334e5fb7c0e4b11429f336f6db6a4545 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Editor/SetParamSMBEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 089d278e0a199e54db0def472eb391b5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/AnimatorEvent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 02f8bea56394dab43ac9a0c223694c82 3 | timeCreated: 1486679816 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/AnimatorEventSMB.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3fb95508b422a284f9dd3849047de6ee 3 | timeCreated: 1503265566 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Editor/AnimatorEventEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4fe32ea4d33b9504db7207c41d9315f8 3 | timeCreated: 1503267692 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Editor/ScrubAnimatorUtil.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ea59f718992cbc44acc7f5caba39b23 3 | timeCreated: 1503267692 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Editor/AnimatorEventSMBEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: daeacf61bbf82a541b1294d42ccc4d36 3 | timeCreated: 1503267692 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/StateMachineBehaviourExtended.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a2047f3ebc6cfdf40ba839bf9826160b 3 | timeCreated: 1503265566 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /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/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/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 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Test/TestOrder.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | 4 | namespace Ashkatchap.AnimatorEvents { 5 | public class TestOrder : MonoBehaviour { 6 | public string[] expectedEventsInOrder; 7 | 8 | private Queue toProcess = new Queue(); 9 | 10 | private void Awake() { 11 | foreach (var str in expectedEventsInOrder) { 12 | toProcess.Enqueue(str); 13 | } 14 | } 15 | 16 | public void Test(string ev) { 17 | if (ev == toProcess.Peek()) { 18 | Debug.Log("Received expected [" + ev + "]"); 19 | toProcess.Dequeue(); 20 | } 21 | else { 22 | Debug.LogError("Expecting [" + toProcess.Dequeue() + "] but received [" + ev + "]"); 23 | } 24 | if (toProcess.Count == 0) { 25 | Debug.Log("Test finished"); 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /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/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 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 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Andrés Leone Gámez 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /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: 8 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: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.package-manager-ui": "2.0.8", 4 | "com.unity.modules.ai": "1.0.0", 5 | "com.unity.modules.animation": "1.0.0", 6 | "com.unity.modules.assetbundle": "1.0.0", 7 | "com.unity.modules.audio": "1.0.0", 8 | "com.unity.modules.cloth": "1.0.0", 9 | "com.unity.modules.director": "1.0.0", 10 | "com.unity.modules.imageconversion": "1.0.0", 11 | "com.unity.modules.imgui": "1.0.0", 12 | "com.unity.modules.jsonserialize": "1.0.0", 13 | "com.unity.modules.particlesystem": "1.0.0", 14 | "com.unity.modules.physics": "1.0.0", 15 | "com.unity.modules.physics2d": "1.0.0", 16 | "com.unity.modules.screencapture": "1.0.0", 17 | "com.unity.modules.terrain": "1.0.0", 18 | "com.unity.modules.terrainphysics": "1.0.0", 19 | "com.unity.modules.tilemap": "1.0.0", 20 | "com.unity.modules.ui": "1.0.0", 21 | "com.unity.modules.uielements": "1.0.0", 22 | "com.unity.modules.umbra": "1.0.0", 23 | "com.unity.modules.unityanalytics": "1.0.0", 24 | "com.unity.modules.unitywebrequest": "1.0.0", 25 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 26 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 27 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 28 | "com.unity.modules.unitywebrequestwww": "1.0.0", 29 | "com.unity.modules.vehicles": "1.0.0", 30 | "com.unity.modules.video": "1.0.0", 31 | "com.unity.modules.vr": "1.0.0", 32 | "com.unity.modules.wind": "1.0.0", 33 | "com.unity.modules.xr": "1.0.0" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /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: 4 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_ReuseCollisionCallbacks: 1 28 | m_AutoSyncTransforms: 0 29 | m_AlwaysShowColliders: 0 30 | m_ShowColliderSleep: 1 31 | m_ShowColliderContacts: 0 32 | m_ShowColliderAABB: 0 33 | m_ContactArrowScale: 0.2 34 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 35 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 36 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 37 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 38 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 39 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/AnimatorEvent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.Events; 5 | 6 | namespace Ashkatchap.AnimatorEvents { 7 | [RequireComponent(typeof(Animator))] 8 | public class AnimatorEvent : MonoBehaviour { 9 | /// 10 | /// List of events. This are set in the Editor. To add events in runtime, add them to instead of here. 11 | /// 12 | public EventElement[] events = new EventElement[0]; 13 | [Tooltip("Debug.Log calls to events. Only works in the Editor")] 14 | public bool debug = false; 15 | 16 | // Instead of executing events inmediately, we wait for the animator to play the animation for this frame 17 | // This will prevent being one frame ahead, with the character's old pose from the previous animation 18 | private List queuedEvents = new List(); 19 | /// 20 | /// Events stored by its id. The id of an doesn't change after it's allocated. 21 | /// 22 | public readonly Dictionary eventsById = new Dictionary(); 23 | [HideInInspector] 24 | public bool isEventsByIdReady { get; private set; } 25 | 26 | public void CallEvent(int id) { 27 | #if UNITY_EDITOR 28 | if (debug) Debug.Log("Event id: " + id); 29 | #endif 30 | EventElement ev; 31 | if (eventsById.TryGetValue(id, out ev)) 32 | queuedEvents.Add(ev); 33 | else 34 | Debug.LogError("Event id [" + id + "] not found", this); 35 | } 36 | 37 | void Awake() { 38 | foreach (var elem in events) 39 | eventsById.Add(elem.id, elem); 40 | isEventsByIdReady = true; 41 | } 42 | 43 | private void LateUpdate() { 44 | for (int i = 0; i < queuedEvents.Count; i++) { 45 | queuedEvents[i].action.Invoke(); 46 | } 47 | queuedEvents.Clear(); 48 | } 49 | 50 | public EventElement GetEventById(int id) { 51 | foreach (var elem in events) 52 | if (elem.id == id) 53 | return elem; 54 | return null; 55 | } 56 | 57 | [Serializable] 58 | public class EventElement { 59 | public string name; 60 | public int id; 61 | public UnityEvent action; 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Unity Animator Events 2 | 3 | This asset provides the ability to call UnityEvents stored in a script added next to an Animator from its AnimatorController's states. 4 | 5 | This can be useful for things from easily adding events like footsteps to controlling how a character works by using the Animator like a state machine, blocking and unblocking the character's input, enabling and disabling rootmotion at certain points and much more. 6 | 7 | This asset was later rewritten and published to the asset store with more features: 8 | - https://assetstore.unity.com/packages/tools/animation/animator-events-169047 9 | - https://ashkatchap.itch.io/unity-animator-events-v2 10 | - Support and more for the new asset (not this one): https://discord.gg/WyxYWPCG7F​ 11 | 12 | Made for and heavily used in the game Genokids https://genokids.com/ 13 | 14 | ## How to use 15 | 16 | First, add the component `AnimatorEvent` to the GameObject that has the Animator that has the AnimatorController in question, and add events to it. 17 | 18 | ![Adding Events](https://raw.githubusercontent.com/forestrf/UnityAnimatorEvents/master/AssetsForReadme/CreateEvent.gif) 19 | 20 | Then, navigate through the AnimatorController and add the script `AnimatorEventSMB` to the states that will call the previously defined events. 21 | 22 | ![Calling Events](https://raw.githubusercontent.com/forestrf/UnityAnimatorEvents/master/AssetsForReadme/UseEvent.gif) 23 | 24 | The events can (only) be triggered by 5 type of triggers: 25 | - Entering a state, just when the transition to it starts 26 | - Entering a state, just when the transition to it ends 27 | - Exiting a state, just when the transition from it starts 28 | - Exiting a state, just when the transition from it ends 29 | - At a specific point in time when playing a state. It can be repeated every time the sate loops. It can also fire the trigger in case the animator leaves the state before the specific point in time. 30 | 31 | For the last type of trigger, a slider is provided to help pinpoint the exact time for the trigger to happen by previsualizing the animation. This feature doesn't work with blendtrees, only showing the preview for the first animation without blending it with the others. 32 | 33 | You can change the name of an event at any point because it is referenced by an integer ID, not by its name. You can also type the character '/' in the event name to organize the events in a hierarchy like folders, by adding as many `/` as needed. 34 | -------------------------------------------------------------------------------- /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 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} 39 | m_PreloadedShaders: [] 40 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 41 | type: 0} 42 | m_CustomRenderPipeline: {fileID: 0} 43 | m_TransparencySortMode: 0 44 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 45 | m_DefaultRenderingPath: 1 46 | m_DefaultMobileRenderingPath: 1 47 | m_TierSettings: [] 48 | m_LightmapStripping: 0 49 | m_FogStripping: 0 50 | m_InstancingStripping: 0 51 | m_LightmapKeepPlain: 1 52 | m_LightmapKeepDirCombined: 1 53 | m_LightmapKeepDynamicPlain: 1 54 | m_LightmapKeepDynamicDirCombined: 1 55 | m_LightmapKeepShadowMask: 1 56 | m_LightmapKeepSubtractive: 1 57 | m_FogKeepLinear: 1 58 | m_FogKeepExp: 1 59 | m_FogKeepExp2: 1 60 | m_AlbedoSwatchInfos: [] 61 | m_LightsUseLinearIntensity: 0 62 | m_LightsUseColorTemperature: 0 63 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/AnimatorEventSMB.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace Ashkatchap.AnimatorEvents { 5 | public class AnimatorEventSMB : StateMachineBehaviourExtended { 6 | public TimedEvent[] onStateEnterTransitionStart; 7 | public TimedEvent[] onStateEnterTransitionEnd; 8 | public TimedEvent[] onStateExitTransitionStart; 9 | public TimedEvent[] onStateExitTransitionEnd; 10 | public TimedEvent[] onNormalizedTimeReached; 11 | public TimedEvent[] onStateUpdated; // onStateUpdated instead of onStateUpdate because of a naming error. In the future it can be changed to onStateUpdate 12 | 13 | private AnimatorEvent _animatorEvent; 14 | private AnimatorEvent GetAnimatorEvent(Animator animator) { 15 | if (_animatorEvent == null) { 16 | _animatorEvent = animator.GetComponent(); 17 | } 18 | return _animatorEvent; 19 | } 20 | 21 | [Serializable] 22 | public struct TimedEvent { 23 | [Range(0, 1)] 24 | public float normalizedTime; 25 | public int callbackId; 26 | public bool repeat; 27 | [UnityEngine.Serialization.FormerlySerializedAs("executeOnExitEnds")] 28 | public bool atLeastOnce; 29 | public bool neverWhileExit; 30 | [NonSerialized] public int nextNormalizedTime; 31 | } 32 | 33 | public override void StateEnter_TransitionStarts(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { 34 | FireTimedEvents(animator, onStateEnterTransitionStart); 35 | } 36 | 37 | public override void StateEnter_TransitionEnds(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { 38 | FireTimedEvents(animator, onStateEnterTransitionEnd); 39 | } 40 | 41 | public override void StateExit_TransitionStarts(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { 42 | FireTimedEvents(animator, onStateExitTransitionStart); 43 | } 44 | 45 | public override void StateExit_TransitionEnds(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { 46 | FireTimedEvents(animator, onStateExitTransitionEnd); 47 | 48 | // Finalize events that want to execute on exit, and reset them for later 49 | for (int i = 0; i < onNormalizedTimeReached.Length; i++) { 50 | if (onNormalizedTimeReached[i].atLeastOnce && onNormalizedTimeReached[i].nextNormalizedTime == 0) { 51 | GetAnimatorEvent(animator).CallEvent(onNormalizedTimeReached[i].callbackId); 52 | } 53 | onNormalizedTimeReached[i].nextNormalizedTime = 0; 54 | } 55 | } 56 | 57 | public override void StateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { 58 | for (int i = 0; i < onStateUpdated.Length; i++) { 59 | GetAnimatorEvent(animator).CallEvent(onStateUpdated[i].callbackId); 60 | } 61 | for (int i = 0; i < onNormalizedTimeReached.Length; i++) { 62 | if (onNormalizedTimeReached[i].neverWhileExit && currentState == State.ExitTransitioning) continue; 63 | if (stateInfo.normalizedTime >= onNormalizedTimeReached[i].normalizedTime + onNormalizedTimeReached[i].nextNormalizedTime) { 64 | GetAnimatorEvent(animator).CallEvent(onNormalizedTimeReached[i].callbackId); 65 | if (onNormalizedTimeReached[i].repeat) 66 | onNormalizedTimeReached[i].nextNormalizedTime++; 67 | else 68 | onNormalizedTimeReached[i].nextNormalizedTime = int.MaxValue; 69 | } 70 | } 71 | } 72 | 73 | private void FireTimedEvents(Animator animator, TimedEvent[] events) { 74 | for (int i = 0; i < events.Length; i++) { 75 | GetAnimatorEvent(animator).CallEvent(events[i].callbackId); 76 | } 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/SetParamSMB.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace Ashkatchap.AnimatorEvents { 5 | public class SetParamSMB : StateMachineBehaviourExtended { 6 | public enum When { OnStateEnterTransitionStarts, OnStateEnterTransitionEnds, OnStateExitTransitionStarts, OnStateExitTransitionEnds, OnNormalizedTimeReached, WhileUpdating } 7 | 8 | public When when = When.OnStateEnterTransitionStarts; 9 | public AnimatorControllerParameterType what = AnimatorControllerParameterType.Bool; 10 | public string paramName; 11 | public bool wantedBool; 12 | public int wantedInt; 13 | public float wantedFloat; 14 | 15 | // Variables used by OnNormalizedTimeReached 16 | [Range(0, 1)] 17 | public float normalizedTime; 18 | [UnityEngine.Serialization.FormerlySerializedAs("executeOnExitEnds")] 19 | public bool atLeastOnce; 20 | public bool neverWhileExit; 21 | [NonSerialized] public int nextNormalizedTime; 22 | 23 | // Variables used by WhileUpdating 24 | [Tooltip("Horizontal axis equals time, Vertical axis equals a value at that time.")] 25 | public AnimationCurve curve; 26 | 27 | // Variables used by OnNormalizedTimeReached and WhileUpdating 28 | public bool repeat; 29 | 30 | 31 | public override void StateEnter_TransitionStarts(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { 32 | TryExecute(animator, When.OnStateEnterTransitionStarts); 33 | } 34 | public override void StateEnter_TransitionEnds(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { 35 | TryExecute(animator, When.OnStateEnterTransitionEnds); 36 | } 37 | public override void StateExit_TransitionStarts(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { 38 | TryExecute(animator, When.OnStateExitTransitionStarts); 39 | } 40 | public override void StateExit_TransitionEnds(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { 41 | TryExecute(animator, When.OnStateExitTransitionEnds); 42 | 43 | // Finalize events that want to execute on exit, and reset them for later 44 | if (atLeastOnce && nextNormalizedTime == 0) { 45 | TryExecuteNoCheck(animator); 46 | } 47 | nextNormalizedTime = 0; 48 | } 49 | 50 | public override void StateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { 51 | switch (when) { 52 | case When.OnNormalizedTimeReached: 53 | if (stateInfo.normalizedTime >= normalizedTime + nextNormalizedTime) { 54 | TryExecuteNoCheck(animator); 55 | if (repeat) 56 | nextNormalizedTime++; 57 | else 58 | nextNormalizedTime = int.MaxValue; 59 | } 60 | break; 61 | case When.WhileUpdating: 62 | var timeToEvaluate = stateInfo.normalizedTime; 63 | if (repeat) { 64 | Debug.Assert(curve.length > 0); 65 | timeToEvaluate %= curve[curve.length - 1].time; 66 | } 67 | float evaluatedCurve = curve.Evaluate(timeToEvaluate); 68 | switch (what) { 69 | case AnimatorControllerParameterType.Bool: animator.SetBool(paramName, evaluatedCurve > 0); break; 70 | case AnimatorControllerParameterType.Trigger: if (evaluatedCurve > 0) animator.SetTrigger(paramName); else animator.ResetTrigger(paramName); break; 71 | case AnimatorControllerParameterType.Int: animator.SetInteger(paramName, Mathf.RoundToInt(evaluatedCurve)); break; 72 | case AnimatorControllerParameterType.Float: animator.SetFloat(paramName, evaluatedCurve); break; 73 | } 74 | break; 75 | } 76 | } 77 | 78 | private void TryExecute(Animator animator, When origin) { 79 | if (origin != when) return; 80 | TryExecuteNoCheck(animator); 81 | } 82 | private void TryExecuteNoCheck(Animator animator) { 83 | switch (what) { 84 | case AnimatorControllerParameterType.Bool: animator.SetBool(paramName, wantedBool); break; 85 | case AnimatorControllerParameterType.Trigger: if (wantedBool) animator.SetTrigger(paramName); else animator.ResetTrigger(paramName); break; 86 | case AnimatorControllerParameterType.Int: animator.SetInteger(paramName, wantedInt); break; 87 | case AnimatorControllerParameterType.Float: animator.SetFloat(paramName, wantedFloat); break; 88 | } 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Editor/SetParamSMBEditor.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEditor.Animations; 3 | using UnityEngine; 4 | 5 | namespace Ashkatchap.AnimatorEvents { 6 | [CustomEditor(typeof(SetParamSMB))] 7 | public class SetParamSMBEditor : Editor { 8 | private StateMachineBehaviourContext[] contexts; 9 | private AnimatorController animatorController; 10 | 11 | public override void OnInspectorGUI() { 12 | //serializedObject.ShowScriptInput(); 13 | serializedObject.Update(); 14 | 15 | var when = serializedObject.FindProperty("when"); 16 | var what = serializedObject.FindProperty("what"); 17 | var paramName = serializedObject.FindProperty("paramName"); 18 | 19 | if (null == animatorController) { 20 | Animator ignore; 21 | ScrubAnimatorUtil.GetCurrentAnimatorAndController(out animatorController, out ignore); 22 | } 23 | var parameters = animatorController.parameters; 24 | 25 | var currentParamName = paramName.stringValue; 26 | bool paramFound = false; 27 | 28 | GenericMenu menu = new GenericMenu(); 29 | foreach (AnimatorControllerParameter elem in parameters) { 30 | menu.AddItem(new GUIContent(elem.name), false, OnParameterSelected, elem); 31 | if (elem.name == currentParamName) paramFound = true; 32 | } 33 | 34 | EditorGUILayout.PropertyField(when); 35 | 36 | GUILayout.BeginHorizontal(); 37 | var previousColor = GUI.color; 38 | if (!paramFound) GUI.color = Color.red; 39 | EditorGUILayout.PropertyField(paramName); 40 | GUI.color = previousColor; 41 | if (EditorGUILayout.DropdownButton(GUIContent.none, FocusType.Keyboard, GUILayout.Width(16))) { 42 | menu.ShowAsContext(); 43 | } 44 | GUILayout.EndHorizontal(); 45 | 46 | foreach (var elem in parameters) { 47 | if (elem.name == paramName.stringValue) { 48 | what.intValue = (int) elem.type; 49 | 50 | if (when.intValue == (int) SetParamSMB.When.WhileUpdating) { 51 | EditorGUILayout.PropertyField(serializedObject.FindProperty("curve")); 52 | EditorGUILayout.PropertyField(serializedObject.FindProperty("repeat")); 53 | 54 | switch ((AnimatorControllerParameterType) what.intValue) { 55 | case AnimatorControllerParameterType.Bool: 56 | case AnimatorControllerParameterType.Trigger: 57 | EditorGUILayout.HelpBox("True if the value is greater than 0", MessageType.Info); 58 | break; 59 | case AnimatorControllerParameterType.Int: 60 | EditorGUILayout.HelpBox("Rounded to the nearest integer", MessageType.Info); 61 | break; 62 | } 63 | } 64 | else { 65 | switch ((AnimatorControllerParameterType) what.intValue) { 66 | case AnimatorControllerParameterType.Bool: 67 | EditorGUILayout.PropertyField(serializedObject.FindProperty("wantedBool")); 68 | break; 69 | case AnimatorControllerParameterType.Trigger: 70 | EditorGUILayout.PropertyField(serializedObject.FindProperty("wantedBool")); 71 | break; 72 | case AnimatorControllerParameterType.Int: 73 | EditorGUILayout.PropertyField(serializedObject.FindProperty("wantedInt")); 74 | break; 75 | case AnimatorControllerParameterType.Float: 76 | EditorGUILayout.PropertyField(serializedObject.FindProperty("wantedFloat")); 77 | break; 78 | } 79 | } 80 | 81 | break; 82 | } 83 | } 84 | 85 | if (when.intValue == (int) SetParamSMB.When.OnNormalizedTimeReached) { 86 | ScrubAnimatorUtil.DrawScrub(GUILayoutUtility.GetRect(0, 0, 40, 0), 87 | (StateMachineBehaviour) target, 88 | serializedObject.FindProperty("normalizedTime"), 89 | serializedObject.FindProperty("repeat"), 90 | serializedObject.FindProperty("atLeastOnce"), 91 | serializedObject.FindProperty("neverWhileExit")); 92 | } 93 | 94 | serializedObject.ApplyModifiedProperties(); 95 | } 96 | 97 | void OnParameterSelected(object parameter) { 98 | serializedObject.FindProperty("paramName").stringValue = ((AnimatorControllerParameter) parameter).name; 99 | serializedObject.ApplyModifiedProperties(); 100 | } 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Editor/ScrubAnimatorUtil.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using UnityEditor; 4 | using UnityEditor.Animations; 5 | using UnityEngine; 6 | using BlendTree = UnityEditor.Animations.BlendTree; 7 | 8 | namespace Ashkatchap.AnimatorEvents { 9 | public static class ScrubAnimatorUtil { 10 | /// 11 | /// Get the Currently used AnimatorController in the current AnimatorWindow and its related selected Animator, if any. 12 | /// 13 | /// Current controller displayed in the Animator Window 14 | /// Current Animator component if inspecting one. May be null 15 | public static void GetCurrentAnimatorAndController(out AnimatorController controller, out Animator animator) { 16 | Type animatorWindowType = Type.GetType("UnityEditor.Graphs.AnimatorControllerTool, UnityEditor.Graphs"); 17 | var window = EditorWindow.GetWindow(animatorWindowType); 18 | 19 | var animatorField = animatorWindowType.GetField("m_PreviewAnimator", BindingFlags.Instance | BindingFlags.NonPublic); 20 | animator = animatorField.GetValue(window) as Animator; 21 | 22 | var controllerField = animatorWindowType.GetField("m_AnimatorController", BindingFlags.Instance | BindingFlags.NonPublic); 23 | controller = controllerField.GetValue(window) as AnimatorController; 24 | } 25 | 26 | /// 27 | /// Draw a timeline that can be scrubbed to allow picking a specific normalized time of an animation 28 | /// 29 | public static void DrawScrub(Rect rect, StateMachineBehaviour target, SerializedProperty normalizedTime, SerializedProperty repeat, SerializedProperty atLeastOnce, SerializedProperty neverWhileExit) { 30 | bool updatePreview = false; 31 | float timeBefore = normalizedTime.floatValue; 32 | GUI.Label(new Rect(rect.x, rect.y, 50, 20), "Time"); 33 | EditorGUI.PropertyField(new Rect(rect.x + 50, rect.y, rect.width - 50 - 42, 20), normalizedTime, GUIContent.none); 34 | if (GUI.Button(new Rect(rect.x + rect.width - 40, rect.y, 40, 20), "View")) { 35 | updatePreview = true; 36 | } 37 | 38 | DrawSmallProperty(new Rect(rect.x, rect.y + 20, rect.width / 3f, 20), new GUIContent("Loop", "Enable this to allow execution every time the state loops. Otherwise it will only happen once."), repeat); 39 | DrawSmallProperty(new Rect(rect.x + rect.width / 3f, rect.y + 20, rect.width / 3f, 20), new GUIContent("At Least Once", "Execute when the exit transition ends if this hasn't been executed yet."), atLeastOnce); 40 | DrawSmallProperty(new Rect(rect.x + rect.width * 2f / 3f, rect.y + 20, rect.width / 3f, 20), new GUIContent("Never While Exit", "Prevent executing during the exit transition."), neverWhileExit); 41 | 42 | if (timeBefore != normalizedTime.floatValue) updatePreview = true; 43 | 44 | if (updatePreview) { 45 | if (!AnimationMode.InAnimationMode()) 46 | AnimationMode.StartAnimationMode(); 47 | 48 | AnimatorController ignore; 49 | Animator animator; 50 | GetCurrentAnimatorAndController(out ignore, out animator); 51 | 52 | var contexts = AnimatorController.FindStateMachineBehaviourContext(target); 53 | 54 | foreach (var context in contexts) { 55 | AnimatorState state = context.animatorObject as AnimatorState; 56 | if (null == state) continue; 57 | 58 | AnimationClip previewClip = GetFirstAvailableClip(state.motion); 59 | if (null == previewClip) continue; 60 | 61 | AnimationMode.BeginSampling(); 62 | AnimationMode.SampleAnimationClip(animator.gameObject, previewClip, normalizedTime.floatValue * previewClip.length); 63 | AnimationMode.EndSampling(); 64 | } 65 | } 66 | } 67 | 68 | private static void DrawSmallProperty(Rect rect, GUIContent content, SerializedProperty property) { 69 | EditorGUIUtility.labelWidth = GUI.skin.label.CalcSize(content).x; 70 | EditorGUI.PropertyField(rect, property, content); 71 | } 72 | 73 | private static AnimationClip GetFirstAvailableClip(Motion motion) { 74 | AnimationClip clip = motion as AnimationClip; 75 | if (clip != null) 76 | return clip; 77 | 78 | BlendTree tree = motion as BlendTree; 79 | if (tree != null) { 80 | foreach (ChildMotion childMotion in tree.children) { 81 | // Should we be worried about `cycleOffset`? https://docs.unity3d.com/ScriptReference/Animations.AnimatorState-cycleOffset.html 82 | 83 | var child = childMotion.motion; 84 | BlendTree childTree = child as BlendTree; 85 | if (childTree != null) { 86 | var childClip = GetFirstAvailableClip(childTree); 87 | if (childClip != null) 88 | return childClip; 89 | } 90 | else { 91 | AnimationClip childClip = child as AnimationClip; 92 | if (childClip != null) 93 | return childClip; 94 | } 95 | } 96 | } 97 | 98 | return null; 99 | } 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/StateMachineBehaviourExtended.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.Animations; 3 | 4 | namespace Ashkatchap.AnimatorEvents { 5 | public abstract class StateMachineBehaviourExtended : StateMachineBehaviour { 6 | public virtual void StateEnter_TransitionStarts(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { } 7 | public virtual void StateEnter_TransitionEnds(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { } 8 | public virtual void StateExit_TransitionStarts(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { } 9 | public virtual void StateExit_TransitionEnds(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { } 10 | public virtual void StateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { } 11 | 12 | // Removed: transitions MUST go through the states Enter or Exit inside the SubSM for this to work: e.g. AnyState breaks it 13 | // DO NOT USE, so removed to prevent future problems 14 | public sealed override void OnStateMachineEnter(Animator animator, int stateMachinePathHash) { } 15 | public sealed override void OnStateMachineEnter(Animator animator, int stateMachinePathHash, AnimatorControllerPlayable controller) { } 16 | public sealed override void OnStateMachineExit(Animator animator, int stateMachinePathHash) { } 17 | public sealed override void OnStateMachineExit(Animator animator, int stateMachinePathHash, AnimatorControllerPlayable controller) { } 18 | // Overriding this makes the versions without AnimatorControllerPlayable not work //public sealed override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex, AnimatorControllerPlayable controller) { } 19 | // Overriding this makes the versions without AnimatorControllerPlayable not work //public sealed override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex, AnimatorControllerPlayable controller) { } 20 | // Overriding this makes the versions without AnimatorControllerPlayable not work //public sealed override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex, AnimatorControllerPlayable controller) { } 21 | public sealed override void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { } 22 | public sealed override void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex, AnimatorControllerPlayable controller) { } 23 | 24 | public enum State { 25 | NotPaying, 26 | EnteredTransitioning, 27 | Updating, 28 | ExitTransitioning 29 | } 30 | 31 | private State stateCur = State.NotPaying; 32 | private State statePrev = State.NotPaying; 33 | private int transitionHash; 34 | 35 | public State currentState => stateCur; 36 | 37 | public sealed override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { 38 | //Debug.Log("(" + Time.frameCount + ") " + debugName + " Start"); 39 | bool isInTransition = animator.IsInTransition(layerIndex); 40 | if (isInTransition) { 41 | statePrev = stateCur; 42 | stateCur = State.NotPaying; 43 | 44 | if (statePrev == State.EnteredTransitioning) { 45 | statePrev = State.Updating; 46 | StateEnter_TransitionEnds(animator, stateInfo, layerIndex); 47 | } 48 | if (statePrev == State.Updating) { 49 | statePrev = State.ExitTransitioning; 50 | StateExit_TransitionStarts(animator, stateInfo, layerIndex); 51 | } 52 | } 53 | 54 | 55 | stateCur = State.EnteredTransitioning; 56 | StateEnter_TransitionStarts(animator, stateInfo, layerIndex); 57 | if (!isInTransition) { 58 | stateCur = State.Updating; 59 | StateEnter_TransitionEnds(animator, stateInfo, layerIndex); 60 | } 61 | else { 62 | transitionHash = animator.GetAnimatorTransitionInfo(layerIndex).fullPathHash; 63 | } 64 | 65 | // First frame calls StateEnter, next ones call Update. Call Update AFTER Start too, on the same frame 66 | StateUpdate(animator, stateInfo, layerIndex); 67 | } 68 | 69 | public sealed override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { 70 | //Debug.Log("(" + Time.frameCount + ") " + debugName + " Exit"); 71 | if (statePrev == State.ExitTransitioning) { 72 | statePrev = State.NotPaying; 73 | StateExit_TransitionEnds(animator, stateInfo, layerIndex); 74 | } 75 | else { 76 | if (stateCur == State.EnteredTransitioning) { 77 | stateCur = State.Updating; 78 | StateEnter_TransitionEnds(animator, stateInfo, layerIndex); 79 | StateUpdate(animator, stateInfo, layerIndex); 80 | } 81 | 82 | if (stateCur == State.Updating) { 83 | stateCur = State.ExitTransitioning; 84 | StateExit_TransitionStarts(animator, stateInfo, layerIndex); 85 | } 86 | 87 | stateCur = State.NotPaying; 88 | StateExit_TransitionEnds(animator, stateInfo, layerIndex); 89 | } 90 | } 91 | 92 | public sealed override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { 93 | //Debug.Log("(" + Time.frameCount + ") " + debugName + " Update"); 94 | if (stateCur == State.EnteredTransitioning && ( 95 | !animator.IsInTransition(layerIndex) || 96 | animator.GetAnimatorTransitionInfo(layerIndex).fullPathHash != transitionHash)) { 97 | StateEnter_TransitionEnds(animator, stateInfo, layerIndex); 98 | stateCur = State.Updating; 99 | } 100 | 101 | StateUpdate(animator, stateInfo, layerIndex); 102 | 103 | if (stateCur == State.Updating && animator.IsInTransition(layerIndex)) { 104 | stateCur = State.ExitTransitioning; 105 | StateExit_TransitionStarts(animator, stateInfo, layerIndex); 106 | } 107 | } 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /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: 16 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: 16 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: 16 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: 16 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: 16 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: 16 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 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Editor/AnimatorEventEditor.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Collections.Generic; 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | namespace Ashkatchap.AnimatorEvents { 7 | [CustomEditor(typeof(AnimatorEvent))] 8 | public class AnimatorEventEditor : Editor { 9 | private SerializedProperty events; 10 | private Dictionary hierarchyExpanded = new Dictionary(); 11 | List sortedEventIndices = new List(); 12 | string filterString = ""; 13 | 14 | private void InitializeIfNeeded() { 15 | if (events != null && sortedEventIndices.Count == ((AnimatorEvent) target).events.Length) return; 16 | events = serializedObject.FindProperty("events"); 17 | CalculatedSortedIndices(); 18 | } 19 | 20 | private void OnEnable() { 21 | Undo.undoRedoPerformed += MyUndoCallback; 22 | } 23 | 24 | private void OnDisable() { 25 | Undo.undoRedoPerformed -= MyUndoCallback; 26 | } 27 | 28 | private void MyUndoCallback() { 29 | CalculatedSortedIndices(); 30 | } 31 | 32 | public override void OnInspectorGUI() { 33 | //DrawDefaultInspector(); 34 | 35 | serializedObject.Update(); 36 | 37 | InitializeIfNeeded(); 38 | 39 | filterString = EditorGUILayout.TextField(new GUIContent("Search"), filterString).Trim(); 40 | 41 | if (Application.isPlaying) GUI.enabled = false; 42 | 43 | if (GUILayout.Button("Add")) { 44 | Undo.RecordObject(target, "Added event"); 45 | List evs = new List(((AnimatorEvent) target).events); 46 | 47 | // Avoid any collision of id. 48 | int idCandidate = Random.Range(int.MinValue, int.MaxValue); 49 | while (evs.Exists(e => e.id == idCandidate)) 50 | idCandidate++; 51 | 52 | evs.Add(new AnimatorEvent.EventElement() { 53 | id = idCandidate, 54 | name = "" 55 | }); 56 | ((AnimatorEvent) target).events = evs.ToArray(); 57 | serializedObject.Update(); 58 | CalculatedSortedIndices(); 59 | } 60 | 61 | int j = 0; 62 | RecursiveDrawing(ref j, ""); 63 | 64 | serializedObject.ApplyModifiedProperties(); 65 | 66 | if (Application.isPlaying) GUI.enabled = true; 67 | } 68 | 69 | void RecursiveDrawing(ref int i, string start) { 70 | if (start.Length == 0 || (hierarchyExpanded[start] = EditorGUILayout.Foldout(Get(start), start, true))) { 71 | EditorGUI.indentLevel++; 72 | for (; i < events.arraySize;) { 73 | var property = events.GetArrayElementAtIndex(sortedEventIndices[i]); 74 | var name = property.FindPropertyRelative("name").stringValue; 75 | if (!name.StartsWith(start)) { 76 | break; 77 | } 78 | var barPos = start.Length < name.Length ? name.IndexOf('/', start.Length + 1) : -1; 79 | if (barPos == -1) { 80 | if (filterString.Length == 0 || name.ToLowerInvariant().Contains(filterString.ToLowerInvariant())) { 81 | if (hierarchyExpanded[name] = EditorGUILayout.Foldout(Get(name), name, true)) { 82 | EditorGUILayout.BeginVertical("box"); 83 | EditorGUI.BeginChangeCheck(); 84 | EditorGUILayout.BeginHorizontal(); 85 | var prevLabelWidth = EditorGUIUtility.labelWidth; 86 | EditorGUIUtility.labelWidth = 60; 87 | EditorGUILayout.DelayedTextField(property.FindPropertyRelative("name")); 88 | bool remove = GUILayout.Button("Remove", GUILayout.Width(100)); 89 | EditorGUILayout.EndHorizontal(); 90 | if (EditorGUI.EndChangeCheck()) { 91 | CalculatedSortedIndices(); 92 | } 93 | EditorGUILayout.PropertyField(property.FindPropertyRelative("action"), true); 94 | GUI.skin.label.alignment = TextAnchor.UpperRight; 95 | EditorGUILayout.BeginHorizontal(); 96 | GUILayout.Label(""); // align this to the right, then the property will also be aligned to the rigth. Hack because idk how to align the proprety to the right 97 | EditorGUIUtility.labelWidth = 40; 98 | EditorGUILayout.PropertyField(property.FindPropertyRelative("id"), new GUIContent("ID ", "ID of the event. Change it manually only if needed."), GUILayout.Width(140)); 99 | EditorGUIUtility.labelWidth = prevLabelWidth; 100 | EditorGUILayout.EndHorizontal(); 101 | GUI.skin.label.alignment = TextAnchor.UpperLeft; 102 | EditorGUILayout.EndVertical(); 103 | 104 | if (remove) { 105 | events.DeleteArrayElementAtIndex(sortedEventIndices[i]); 106 | CalculatedSortedIndices(); 107 | } 108 | } 109 | } 110 | i++; 111 | } 112 | else { 113 | RecursiveDrawing(ref i, name.Substring(0, barPos + 1)); 114 | } 115 | } 116 | EditorGUI.indentLevel--; 117 | } 118 | else { 119 | for (; i < events.arraySize;) { 120 | var property = events.GetArrayElementAtIndex(sortedEventIndices[i]); 121 | var name = property.FindPropertyRelative("name").stringValue; 122 | if (!name.StartsWith(start)) { 123 | break; 124 | } 125 | i++; 126 | } 127 | } 128 | } 129 | 130 | void CalculatedSortedIndices() { 131 | sortedEventIndices.Clear(); 132 | events = serializedObject.FindProperty("events"); 133 | for (int i = 0; i < events.arraySize; i++) { 134 | var eventsI = events.GetArrayElementAtIndex(i); 135 | if (eventsI.FindPropertyRelative("id").intValue == 0) { 136 | eventsI.FindPropertyRelative("id").intValue = Animator.StringToHash(eventsI.FindPropertyRelative("name").stringValue); 137 | } 138 | sortedEventIndices.Add(i); 139 | } 140 | sortedEventIndices.Sort((a, b) => events.GetArrayElementAtIndex(a).FindPropertyRelative("name").stringValue.CompareTo(events.GetArrayElementAtIndex(b).FindPropertyRelative("name").stringValue)); 141 | } 142 | 143 | bool Get(string text) { 144 | bool state; 145 | if (!hierarchyExpanded.TryGetValue(text, out state)) { 146 | hierarchyExpanded.Add(text, false); 147 | } 148 | return state; 149 | } 150 | } 151 | } 152 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Editor/AnimatorEventSMBEditor.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEditor; 3 | using UnityEditorInternal; 4 | using UnityEngine; 5 | 6 | namespace Ashkatchap.AnimatorEvents { 7 | [CustomEditor(typeof(AnimatorEventSMB))] 8 | public class AnimatorEventSMBEditor : Editor { 9 | private ReorderableList list_onStateEnterTransitionStart; 10 | private ReorderableList list_onStateEnterTransitionEnd; 11 | private ReorderableList list_onStateExitTransitionStart; 12 | private ReorderableList list_onStateExitTransitionEnd; 13 | private ReorderableList list_onNormalizedTimeReached; 14 | private ReorderableList list_onStateUpdated; 15 | 16 | private readonly List eventsAvailable = new List(); 17 | private readonly List matchingAnimatorEvent = new List(); 18 | 19 | private UnityEditor.Animations.AnimatorController controller; 20 | 21 | private static GUIStyle eventNameStyle; 22 | 23 | private void InitializeIfNeeded() { 24 | if (controller != null) return; 25 | 26 | if (eventNameStyle == null) { 27 | eventNameStyle = GUI.skin.label; 28 | eventNameStyle.richText = true; 29 | } 30 | 31 | Animator ignore; 32 | ScrubAnimatorUtil.GetCurrentAnimatorAndController(out controller, out ignore); 33 | 34 | UpdateMatchingAnimatorEventList(); 35 | 36 | CreateReorderableList("On State Enter Transition Start", 20, ref list_onStateEnterTransitionStart, serializedObject.FindProperty("onStateEnterTransitionStart"), 37 | (rect, index, isActive, isFocused) => { 38 | DrawCallbackField(rect, serializedObject.FindProperty("onStateEnterTransitionStart").GetArrayElementAtIndex(index)); 39 | }); 40 | CreateReorderableList("On State Enter Transition End", 20, ref list_onStateEnterTransitionEnd, serializedObject.FindProperty("onStateEnterTransitionEnd"), 41 | (rect, index, isActive, isFocused) => { 42 | DrawCallbackField(rect, serializedObject.FindProperty("onStateEnterTransitionEnd").GetArrayElementAtIndex(index)); 43 | }); 44 | CreateReorderableList("On State Exit Transition Start", 20, ref list_onStateExitTransitionStart, serializedObject.FindProperty("onStateExitTransitionStart"), 45 | (rect, index, isActive, isFocused) => { 46 | DrawCallbackField(rect, serializedObject.FindProperty("onStateExitTransitionStart").GetArrayElementAtIndex(index)); 47 | }); 48 | CreateReorderableList("On State Exit Transition End", 20, ref list_onStateExitTransitionEnd, serializedObject.FindProperty("onStateExitTransitionEnd"), 49 | (rect, index, isActive, isFocused) => { 50 | DrawCallbackField(rect, serializedObject.FindProperty("onStateExitTransitionEnd").GetArrayElementAtIndex(index)); 51 | }); 52 | CreateReorderableList("On State Update", 20, ref list_onStateUpdated, serializedObject.FindProperty("onStateUpdated"), 53 | (rect, index, isActive, isFocused) => { 54 | DrawCallbackField(rect, serializedObject.FindProperty("onStateUpdated").GetArrayElementAtIndex(index)); 55 | }); 56 | CreateReorderableList("On Normalized Time Reached", 60, ref list_onNormalizedTimeReached, serializedObject.FindProperty("onNormalizedTimeReached"), 57 | (rect, index, isActive, isFocused) => { 58 | var property = serializedObject.FindProperty("onNormalizedTimeReached").GetArrayElementAtIndex(index); 59 | 60 | DrawCallbackField(rect, property); 61 | 62 | rect.y += 20; 63 | 64 | ScrubAnimatorUtil.DrawScrub(rect, 65 | (StateMachineBehaviour) target, 66 | property.FindPropertyRelative("normalizedTime"), 67 | property.FindPropertyRelative("repeat"), 68 | property.FindPropertyRelative("atLeastOnce"), 69 | property.FindPropertyRelative("neverWhileExit")); 70 | }); 71 | } 72 | 73 | void UpdateMatchingAnimatorEventList() { 74 | AnimatorEvent[] animatorEvents; 75 | #if UNITY_2018_0 || UNITY_2018_1 || UNITY_2018_2 || UNITY_2017 || UNITY_5 76 | animatorEvents = FindObjectsOfType(); 77 | #else 78 | var prefabStage = UnityEditor.Experimental.SceneManagement.PrefabStageUtility.GetCurrentPrefabStage(); 79 | if (prefabStage != null) { 80 | animatorEvents = prefabStage.stageHandle.FindComponentsOfType(); 81 | } 82 | else { 83 | animatorEvents = FindObjectsOfType(); 84 | } 85 | #endif 86 | 87 | matchingAnimatorEvent.Clear(); 88 | foreach (var ae in animatorEvents) { 89 | var runtimeController = ae.GetComponent().runtimeAnimatorController; 90 | var overrided = runtimeController as AnimatorOverrideController; 91 | if (runtimeController == controller || (overrided != null && overrided.runtimeAnimatorController == controller)) { 92 | matchingAnimatorEvent.Add(ae); 93 | 94 | 95 | List sortedEventIndices = new List(); 96 | for (int i = 0; i < ae.events.Length; i++) { 97 | sortedEventIndices.Add(i); 98 | } 99 | sortedEventIndices.Sort((a, b) => ae.events[a].name.CompareTo(ae.events[b].name)); 100 | 101 | 102 | foreach (var i in sortedEventIndices) { 103 | var ev = ae.events[i]; 104 | if (!eventsAvailable.Contains(ev.id)) { 105 | eventsAvailable.Add(ev.id); 106 | } 107 | } 108 | } 109 | } 110 | } 111 | 112 | private void DrawCallbackField(Rect rect, SerializedProperty property) { 113 | const float idWidth = 120; 114 | var callbackProperty = property.FindPropertyRelative("callback"); 115 | var callbackIdProperty = property.FindPropertyRelative("callbackId"); 116 | if (callbackIdProperty.intValue == 0) { 117 | callbackIdProperty.intValue = Animator.StringToHash(callbackProperty.stringValue); 118 | } 119 | if (matchingAnimatorEvent.Count == 0) { 120 | GUI.Label(new Rect(rect.x, rect.y, rect.width - idWidth, 18), "No AnimatorEvent component found", eventNameStyle); 121 | return; 122 | } 123 | var ev = matchingAnimatorEvent[0].GetEventById(callbackIdProperty.intValue); 124 | GUI.Label(new Rect(rect.x, rect.y, rect.width - idWidth, 18), ev != null ? ev.name : "EVENT ID NOT FOUND", eventNameStyle); 125 | var prevLabelWidth = EditorGUIUtility.labelWidth; 126 | EditorGUIUtility.labelWidth = 20; 127 | EditorGUI.PropertyField(new Rect(rect.x + rect.width - idWidth, rect.y, idWidth, 18), callbackIdProperty, new GUIContent("ID ", "ID of the event. Change it manually only if needed.")); 128 | EditorGUIUtility.labelWidth = prevLabelWidth; 129 | } 130 | 131 | private void CreateReorderableList(string title, int height, ref ReorderableList reorderableList, SerializedProperty soList, ReorderableList.ElementCallbackDelegate drawCallback) { 132 | reorderableList = new ReorderableList(serializedObject, soList, true, false, true, true); 133 | reorderableList.elementHeight = height; 134 | reorderableList.drawHeaderCallback = (rect) => { 135 | GUI.Label(rect, title); 136 | }; 137 | reorderableList.drawElementCallback = drawCallback; 138 | reorderableList.onAddDropdownCallback = (buttonRect, list) => { 139 | if (matchingAnimatorEvent.Count == 0) return; 140 | 141 | var menu = new GenericMenu(); 142 | for (int i = 0; i < eventsAvailable.Count; i++) { 143 | int j = i; 144 | menu.AddItem(new GUIContent(matchingAnimatorEvent[0].GetEventById(eventsAvailable[i]).name), 145 | false, (data) => { 146 | serializedObject.Update(); 147 | soList.InsertArrayElementAtIndex(soList.arraySize); 148 | soList.GetArrayElementAtIndex(soList.arraySize - 1).FindPropertyRelative("callbackId").intValue = eventsAvailable[j]; 149 | serializedObject.ApplyModifiedProperties(); 150 | }, eventsAvailable[i]); 151 | } 152 | menu.ShowAsContext(); 153 | }; 154 | } 155 | 156 | public override void OnInspectorGUI() { 157 | //DrawDefaultInspector(); 158 | 159 | InitializeIfNeeded(); 160 | 161 | if (Application.isPlaying) GUI.enabled = false; 162 | 163 | serializedObject.Update(); 164 | 165 | list_onStateEnterTransitionStart.DoLayoutList(); 166 | list_onStateEnterTransitionEnd.DoLayoutList(); 167 | list_onStateExitTransitionStart.DoLayoutList(); 168 | list_onStateExitTransitionEnd.DoLayoutList(); 169 | list_onStateUpdated.DoLayoutList(); 170 | list_onNormalizedTimeReached.DoLayoutList(); 171 | 172 | serializedObject.ApplyModifiedProperties(); 173 | 174 | if (Application.isPlaying) GUI.enabled = true; 175 | } 176 | 177 | private void OnDestroy() { 178 | if (AnimationMode.InAnimationMode()) 179 | AnimationMode.StopAnimationMode(); 180 | } 181 | } 182 | } 183 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Test/test controller.controller: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!91 &9100000 4 | AnimatorController: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: test controller 10 | serializedVersion: 5 11 | m_AnimatorParameters: 12 | - m_Name: New Trigger 13 | m_Type: 9 14 | m_DefaultFloat: 0 15 | m_DefaultInt: 0 16 | m_DefaultBool: 0 17 | m_Controller: {fileID: 9100000} 18 | - m_Name: New Trigger 0 19 | m_Type: 9 20 | m_DefaultFloat: 0 21 | m_DefaultInt: 0 22 | m_DefaultBool: 0 23 | m_Controller: {fileID: 9100000} 24 | m_AnimatorLayers: 25 | - serializedVersion: 5 26 | m_Name: Base Layer 27 | m_StateMachine: {fileID: 1107566895526468402} 28 | m_Mask: {fileID: 0} 29 | m_Motions: [] 30 | m_Behaviours: [] 31 | m_BlendingMode: 0 32 | m_SyncedLayerIndex: -1 33 | m_DefaultWeight: 0 34 | m_IKPass: 0 35 | m_SyncedLayerAffectsTiming: 0 36 | m_Controller: {fileID: 9100000} 37 | --- !u!114 &114011792459697338 38 | MonoBehaviour: 39 | m_ObjectHideFlags: 1 40 | m_CorrespondingSourceObject: {fileID: 0} 41 | m_PrefabInstance: {fileID: 0} 42 | m_PrefabAsset: {fileID: 0} 43 | m_GameObject: {fileID: 0} 44 | m_Enabled: 1 45 | m_EditorHideFlags: 0 46 | m_Script: {fileID: 11500000, guid: 2bb7c705bf5f31e42b40e2f0e023c02e, type: 3} 47 | m_Name: 48 | m_EditorClassIdentifier: 49 | when: 0 50 | what: 9 51 | paramName: New Trigger 52 | wantedBool: 1 53 | wantedInt: 0 54 | wantedFloat: 0 55 | --- !u!114 &114116155994235004 56 | MonoBehaviour: 57 | m_ObjectHideFlags: 1 58 | m_CorrespondingSourceObject: {fileID: 0} 59 | m_PrefabInstance: {fileID: 0} 60 | m_PrefabAsset: {fileID: 0} 61 | m_GameObject: {fileID: 0} 62 | m_Enabled: 1 63 | m_EditorHideFlags: 0 64 | m_Script: {fileID: 11500000, guid: 2bb7c705bf5f31e42b40e2f0e023c02e, type: 3} 65 | m_Name: 66 | m_EditorClassIdentifier: 67 | when: 1 68 | what: 9 69 | paramName: New Trigger 0 70 | wantedBool: 1 71 | wantedInt: 0 72 | wantedFloat: 0 73 | --- !u!114 &114247748573977118 74 | MonoBehaviour: 75 | m_ObjectHideFlags: 1 76 | m_CorrespondingSourceObject: {fileID: 0} 77 | m_PrefabInstance: {fileID: 0} 78 | m_PrefabAsset: {fileID: 0} 79 | m_GameObject: {fileID: 0} 80 | m_Enabled: 1 81 | m_EditorHideFlags: 0 82 | m_Script: {fileID: 11500000, guid: 3fb95508b422a284f9dd3849047de6ee, type: 3} 83 | m_Name: 84 | m_EditorClassIdentifier: 85 | onStateEnterTransitionStart: 86 | - normalizedTime: 0 87 | callback: 15 88 | callbackId: -784871058 89 | repeat: 0 90 | executeOnExitEnds: 0 91 | onStateEnterTransitionEnd: 92 | - normalizedTime: 0 93 | callback: 16 94 | callbackId: 1212055764 95 | repeat: 0 96 | executeOnExitEnds: 0 97 | onStateExitTransitionStart: [] 98 | onStateExitTransitionEnd: [] 99 | onNormalizedTimeReached: 100 | - normalizedTime: 0 101 | callback: 17 102 | callbackId: 1060745282 103 | repeat: 0 104 | executeOnExitEnds: 0 105 | - normalizedTime: 0.21 106 | callback: 18 107 | callbackId: -1350128173 108 | repeat: 0 109 | executeOnExitEnds: 0 110 | - normalizedTime: 1 111 | callback: 19 112 | callbackId: -662594235 113 | repeat: 0 114 | executeOnExitEnds: 1 115 | onStateUpdated: [] 116 | --- !u!114 &114345647780524880 117 | MonoBehaviour: 118 | m_ObjectHideFlags: 1 119 | m_CorrespondingSourceObject: {fileID: 0} 120 | m_PrefabInstance: {fileID: 0} 121 | m_PrefabAsset: {fileID: 0} 122 | m_GameObject: {fileID: 0} 123 | m_Enabled: 1 124 | m_EditorHideFlags: 0 125 | m_Script: {fileID: 11500000, guid: 3fb95508b422a284f9dd3849047de6ee, type: 3} 126 | m_Name: 127 | m_EditorClassIdentifier: 128 | onStateEnterTransitionStart: 129 | - normalizedTime: 0 130 | callback: 1 131 | callbackId: -2082672713 132 | repeat: 0 133 | executeOnExitEnds: 0 134 | onStateEnterTransitionEnd: 135 | - normalizedTime: 0 136 | callback: 2 137 | callbackId: 450215437 138 | repeat: 0 139 | executeOnExitEnds: 0 140 | onStateExitTransitionStart: 141 | - normalizedTime: 0 142 | callback: 3 143 | callbackId: 1842515611 144 | repeat: 0 145 | executeOnExitEnds: 0 146 | onStateExitTransitionEnd: 147 | - normalizedTime: 0 148 | callback: 4 149 | callbackId: -206169288 150 | repeat: 0 151 | executeOnExitEnds: 0 152 | onNormalizedTimeReached: [] 153 | onStateUpdated: [] 154 | --- !u!114 &114385689325460966 155 | MonoBehaviour: 156 | m_ObjectHideFlags: 1 157 | m_CorrespondingSourceObject: {fileID: 0} 158 | m_PrefabInstance: {fileID: 0} 159 | m_PrefabAsset: {fileID: 0} 160 | m_GameObject: {fileID: 0} 161 | m_Enabled: 1 162 | m_EditorHideFlags: 0 163 | m_Script: {fileID: 11500000, guid: 3fb95508b422a284f9dd3849047de6ee, type: 3} 164 | m_Name: 165 | m_EditorClassIdentifier: 166 | onStateEnterTransitionStart: [] 167 | onStateEnterTransitionEnd: [] 168 | onStateExitTransitionStart: 169 | - normalizedTime: 0 170 | callback: 11 171 | callbackId: -698739337 172 | repeat: 0 173 | executeOnExitEnds: 0 174 | onStateExitTransitionEnd: 175 | - normalizedTime: 0 176 | callback: 13 177 | callbackId: 945058907 178 | repeat: 0 179 | executeOnExitEnds: 0 180 | onNormalizedTimeReached: [] 181 | onStateUpdated: [] 182 | --- !u!114 &114602416981136046 183 | MonoBehaviour: 184 | m_ObjectHideFlags: 1 185 | m_CorrespondingSourceObject: {fileID: 0} 186 | m_PrefabInstance: {fileID: 0} 187 | m_PrefabAsset: {fileID: 0} 188 | m_GameObject: {fileID: 0} 189 | m_Enabled: 1 190 | m_EditorHideFlags: 0 191 | m_Script: {fileID: 11500000, guid: 3fb95508b422a284f9dd3849047de6ee, type: 3} 192 | m_Name: 193 | m_EditorClassIdentifier: 194 | onStateEnterTransitionStart: 195 | - normalizedTime: 0 196 | callback: 12 197 | callbackId: 1330857165 198 | repeat: 0 199 | executeOnExitEnds: 0 200 | onStateEnterTransitionEnd: 201 | - normalizedTime: 0 202 | callback: 14 203 | callbackId: -1506745864 204 | repeat: 0 205 | executeOnExitEnds: 0 206 | onStateExitTransitionStart: [] 207 | onStateExitTransitionEnd: [] 208 | onNormalizedTimeReached: [] 209 | onStateUpdated: [] 210 | --- !u!114 &114672396426177512 211 | MonoBehaviour: 212 | m_ObjectHideFlags: 1 213 | m_CorrespondingSourceObject: {fileID: 0} 214 | m_PrefabInstance: {fileID: 0} 215 | m_PrefabAsset: {fileID: 0} 216 | m_GameObject: {fileID: 0} 217 | m_Enabled: 1 218 | m_EditorHideFlags: 0 219 | m_Script: {fileID: 11500000, guid: 3fb95508b422a284f9dd3849047de6ee, type: 3} 220 | m_Name: 221 | m_EditorClassIdentifier: 222 | onStateEnterTransitionStart: 223 | - normalizedTime: 0 224 | callback: 8 225 | callbackId: -100641005 226 | repeat: 0 227 | executeOnExitEnds: 0 228 | onStateEnterTransitionEnd: 229 | - normalizedTime: 0 230 | callback: 10 231 | callbackId: -1587730975 232 | repeat: 0 233 | executeOnExitEnds: 0 234 | onStateExitTransitionStart: [] 235 | onStateExitTransitionEnd: [] 236 | onNormalizedTimeReached: [] 237 | onStateUpdated: [] 238 | --- !u!114 &114766571695902224 239 | MonoBehaviour: 240 | m_ObjectHideFlags: 1 241 | m_CorrespondingSourceObject: {fileID: 0} 242 | m_PrefabInstance: {fileID: 0} 243 | m_PrefabAsset: {fileID: 0} 244 | m_GameObject: {fileID: 0} 245 | m_Enabled: 1 246 | m_EditorHideFlags: 0 247 | m_Script: {fileID: 11500000, guid: 3fb95508b422a284f9dd3849047de6ee, type: 3} 248 | m_Name: 249 | m_EditorClassIdentifier: 250 | onStateEnterTransitionStart: 251 | - normalizedTime: 0 252 | callback: 20 253 | callbackId: -1972341214 254 | repeat: 0 255 | executeOnExitEnds: 0 256 | onStateEnterTransitionEnd: [] 257 | onStateExitTransitionStart: [] 258 | onStateExitTransitionEnd: [] 259 | onNormalizedTimeReached: [] 260 | onStateUpdated: [] 261 | --- !u!114 &114780831260851114 262 | MonoBehaviour: 263 | m_ObjectHideFlags: 1 264 | m_CorrespondingSourceObject: {fileID: 0} 265 | m_PrefabInstance: {fileID: 0} 266 | m_PrefabAsset: {fileID: 0} 267 | m_GameObject: {fileID: 0} 268 | m_Enabled: 1 269 | m_EditorHideFlags: 0 270 | m_Script: {fileID: 11500000, guid: 3fb95508b422a284f9dd3849047de6ee, type: 3} 271 | m_Name: 272 | m_EditorClassIdentifier: 273 | onStateEnterTransitionStart: 274 | - normalizedTime: 0 275 | callback: 5 276 | callbackId: -2068763730 277 | repeat: 0 278 | executeOnExitEnds: 0 279 | onStateEnterTransitionEnd: 280 | - normalizedTime: 0 281 | callback: 6 282 | callbackId: 498629140 283 | repeat: 0 284 | executeOnExitEnds: 0 285 | onStateExitTransitionStart: 286 | - normalizedTime: 0 287 | callback: 7 288 | callbackId: 1790921346 289 | repeat: 0 290 | executeOnExitEnds: 0 291 | onStateExitTransitionEnd: 292 | - normalizedTime: 0 293 | callback: 9 294 | callbackId: -1928894587 295 | repeat: 0 296 | executeOnExitEnds: 0 297 | onNormalizedTimeReached: [] 298 | onStateUpdated: [] 299 | --- !u!1101 &1101110108455445230 300 | AnimatorStateTransition: 301 | m_ObjectHideFlags: 1 302 | m_CorrespondingSourceObject: {fileID: 0} 303 | m_PrefabInstance: {fileID: 0} 304 | m_PrefabAsset: {fileID: 0} 305 | m_Name: 306 | m_Conditions: [] 307 | m_DstStateMachine: {fileID: 0} 308 | m_DstState: {fileID: 1102671653880976134} 309 | m_Solo: 0 310 | m_Mute: 0 311 | m_IsExit: 0 312 | serializedVersion: 3 313 | m_TransitionDuration: 0 314 | m_TransitionOffset: 0 315 | m_ExitTime: 0.75 316 | m_HasExitTime: 1 317 | m_HasFixedDuration: 1 318 | m_InterruptionSource: 0 319 | m_OrderedInterruption: 1 320 | m_CanTransitionToSelf: 1 321 | --- !u!1101 &1101247825265993434 322 | AnimatorStateTransition: 323 | m_ObjectHideFlags: 1 324 | m_CorrespondingSourceObject: {fileID: 0} 325 | m_PrefabInstance: {fileID: 0} 326 | m_PrefabAsset: {fileID: 0} 327 | m_Name: 328 | m_Conditions: 329 | - m_ConditionMode: 1 330 | m_ConditionEvent: New Trigger 331 | m_EventTreshold: 0 332 | m_DstStateMachine: {fileID: 0} 333 | m_DstState: {fileID: 1102048550424972832} 334 | m_Solo: 0 335 | m_Mute: 0 336 | m_IsExit: 0 337 | serializedVersion: 3 338 | m_TransitionDuration: 0.25 339 | m_TransitionOffset: 0 340 | m_ExitTime: 0.75 341 | m_HasExitTime: 0 342 | m_HasFixedDuration: 1 343 | m_InterruptionSource: 0 344 | m_OrderedInterruption: 1 345 | m_CanTransitionToSelf: 1 346 | --- !u!1101 &1101332741456274900 347 | AnimatorStateTransition: 348 | m_ObjectHideFlags: 1 349 | m_CorrespondingSourceObject: {fileID: 0} 350 | m_PrefabInstance: {fileID: 0} 351 | m_PrefabAsset: {fileID: 0} 352 | m_Name: 353 | m_Conditions: [] 354 | m_DstStateMachine: {fileID: 0} 355 | m_DstState: {fileID: 1102449438857753704} 356 | m_Solo: 0 357 | m_Mute: 0 358 | m_IsExit: 0 359 | serializedVersion: 3 360 | m_TransitionDuration: 0.25 361 | m_TransitionOffset: 0 362 | m_ExitTime: 0.75 363 | m_HasExitTime: 1 364 | m_HasFixedDuration: 1 365 | m_InterruptionSource: 0 366 | m_OrderedInterruption: 1 367 | m_CanTransitionToSelf: 1 368 | --- !u!1101 &1101448556286095154 369 | AnimatorStateTransition: 370 | m_ObjectHideFlags: 1 371 | m_CorrespondingSourceObject: {fileID: 0} 372 | m_PrefabInstance: {fileID: 0} 373 | m_PrefabAsset: {fileID: 0} 374 | m_Name: 375 | m_Conditions: 376 | - m_ConditionMode: 1 377 | m_ConditionEvent: New Trigger 0 378 | m_EventTreshold: 0 379 | m_DstStateMachine: {fileID: 0} 380 | m_DstState: {fileID: 1102969336298765236} 381 | m_Solo: 0 382 | m_Mute: 0 383 | m_IsExit: 0 384 | serializedVersion: 3 385 | m_TransitionDuration: 0 386 | m_TransitionOffset: 0 387 | m_ExitTime: 0.75 388 | m_HasExitTime: 0 389 | m_HasFixedDuration: 1 390 | m_InterruptionSource: 0 391 | m_OrderedInterruption: 1 392 | m_CanTransitionToSelf: 1 393 | --- !u!1101 &1101840245923400594 394 | AnimatorStateTransition: 395 | m_ObjectHideFlags: 1 396 | m_CorrespondingSourceObject: {fileID: 0} 397 | m_PrefabInstance: {fileID: 0} 398 | m_PrefabAsset: {fileID: 0} 399 | m_Name: 400 | m_Conditions: [] 401 | m_DstStateMachine: {fileID: 0} 402 | m_DstState: {fileID: 1102236417657892592} 403 | m_Solo: 0 404 | m_Mute: 0 405 | m_IsExit: 0 406 | serializedVersion: 3 407 | m_TransitionDuration: 0.25 408 | m_TransitionOffset: 0 409 | m_ExitTime: 0.75 410 | m_HasExitTime: 1 411 | m_HasFixedDuration: 1 412 | m_InterruptionSource: 0 413 | m_OrderedInterruption: 1 414 | m_CanTransitionToSelf: 1 415 | --- !u!1101 &1101883989130870774 416 | AnimatorStateTransition: 417 | m_ObjectHideFlags: 1 418 | m_CorrespondingSourceObject: {fileID: 0} 419 | m_PrefabInstance: {fileID: 0} 420 | m_PrefabAsset: {fileID: 0} 421 | m_Name: 422 | m_Conditions: [] 423 | m_DstStateMachine: {fileID: 0} 424 | m_DstState: {fileID: 1102834152987229774} 425 | m_Solo: 0 426 | m_Mute: 0 427 | m_IsExit: 0 428 | serializedVersion: 3 429 | m_TransitionDuration: 0 430 | m_TransitionOffset: 0 431 | m_ExitTime: 0.75 432 | m_HasExitTime: 1 433 | m_HasFixedDuration: 1 434 | m_InterruptionSource: 0 435 | m_OrderedInterruption: 1 436 | m_CanTransitionToSelf: 1 437 | --- !u!1102 &1102048550424972832 438 | AnimatorState: 439 | serializedVersion: 5 440 | m_ObjectHideFlags: 1 441 | m_CorrespondingSourceObject: {fileID: 0} 442 | m_PrefabInstance: {fileID: 0} 443 | m_PrefabAsset: {fileID: 0} 444 | m_Name: New State 2 445 | m_Speed: 1 446 | m_CycleOffset: 0 447 | m_Transitions: [] 448 | m_StateMachineBehaviours: 449 | - {fileID: 114602416981136046} 450 | - {fileID: 114116155994235004} 451 | m_Position: {x: 50, y: 50, z: 0} 452 | m_IKOnFeet: 0 453 | m_WriteDefaultValues: 1 454 | m_Mirror: 0 455 | m_SpeedParameterActive: 0 456 | m_MirrorParameterActive: 0 457 | m_CycleOffsetParameterActive: 0 458 | m_TimeParameterActive: 0 459 | m_Motion: {fileID: 0} 460 | m_Tag: 461 | m_SpeedParameter: 462 | m_MirrorParameter: 463 | m_CycleOffsetParameter: 464 | m_TimeParameter: 465 | --- !u!1102 &1102236417657892592 466 | AnimatorState: 467 | serializedVersion: 5 468 | m_ObjectHideFlags: 1 469 | m_CorrespondingSourceObject: {fileID: 0} 470 | m_PrefabInstance: {fileID: 0} 471 | m_PrefabAsset: {fileID: 0} 472 | m_Name: New State 1 473 | m_Speed: 1 474 | m_CycleOffset: 0 475 | m_Transitions: 476 | - {fileID: 1101332741456274900} 477 | m_StateMachineBehaviours: 478 | - {fileID: 114672396426177512} 479 | m_Position: {x: 50, y: 50, z: 0} 480 | m_IKOnFeet: 0 481 | m_WriteDefaultValues: 1 482 | m_Mirror: 0 483 | m_SpeedParameterActive: 0 484 | m_MirrorParameterActive: 0 485 | m_CycleOffsetParameterActive: 0 486 | m_TimeParameterActive: 0 487 | m_Motion: {fileID: 0} 488 | m_Tag: 489 | m_SpeedParameter: 490 | m_MirrorParameter: 491 | m_CycleOffsetParameter: 492 | m_TimeParameter: 493 | --- !u!1102 &1102449438857753704 494 | AnimatorState: 495 | serializedVersion: 5 496 | m_ObjectHideFlags: 1 497 | m_CorrespondingSourceObject: {fileID: 0} 498 | m_PrefabInstance: {fileID: 0} 499 | m_PrefabAsset: {fileID: 0} 500 | m_Name: New State 3 501 | m_Speed: 1 502 | m_CycleOffset: 0 503 | m_Transitions: [] 504 | m_StateMachineBehaviours: 505 | - {fileID: 114011792459697338} 506 | - {fileID: 114385689325460966} 507 | m_Position: {x: 50, y: 50, z: 0} 508 | m_IKOnFeet: 0 509 | m_WriteDefaultValues: 1 510 | m_Mirror: 0 511 | m_SpeedParameterActive: 0 512 | m_MirrorParameterActive: 0 513 | m_CycleOffsetParameterActive: 0 514 | m_TimeParameterActive: 0 515 | m_Motion: {fileID: 0} 516 | m_Tag: 517 | m_SpeedParameter: 518 | m_MirrorParameter: 519 | m_CycleOffsetParameter: 520 | m_TimeParameter: 521 | --- !u!1102 &1102614988757323232 522 | AnimatorState: 523 | serializedVersion: 5 524 | m_ObjectHideFlags: 1 525 | m_CorrespondingSourceObject: {fileID: 0} 526 | m_PrefabInstance: {fileID: 0} 527 | m_PrefabAsset: {fileID: 0} 528 | m_Name: New State 529 | m_Speed: 1 530 | m_CycleOffset: 0 531 | m_Transitions: 532 | - {fileID: 1101110108455445230} 533 | m_StateMachineBehaviours: 534 | - {fileID: 114345647780524880} 535 | m_Position: {x: 50, y: 50, z: 0} 536 | m_IKOnFeet: 0 537 | m_WriteDefaultValues: 1 538 | m_Mirror: 0 539 | m_SpeedParameterActive: 0 540 | m_MirrorParameterActive: 0 541 | m_CycleOffsetParameterActive: 0 542 | m_TimeParameterActive: 0 543 | m_Motion: {fileID: 0} 544 | m_Tag: 545 | m_SpeedParameter: 546 | m_MirrorParameter: 547 | m_CycleOffsetParameter: 548 | m_TimeParameter: 549 | --- !u!1102 &1102671653880976134 550 | AnimatorState: 551 | serializedVersion: 5 552 | m_ObjectHideFlags: 1 553 | m_CorrespondingSourceObject: {fileID: 0} 554 | m_PrefabInstance: {fileID: 0} 555 | m_PrefabAsset: {fileID: 0} 556 | m_Name: New State 0 557 | m_Speed: 1 558 | m_CycleOffset: 0 559 | m_Transitions: 560 | - {fileID: 1101840245923400594} 561 | m_StateMachineBehaviours: 562 | - {fileID: 114780831260851114} 563 | m_Position: {x: 50, y: 50, z: 0} 564 | m_IKOnFeet: 0 565 | m_WriteDefaultValues: 1 566 | m_Mirror: 0 567 | m_SpeedParameterActive: 0 568 | m_MirrorParameterActive: 0 569 | m_CycleOffsetParameterActive: 0 570 | m_TimeParameterActive: 0 571 | m_Motion: {fileID: 0} 572 | m_Tag: 573 | m_SpeedParameter: 574 | m_MirrorParameter: 575 | m_CycleOffsetParameter: 576 | m_TimeParameter: 577 | --- !u!1102 &1102834152987229774 578 | AnimatorState: 579 | serializedVersion: 5 580 | m_ObjectHideFlags: 1 581 | m_CorrespondingSourceObject: {fileID: 0} 582 | m_PrefabInstance: {fileID: 0} 583 | m_PrefabAsset: {fileID: 0} 584 | m_Name: New State 5 585 | m_Speed: 1 586 | m_CycleOffset: 0 587 | m_Transitions: [] 588 | m_StateMachineBehaviours: 589 | - {fileID: 114766571695902224} 590 | m_Position: {x: 50, y: 50, z: 0} 591 | m_IKOnFeet: 0 592 | m_WriteDefaultValues: 1 593 | m_Mirror: 0 594 | m_SpeedParameterActive: 0 595 | m_MirrorParameterActive: 0 596 | m_CycleOffsetParameterActive: 0 597 | m_TimeParameterActive: 0 598 | m_Motion: {fileID: 0} 599 | m_Tag: 600 | m_SpeedParameter: 601 | m_MirrorParameter: 602 | m_CycleOffsetParameter: 603 | m_TimeParameter: 604 | --- !u!1102 &1102969336298765236 605 | AnimatorState: 606 | serializedVersion: 5 607 | m_ObjectHideFlags: 1 608 | m_CorrespondingSourceObject: {fileID: 0} 609 | m_PrefabInstance: {fileID: 0} 610 | m_PrefabAsset: {fileID: 0} 611 | m_Name: New State 4 612 | m_Speed: 1 613 | m_CycleOffset: 0 614 | m_Transitions: 615 | - {fileID: 1101883989130870774} 616 | m_StateMachineBehaviours: 617 | - {fileID: 114247748573977118} 618 | m_Position: {x: 50, y: 50, z: 0} 619 | m_IKOnFeet: 0 620 | m_WriteDefaultValues: 1 621 | m_Mirror: 0 622 | m_SpeedParameterActive: 0 623 | m_MirrorParameterActive: 0 624 | m_CycleOffsetParameterActive: 0 625 | m_TimeParameterActive: 0 626 | m_Motion: {fileID: 0} 627 | m_Tag: 628 | m_SpeedParameter: 629 | m_MirrorParameter: 630 | m_CycleOffsetParameter: 631 | m_TimeParameter: 632 | --- !u!1107 &1107566895526468402 633 | AnimatorStateMachine: 634 | serializedVersion: 5 635 | m_ObjectHideFlags: 1 636 | m_CorrespondingSourceObject: {fileID: 0} 637 | m_PrefabInstance: {fileID: 0} 638 | m_PrefabAsset: {fileID: 0} 639 | m_Name: Base Layer 640 | m_ChildStates: 641 | - serializedVersion: 1 642 | m_State: {fileID: 1102614988757323232} 643 | m_Position: {x: 396, y: 0, z: 0} 644 | - serializedVersion: 1 645 | m_State: {fileID: 1102671653880976134} 646 | m_Position: {x: 396, y: 72, z: 0} 647 | - serializedVersion: 1 648 | m_State: {fileID: 1102236417657892592} 649 | m_Position: {x: 396, y: 156, z: 0} 650 | - serializedVersion: 1 651 | m_State: {fileID: 1102048550424972832} 652 | m_Position: {x: 396, y: 240, z: 0} 653 | - serializedVersion: 1 654 | m_State: {fileID: 1102449438857753704} 655 | m_Position: {x: 624, y: 156, z: 0} 656 | - serializedVersion: 1 657 | m_State: {fileID: 1102969336298765236} 658 | m_Position: {x: 396, y: 300, z: 0} 659 | - serializedVersion: 1 660 | m_State: {fileID: 1102834152987229774} 661 | m_Position: {x: 636, y: 300, z: 0} 662 | m_ChildStateMachines: [] 663 | m_AnyStateTransitions: 664 | - {fileID: 1101247825265993434} 665 | - {fileID: 1101448556286095154} 666 | m_EntryTransitions: [] 667 | m_StateMachineTransitions: {} 668 | m_StateMachineBehaviours: [] 669 | m_AnyStatePosition: {x: 156, y: 276, z: 0} 670 | m_EntryPosition: {x: 420, y: -60, z: 0} 671 | m_ExitPosition: {x: 156, y: 324, z: 0} 672 | m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} 673 | m_DefaultState: {fileID: 1102614988757323232} 674 | -------------------------------------------------------------------------------- /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: d93e9ef8b02a648498e65e7d5be818b8 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: ASD 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 | iosAppInBackgroundBehavior: 0 56 | displayResolutionDialog: 1 57 | iosAllowHTTPDownload: 1 58 | allowedAutorotateToPortrait: 1 59 | allowedAutorotateToPortraitUpsideDown: 1 60 | allowedAutorotateToLandscapeRight: 1 61 | allowedAutorotateToLandscapeLeft: 1 62 | useOSAutorotation: 1 63 | use32BitDisplayBuffer: 1 64 | preserveFramebufferAlpha: 0 65 | disableDepthAndStencilBuffers: 0 66 | androidStartInFullscreen: 1 67 | androidRenderOutsideSafeArea: 0 68 | androidBlitType: 0 69 | defaultIsNativeResolution: 1 70 | macRetinaSupport: 1 71 | runInBackground: 1 72 | captureSingleScreen: 0 73 | muteOtherAudioSources: 0 74 | Prepare IOS For Recording: 0 75 | Force IOS Speakers When Recording: 0 76 | deferSystemGesturesMode: 0 77 | hideHomeButton: 0 78 | submitAnalytics: 1 79 | usePlayerLog: 1 80 | bakeCollisionMeshes: 0 81 | forceSingleInstance: 0 82 | resizableWindow: 0 83 | useMacAppStoreValidation: 0 84 | macAppStoreCategory: public.app-category.games 85 | gpuSkinning: 1 86 | graphicsJobs: 0 87 | xboxPIXTextureCapture: 0 88 | xboxEnableAvatar: 0 89 | xboxEnableKinect: 0 90 | xboxEnableKinectAutoTracking: 0 91 | xboxEnableFitness: 0 92 | visibleInBackground: 1 93 | allowFullscreenSwitch: 1 94 | graphicsJobMode: 0 95 | fullscreenMode: 1 96 | xboxSpeechDB: 0 97 | xboxEnableHeadOrientation: 0 98 | xboxEnableGuest: 0 99 | xboxEnablePIXSampling: 0 100 | metalFramebufferOnly: 0 101 | xboxOneResolution: 0 102 | xboxOneSResolution: 0 103 | xboxOneXResolution: 3 104 | xboxOneMonoLoggingLevel: 0 105 | xboxOneLoggingLevel: 1 106 | xboxOneDisableEsram: 0 107 | xboxOnePresentImmediateThreshold: 0 108 | switchQueueCommandMemory: 1048576 109 | switchQueueControlMemory: 16384 110 | switchQueueComputeMemory: 262144 111 | switchNVNShaderPoolsGranularity: 33554432 112 | switchNVNDefaultPoolsGranularity: 16777216 113 | switchNVNOtherPoolsGranularity: 16777216 114 | vulkanEnableSetSRGBWrite: 0 115 | m_SupportedAspectRatios: 116 | 4:3: 1 117 | 5:4: 1 118 | 16:10: 1 119 | 16:9: 1 120 | Others: 1 121 | bundleVersion: 0.1 122 | preloadedAssets: [] 123 | metroInputSource: 0 124 | wsaTransparentSwapchain: 0 125 | m_HolographicPauseOnTrackingLoss: 1 126 | xboxOneDisableKinectGpuReservation: 0 127 | xboxOneEnable7thCore: 0 128 | isWsaHolographicRemotingEnabled: 0 129 | vrSettings: 130 | cardboard: 131 | depthFormat: 0 132 | enableTransitionView: 0 133 | daydream: 134 | depthFormat: 0 135 | useSustainedPerformanceMode: 0 136 | enableVideoLayer: 0 137 | useProtectedVideoMemory: 0 138 | minimumSupportedHeadTracking: 0 139 | maximumSupportedHeadTracking: 1 140 | hololens: 141 | depthFormat: 1 142 | depthBufferSharingEnabled: 0 143 | oculus: 144 | sharedDepthBuffer: 1 145 | dashSupport: 1 146 | enable360StereoCapture: 0 147 | protectGraphicsMemory: 0 148 | enableFrameTimingStats: 0 149 | useHDRDisplay: 0 150 | m_ColorGamuts: 00000000 151 | targetPixelDensity: 30 152 | resolutionScalingMode: 0 153 | androidSupportedAspectRatio: 1 154 | androidMaxAspectRatio: 2.1 155 | applicationIdentifier: {} 156 | buildNumber: {} 157 | AndroidBundleVersionCode: 1 158 | AndroidMinSdkVersion: 16 159 | AndroidTargetSdkVersion: 0 160 | AndroidPreferredInstallLocation: 1 161 | aotOptions: 162 | stripEngineCode: 1 163 | iPhoneStrippingLevel: 0 164 | iPhoneScriptCallOptimization: 0 165 | ForceInternetPermission: 0 166 | ForceSDCardPermission: 0 167 | CreateWallpaper: 0 168 | APKExpansionFiles: 0 169 | keepLoadedShadersAlive: 0 170 | StripUnusedMeshComponents: 1 171 | VertexChannelCompressionMask: 4054 172 | iPhoneSdkVersion: 988 173 | iOSTargetOSVersionString: 9.0 174 | tvOSSdkVersion: 0 175 | tvOSRequireExtendedGameController: 0 176 | tvOSTargetOSVersionString: 9.0 177 | uIPrerenderedIcon: 0 178 | uIRequiresPersistentWiFi: 0 179 | uIRequiresFullScreen: 1 180 | uIStatusBarHidden: 1 181 | uIExitOnSuspend: 0 182 | uIStatusBarStyle: 0 183 | iPhoneSplashScreen: {fileID: 0} 184 | iPhoneHighResSplashScreen: {fileID: 0} 185 | iPhoneTallHighResSplashScreen: {fileID: 0} 186 | iPhone47inSplashScreen: {fileID: 0} 187 | iPhone55inPortraitSplashScreen: {fileID: 0} 188 | iPhone55inLandscapeSplashScreen: {fileID: 0} 189 | iPhone58inPortraitSplashScreen: {fileID: 0} 190 | iPhone58inLandscapeSplashScreen: {fileID: 0} 191 | iPadPortraitSplashScreen: {fileID: 0} 192 | iPadHighResPortraitSplashScreen: {fileID: 0} 193 | iPadLandscapeSplashScreen: {fileID: 0} 194 | iPadHighResLandscapeSplashScreen: {fileID: 0} 195 | appleTVSplashScreen: {fileID: 0} 196 | appleTVSplashScreen2x: {fileID: 0} 197 | tvOSSmallIconLayers: [] 198 | tvOSSmallIconLayers2x: [] 199 | tvOSLargeIconLayers: [] 200 | tvOSLargeIconLayers2x: [] 201 | tvOSTopShelfImageLayers: [] 202 | tvOSTopShelfImageLayers2x: [] 203 | tvOSTopShelfImageWideLayers: [] 204 | tvOSTopShelfImageWideLayers2x: [] 205 | iOSLaunchScreenType: 0 206 | iOSLaunchScreenPortrait: {fileID: 0} 207 | iOSLaunchScreenLandscape: {fileID: 0} 208 | iOSLaunchScreenBackgroundColor: 209 | serializedVersion: 2 210 | rgba: 0 211 | iOSLaunchScreenFillPct: 100 212 | iOSLaunchScreenSize: 100 213 | iOSLaunchScreenCustomXibPath: 214 | iOSLaunchScreeniPadType: 0 215 | iOSLaunchScreeniPadImage: {fileID: 0} 216 | iOSLaunchScreeniPadBackgroundColor: 217 | serializedVersion: 2 218 | rgba: 0 219 | iOSLaunchScreeniPadFillPct: 100 220 | iOSLaunchScreeniPadSize: 100 221 | iOSLaunchScreeniPadCustomXibPath: 222 | iOSUseLaunchScreenStoryboard: 0 223 | iOSLaunchScreenCustomStoryboardPath: 224 | iOSDeviceRequirements: [] 225 | iOSURLSchemes: [] 226 | iOSBackgroundModes: 0 227 | iOSMetalForceHardShadows: 0 228 | metalEditorSupport: 1 229 | metalAPIValidation: 1 230 | iOSRenderExtraFrameOnPause: 0 231 | appleDeveloperTeamID: 232 | iOSManualSigningProvisioningProfileID: 233 | tvOSManualSigningProvisioningProfileID: 234 | iOSManualSigningProvisioningProfileType: 0 235 | tvOSManualSigningProvisioningProfileType: 0 236 | appleEnableAutomaticSigning: 0 237 | iOSRequireARKit: 0 238 | appleEnableProMotion: 0 239 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea 240 | templatePackageId: com.unity.template.3d@1.0.4 241 | templateDefaultScene: Assets/Scenes/SampleScene.unity 242 | AndroidTargetArchitectures: 5 243 | AndroidSplashScreenScale: 0 244 | androidSplashScreen: {fileID: 0} 245 | AndroidKeystoreName: 246 | AndroidKeyaliasName: 247 | AndroidBuildApkPerCpuArchitecture: 0 248 | AndroidTVCompatibility: 1 249 | AndroidIsGame: 1 250 | AndroidEnableTango: 0 251 | androidEnableBanner: 1 252 | androidUseLowAccuracyLocation: 0 253 | m_AndroidBanners: 254 | - width: 320 255 | height: 180 256 | banner: {fileID: 0} 257 | androidGamepadSupportLevel: 0 258 | resolutionDialogBanner: {fileID: 0} 259 | m_BuildTargetIcons: [] 260 | m_BuildTargetPlatformIcons: [] 261 | m_BuildTargetBatching: 262 | - m_BuildTarget: Standalone 263 | m_StaticBatching: 1 264 | m_DynamicBatching: 0 265 | - m_BuildTarget: tvOS 266 | m_StaticBatching: 1 267 | m_DynamicBatching: 0 268 | - m_BuildTarget: Android 269 | m_StaticBatching: 1 270 | m_DynamicBatching: 0 271 | - m_BuildTarget: iPhone 272 | m_StaticBatching: 1 273 | m_DynamicBatching: 0 274 | - m_BuildTarget: WebGL 275 | m_StaticBatching: 0 276 | m_DynamicBatching: 0 277 | m_BuildTargetGraphicsAPIs: 278 | - m_BuildTarget: AndroidPlayer 279 | m_APIs: 0b00000008000000 280 | m_Automatic: 1 281 | - m_BuildTarget: iOSSupport 282 | m_APIs: 10000000 283 | m_Automatic: 1 284 | - m_BuildTarget: AppleTVSupport 285 | m_APIs: 10000000 286 | m_Automatic: 0 287 | - m_BuildTarget: WebGLSupport 288 | m_APIs: 0b000000 289 | m_Automatic: 1 290 | m_BuildTargetVRSettings: 291 | - m_BuildTarget: Standalone 292 | m_Enabled: 0 293 | m_Devices: 294 | - Oculus 295 | - OpenVR 296 | m_BuildTargetEnableVuforiaSettings: [] 297 | openGLRequireES31: 0 298 | openGLRequireES31AEP: 0 299 | m_TemplateCustomTags: {} 300 | mobileMTRendering: 301 | Android: 1 302 | iPhone: 1 303 | tvOS: 1 304 | m_BuildTargetGroupLightmapEncodingQuality: [] 305 | m_BuildTargetGroupLightmapSettings: [] 306 | playModeTestRunnerEnabled: 0 307 | runPlayModeTestAsEditModeTest: 0 308 | actionOnDotNetUnhandledException: 1 309 | enableInternalProfiler: 0 310 | logObjCUncaughtExceptions: 1 311 | enableCrashReportAPI: 0 312 | cameraUsageDescription: 313 | locationUsageDescription: 314 | microphoneUsageDescription: 315 | switchNetLibKey: 316 | switchSocketMemoryPoolSize: 6144 317 | switchSocketAllocatorPoolSize: 128 318 | switchSocketConcurrencyLimit: 14 319 | switchScreenResolutionBehavior: 2 320 | switchUseCPUProfiler: 0 321 | switchApplicationID: 0x01004b9000490000 322 | switchNSODependencies: 323 | switchTitleNames_0: 324 | switchTitleNames_1: 325 | switchTitleNames_2: 326 | switchTitleNames_3: 327 | switchTitleNames_4: 328 | switchTitleNames_5: 329 | switchTitleNames_6: 330 | switchTitleNames_7: 331 | switchTitleNames_8: 332 | switchTitleNames_9: 333 | switchTitleNames_10: 334 | switchTitleNames_11: 335 | switchTitleNames_12: 336 | switchTitleNames_13: 337 | switchTitleNames_14: 338 | switchPublisherNames_0: 339 | switchPublisherNames_1: 340 | switchPublisherNames_2: 341 | switchPublisherNames_3: 342 | switchPublisherNames_4: 343 | switchPublisherNames_5: 344 | switchPublisherNames_6: 345 | switchPublisherNames_7: 346 | switchPublisherNames_8: 347 | switchPublisherNames_9: 348 | switchPublisherNames_10: 349 | switchPublisherNames_11: 350 | switchPublisherNames_12: 351 | switchPublisherNames_13: 352 | switchPublisherNames_14: 353 | switchIcons_0: {fileID: 0} 354 | switchIcons_1: {fileID: 0} 355 | switchIcons_2: {fileID: 0} 356 | switchIcons_3: {fileID: 0} 357 | switchIcons_4: {fileID: 0} 358 | switchIcons_5: {fileID: 0} 359 | switchIcons_6: {fileID: 0} 360 | switchIcons_7: {fileID: 0} 361 | switchIcons_8: {fileID: 0} 362 | switchIcons_9: {fileID: 0} 363 | switchIcons_10: {fileID: 0} 364 | switchIcons_11: {fileID: 0} 365 | switchIcons_12: {fileID: 0} 366 | switchIcons_13: {fileID: 0} 367 | switchIcons_14: {fileID: 0} 368 | switchSmallIcons_0: {fileID: 0} 369 | switchSmallIcons_1: {fileID: 0} 370 | switchSmallIcons_2: {fileID: 0} 371 | switchSmallIcons_3: {fileID: 0} 372 | switchSmallIcons_4: {fileID: 0} 373 | switchSmallIcons_5: {fileID: 0} 374 | switchSmallIcons_6: {fileID: 0} 375 | switchSmallIcons_7: {fileID: 0} 376 | switchSmallIcons_8: {fileID: 0} 377 | switchSmallIcons_9: {fileID: 0} 378 | switchSmallIcons_10: {fileID: 0} 379 | switchSmallIcons_11: {fileID: 0} 380 | switchSmallIcons_12: {fileID: 0} 381 | switchSmallIcons_13: {fileID: 0} 382 | switchSmallIcons_14: {fileID: 0} 383 | switchManualHTML: 384 | switchAccessibleURLs: 385 | switchLegalInformation: 386 | switchMainThreadStackSize: 1048576 387 | switchPresenceGroupId: 388 | switchLogoHandling: 0 389 | switchReleaseVersion: 0 390 | switchDisplayVersion: 1.0.0 391 | switchStartupUserAccount: 0 392 | switchTouchScreenUsage: 0 393 | switchSupportedLanguagesMask: 0 394 | switchLogoType: 0 395 | switchApplicationErrorCodeCategory: 396 | switchUserAccountSaveDataSize: 0 397 | switchUserAccountSaveDataJournalSize: 0 398 | switchApplicationAttribute: 0 399 | switchCardSpecSize: -1 400 | switchCardSpecClock: -1 401 | switchRatingsMask: 0 402 | switchRatingsInt_0: 0 403 | switchRatingsInt_1: 0 404 | switchRatingsInt_2: 0 405 | switchRatingsInt_3: 0 406 | switchRatingsInt_4: 0 407 | switchRatingsInt_5: 0 408 | switchRatingsInt_6: 0 409 | switchRatingsInt_7: 0 410 | switchRatingsInt_8: 0 411 | switchRatingsInt_9: 0 412 | switchRatingsInt_10: 0 413 | switchRatingsInt_11: 0 414 | switchLocalCommunicationIds_0: 415 | switchLocalCommunicationIds_1: 416 | switchLocalCommunicationIds_2: 417 | switchLocalCommunicationIds_3: 418 | switchLocalCommunicationIds_4: 419 | switchLocalCommunicationIds_5: 420 | switchLocalCommunicationIds_6: 421 | switchLocalCommunicationIds_7: 422 | switchParentalControl: 0 423 | switchAllowsScreenshot: 1 424 | switchAllowsVideoCapturing: 1 425 | switchAllowsRuntimeAddOnContentInstall: 0 426 | switchDataLossConfirmation: 0 427 | switchUserAccountLockEnabled: 0 428 | switchSystemResourceMemory: 16777216 429 | switchSupportedNpadStyles: 3 430 | switchNativeFsCacheSize: 32 431 | switchIsHoldTypeHorizontal: 0 432 | switchSupportedNpadCount: 8 433 | switchSocketConfigEnabled: 0 434 | switchTcpInitialSendBufferSize: 32 435 | switchTcpInitialReceiveBufferSize: 64 436 | switchTcpAutoSendBufferSizeMax: 256 437 | switchTcpAutoReceiveBufferSizeMax: 256 438 | switchUdpSendBufferSize: 9 439 | switchUdpReceiveBufferSize: 42 440 | switchSocketBufferEfficiency: 4 441 | switchSocketInitializeEnabled: 1 442 | switchNetworkInterfaceManagerInitializeEnabled: 1 443 | switchPlayerConnectionEnabled: 1 444 | ps4NPAgeRating: 12 445 | ps4NPTitleSecret: 446 | ps4NPTrophyPackPath: 447 | ps4ParentalLevel: 11 448 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 449 | ps4Category: 0 450 | ps4MasterVersion: 01.00 451 | ps4AppVersion: 01.00 452 | ps4AppType: 0 453 | ps4ParamSfxPath: 454 | ps4VideoOutPixelFormat: 0 455 | ps4VideoOutInitialWidth: 1920 456 | ps4VideoOutBaseModeInitialWidth: 1920 457 | ps4VideoOutReprojectionRate: 60 458 | ps4PronunciationXMLPath: 459 | ps4PronunciationSIGPath: 460 | ps4BackgroundImagePath: 461 | ps4StartupImagePath: 462 | ps4StartupImagesFolder: 463 | ps4IconImagesFolder: 464 | ps4SaveDataImagePath: 465 | ps4SdkOverride: 466 | ps4BGMPath: 467 | ps4ShareFilePath: 468 | ps4ShareOverlayImagePath: 469 | ps4PrivacyGuardImagePath: 470 | ps4NPtitleDatPath: 471 | ps4RemotePlayKeyAssignment: -1 472 | ps4RemotePlayKeyMappingDir: 473 | ps4PlayTogetherPlayerCount: 0 474 | ps4EnterButtonAssignment: 1 475 | ps4ApplicationParam1: 0 476 | ps4ApplicationParam2: 0 477 | ps4ApplicationParam3: 0 478 | ps4ApplicationParam4: 0 479 | ps4DownloadDataSize: 0 480 | ps4GarlicHeapSize: 2048 481 | ps4ProGarlicHeapSize: 2560 482 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 483 | ps4pnSessions: 1 484 | ps4pnPresence: 1 485 | ps4pnFriends: 1 486 | ps4pnGameCustomData: 1 487 | playerPrefsSupport: 0 488 | enableApplicationExit: 0 489 | resetTempFolder: 1 490 | restrictedAudioUsageRights: 0 491 | ps4UseResolutionFallback: 0 492 | ps4ReprojectionSupport: 0 493 | ps4UseAudio3dBackend: 0 494 | ps4SocialScreenEnabled: 0 495 | ps4ScriptOptimizationLevel: 0 496 | ps4Audio3dVirtualSpeakerCount: 14 497 | ps4attribCpuUsage: 0 498 | ps4PatchPkgPath: 499 | ps4PatchLatestPkgPath: 500 | ps4PatchChangeinfoPath: 501 | ps4PatchDayOne: 0 502 | ps4attribUserManagement: 0 503 | ps4attribMoveSupport: 0 504 | ps4attrib3DSupport: 0 505 | ps4attribShareSupport: 0 506 | ps4attribExclusiveVR: 0 507 | ps4disableAutoHideSplash: 0 508 | ps4videoRecordingFeaturesUsed: 0 509 | ps4contentSearchFeaturesUsed: 0 510 | ps4attribEyeToEyeDistanceSettingVR: 0 511 | ps4IncludedModules: [] 512 | monoEnv: 513 | splashScreenBackgroundSourceLandscape: {fileID: 0} 514 | splashScreenBackgroundSourcePortrait: {fileID: 0} 515 | spritePackerPolicy: 516 | webGLMemorySize: 256 517 | webGLExceptionSupport: 1 518 | webGLNameFilesAsHashes: 0 519 | webGLDataCaching: 1 520 | webGLDebugSymbols: 0 521 | webGLEmscriptenArgs: 522 | webGLModulesDirectory: 523 | webGLTemplate: APPLICATION:Default 524 | webGLAnalyzeBuildSize: 0 525 | webGLUseEmbeddedResources: 0 526 | webGLCompressionFormat: 1 527 | webGLLinkerTarget: 1 528 | webGLThreadsSupport: 0 529 | scriptingDefineSymbols: {} 530 | platformArchitecture: {} 531 | scriptingBackend: {} 532 | il2cppCompilerConfiguration: {} 533 | managedStrippingLevel: {} 534 | incrementalIl2cppBuild: {} 535 | allowUnsafeCode: 0 536 | additionalIl2CppArgs: 537 | scriptingRuntimeVersion: 1 538 | apiCompatibilityLevelPerPlatform: {} 539 | m_RenderingPath: 1 540 | m_MobileRenderingPath: 1 541 | metroPackageName: Template_3D 542 | metroPackageVersion: 543 | metroCertificatePath: 544 | metroCertificatePassword: 545 | metroCertificateSubject: 546 | metroCertificateIssuer: 547 | metroCertificateNotAfter: 0000000000000000 548 | metroApplicationDescription: Template_3D 549 | wsaImages: {} 550 | metroTileShortName: 551 | metroTileShowName: 0 552 | metroMediumTileShowName: 0 553 | metroLargeTileShowName: 0 554 | metroWideTileShowName: 0 555 | metroSupportStreamingInstall: 0 556 | metroLastRequiredScene: 0 557 | metroDefaultTileSize: 1 558 | metroTileForegroundText: 2 559 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 560 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 561 | a: 1} 562 | metroSplashScreenUseBackgroundColor: 0 563 | platformCapabilities: {} 564 | metroTargetDeviceFamilies: {} 565 | metroFTAName: 566 | metroFTAFileTypes: [] 567 | metroProtocolName: 568 | metroCompilationOverrides: 1 569 | XboxOneProductId: 570 | XboxOneUpdateKey: 571 | XboxOneSandboxId: 572 | XboxOneContentId: 573 | XboxOneTitleId: 574 | XboxOneSCId: 575 | XboxOneGameOsOverridePath: 576 | XboxOnePackagingOverridePath: 577 | XboxOneAppManifestOverridePath: 578 | XboxOneVersion: 1.0.0.0 579 | XboxOnePackageEncryption: 0 580 | XboxOnePackageUpdateGranularity: 2 581 | XboxOneDescription: 582 | XboxOneLanguage: 583 | - enus 584 | XboxOneCapability: [] 585 | XboxOneGameRating: {} 586 | XboxOneIsContentPackage: 0 587 | XboxOneEnableGPUVariability: 0 588 | XboxOneSockets: {} 589 | XboxOneSplashScreen: {fileID: 0} 590 | XboxOneAllowedProductIds: [] 591 | XboxOnePersistentLocalStorageSize: 0 592 | XboxOneXTitleMemory: 8 593 | xboxOneScriptCompiler: 0 594 | XboxOneOverrideIdentityName: 595 | vrEditorSettings: 596 | daydream: 597 | daydreamIconForeground: {fileID: 0} 598 | daydreamIconBackground: {fileID: 0} 599 | cloudServicesEnabled: 600 | UNet: 1 601 | luminIcon: 602 | m_Name: 603 | m_ModelFolderPath: 604 | m_PortalFolderPath: 605 | luminCert: 606 | m_CertPath: 607 | m_PrivateKeyPath: 608 | luminIsChannelApp: 0 609 | luminVersion: 610 | m_VersionCode: 1 611 | m_VersionName: 612 | facebookSdkVersion: 7.9.4 613 | facebookAppId: 614 | facebookCookies: 1 615 | facebookLogging: 1 616 | facebookStatus: 1 617 | facebookXfbml: 0 618 | facebookFrictionlessRequests: 1 619 | apiCompatibilityLevel: 6 620 | cloudProjectId: 621 | framebufferDepthMemorylessMode: 0 622 | projectName: 623 | organizationId: 624 | cloudEnabled: 0 625 | enableNativePlatformBackendsForNewInputSystem: 0 626 | disableOldInputManagerSupport: 0 627 | legacyClampBlendShapeWeights: 0 628 | -------------------------------------------------------------------------------- /Assets/StateMachineBehaviours/Test/Test scene 4 SMB.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.3731193, g: 0.38073996, b: 0.35872698, 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_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 1 56 | m_LightmapEditorSettings: 57 | serializedVersion: 10 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_Padding: 2 66 | m_LightmapParameters: {fileID: 0} 67 | m_LightmapsBakeMode: 1 68 | m_TextureCompression: 1 69 | m_FinalGather: 0 70 | m_FinalGatherFiltering: 1 71 | m_FinalGatherRayCount: 256 72 | m_ReflectionCompression: 2 73 | m_MixedBakeMode: 2 74 | m_BakeBackend: 1 75 | m_PVRSampling: 1 76 | m_PVRDirectSampleCount: 32 77 | m_PVRSampleCount: 500 78 | m_PVRBounces: 2 79 | m_PVRFilterTypeDirect: 0 80 | m_PVRFilterTypeIndirect: 0 81 | m_PVRFilterTypeAO: 0 82 | m_PVRFilteringMode: 1 83 | m_PVRCulling: 1 84 | m_PVRFilteringGaussRadiusDirect: 1 85 | m_PVRFilteringGaussRadiusIndirect: 5 86 | m_PVRFilteringGaussRadiusAO: 2 87 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 88 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 89 | m_PVRFilteringAtrousPositionSigmaAO: 1 90 | m_ShowResolutionOverlay: 1 91 | m_LightingDataAsset: {fileID: 0} 92 | m_UseShadowmask: 1 93 | --- !u!196 &4 94 | NavMeshSettings: 95 | serializedVersion: 2 96 | m_ObjectHideFlags: 0 97 | m_BuildSettings: 98 | serializedVersion: 2 99 | agentTypeID: 0 100 | agentRadius: 0.5 101 | agentHeight: 2 102 | agentSlope: 45 103 | agentClimb: 0.4 104 | ledgeDropHeight: 0 105 | maxJumpAcrossDistance: 0 106 | minRegionArea: 2 107 | manualCellSize: 0 108 | cellSize: 0.16666667 109 | manualTileSize: 0 110 | tileSize: 256 111 | accuratePlacement: 0 112 | debug: 113 | m_Flags: 0 114 | m_NavMeshData: {fileID: 0} 115 | --- !u!1 &47301456 116 | GameObject: 117 | m_ObjectHideFlags: 0 118 | m_CorrespondingSourceObject: {fileID: 0} 119 | m_PrefabInstance: {fileID: 0} 120 | m_PrefabAsset: {fileID: 0} 121 | serializedVersion: 6 122 | m_Component: 123 | - component: {fileID: 47301459} 124 | - component: {fileID: 47301458} 125 | - component: {fileID: 47301457} 126 | m_Layer: 0 127 | m_Name: Main Camera 128 | m_TagString: MainCamera 129 | m_Icon: {fileID: 0} 130 | m_NavMeshLayer: 0 131 | m_StaticEditorFlags: 0 132 | m_IsActive: 1 133 | --- !u!81 &47301457 134 | AudioListener: 135 | m_ObjectHideFlags: 0 136 | m_CorrespondingSourceObject: {fileID: 0} 137 | m_PrefabInstance: {fileID: 0} 138 | m_PrefabAsset: {fileID: 0} 139 | m_GameObject: {fileID: 47301456} 140 | m_Enabled: 1 141 | --- !u!20 &47301458 142 | Camera: 143 | m_ObjectHideFlags: 0 144 | m_CorrespondingSourceObject: {fileID: 0} 145 | m_PrefabInstance: {fileID: 0} 146 | m_PrefabAsset: {fileID: 0} 147 | m_GameObject: {fileID: 47301456} 148 | m_Enabled: 1 149 | serializedVersion: 2 150 | m_ClearFlags: 1 151 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 152 | m_projectionMatrixMode: 1 153 | m_SensorSize: {x: 36, y: 24} 154 | m_LensShift: {x: 0, y: 0} 155 | m_GateFitMode: 2 156 | m_FocalLength: 50 157 | m_NormalizedViewPortRect: 158 | serializedVersion: 2 159 | x: 0 160 | y: 0 161 | width: 1 162 | height: 1 163 | near clip plane: 0.3 164 | far clip plane: 1000 165 | field of view: 60 166 | orthographic: 0 167 | orthographic size: 5 168 | m_Depth: -1 169 | m_CullingMask: 170 | serializedVersion: 2 171 | m_Bits: 4294967295 172 | m_RenderingPath: -1 173 | m_TargetTexture: {fileID: 0} 174 | m_TargetDisplay: 0 175 | m_TargetEye: 3 176 | m_HDR: 1 177 | m_AllowMSAA: 1 178 | m_AllowDynamicResolution: 0 179 | m_ForceIntoRT: 0 180 | m_OcclusionCulling: 1 181 | m_StereoConvergence: 10 182 | m_StereoSeparation: 0.022 183 | --- !u!4 &47301459 184 | Transform: 185 | m_ObjectHideFlags: 0 186 | m_CorrespondingSourceObject: {fileID: 0} 187 | m_PrefabInstance: {fileID: 0} 188 | m_PrefabAsset: {fileID: 0} 189 | m_GameObject: {fileID: 47301456} 190 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 191 | m_LocalPosition: {x: 0, y: 1, z: -10} 192 | m_LocalScale: {x: 1, y: 1, z: 1} 193 | m_Children: [] 194 | m_Father: {fileID: 0} 195 | m_RootOrder: 0 196 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 197 | --- !u!1 &1753905102 198 | GameObject: 199 | m_ObjectHideFlags: 0 200 | m_CorrespondingSourceObject: {fileID: 0} 201 | m_PrefabInstance: {fileID: 0} 202 | m_PrefabAsset: {fileID: 0} 203 | serializedVersion: 6 204 | m_Component: 205 | - component: {fileID: 1753905106} 206 | - component: {fileID: 1753905105} 207 | - component: {fileID: 1753905104} 208 | - component: {fileID: 1753905103} 209 | m_Layer: 0 210 | m_Name: GameObject 211 | m_TagString: Untagged 212 | m_Icon: {fileID: 0} 213 | m_NavMeshLayer: 0 214 | m_StaticEditorFlags: 0 215 | m_IsActive: 1 216 | --- !u!114 &1753905103 217 | MonoBehaviour: 218 | m_ObjectHideFlags: 0 219 | m_CorrespondingSourceObject: {fileID: 0} 220 | m_PrefabInstance: {fileID: 0} 221 | m_PrefabAsset: {fileID: 0} 222 | m_GameObject: {fileID: 1753905102} 223 | m_Enabled: 1 224 | m_EditorHideFlags: 0 225 | m_Script: {fileID: 11500000, guid: 02f8bea56394dab43ac9a0c223694c82, type: 3} 226 | m_Name: 227 | m_EditorClassIdentifier: 228 | events: 229 | - name: 1 230 | id: -2082672713 231 | action: 232 | m_PersistentCalls: 233 | m_Calls: 234 | - m_Target: {fileID: 1753905105} 235 | m_MethodName: Test 236 | m_Mode: 5 237 | m_Arguments: 238 | m_ObjectArgument: {fileID: 0} 239 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 240 | m_IntArgument: 0 241 | m_FloatArgument: 0 242 | m_StringArgument: 1 243 | m_BoolArgument: 0 244 | m_CallState: 2 245 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 246 | Culture=neutral, PublicKeyToken=null 247 | - name: 2 248 | id: 450215437 249 | action: 250 | m_PersistentCalls: 251 | m_Calls: 252 | - m_Target: {fileID: 1753905105} 253 | m_MethodName: Test 254 | m_Mode: 5 255 | m_Arguments: 256 | m_ObjectArgument: {fileID: 0} 257 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 258 | m_IntArgument: 0 259 | m_FloatArgument: 0 260 | m_StringArgument: 2 261 | m_BoolArgument: 0 262 | m_CallState: 2 263 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 264 | Culture=neutral, PublicKeyToken=null 265 | - name: 3 266 | id: 1842515611 267 | action: 268 | m_PersistentCalls: 269 | m_Calls: 270 | - m_Target: {fileID: 1753905105} 271 | m_MethodName: Test 272 | m_Mode: 5 273 | m_Arguments: 274 | m_ObjectArgument: {fileID: 0} 275 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 276 | m_IntArgument: 0 277 | m_FloatArgument: 0 278 | m_StringArgument: 3 279 | m_BoolArgument: 0 280 | m_CallState: 2 281 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 282 | Culture=neutral, PublicKeyToken=null 283 | - name: 4 284 | id: -206169288 285 | action: 286 | m_PersistentCalls: 287 | m_Calls: 288 | - m_Target: {fileID: 1753905105} 289 | m_MethodName: Test 290 | m_Mode: 5 291 | m_Arguments: 292 | m_ObjectArgument: {fileID: 0} 293 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 294 | m_IntArgument: 0 295 | m_FloatArgument: 0 296 | m_StringArgument: 4 297 | m_BoolArgument: 0 298 | m_CallState: 2 299 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 300 | Culture=neutral, PublicKeyToken=null 301 | - name: 5 302 | id: -2068763730 303 | action: 304 | m_PersistentCalls: 305 | m_Calls: 306 | - m_Target: {fileID: 1753905105} 307 | m_MethodName: Test 308 | m_Mode: 5 309 | m_Arguments: 310 | m_ObjectArgument: {fileID: 0} 311 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 312 | m_IntArgument: 0 313 | m_FloatArgument: 0 314 | m_StringArgument: 5 315 | m_BoolArgument: 0 316 | m_CallState: 2 317 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 318 | Culture=neutral, PublicKeyToken=null 319 | - name: 6 320 | id: 498629140 321 | action: 322 | m_PersistentCalls: 323 | m_Calls: 324 | - m_Target: {fileID: 1753905105} 325 | m_MethodName: Test 326 | m_Mode: 5 327 | m_Arguments: 328 | m_ObjectArgument: {fileID: 0} 329 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 330 | m_IntArgument: 0 331 | m_FloatArgument: 0 332 | m_StringArgument: 6 333 | m_BoolArgument: 0 334 | m_CallState: 2 335 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 336 | Culture=neutral, PublicKeyToken=null 337 | - name: 7 338 | id: 1790921346 339 | action: 340 | m_PersistentCalls: 341 | m_Calls: 342 | - m_Target: {fileID: 1753905105} 343 | m_MethodName: Test 344 | m_Mode: 5 345 | m_Arguments: 346 | m_ObjectArgument: {fileID: 0} 347 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 348 | m_IntArgument: 0 349 | m_FloatArgument: 0 350 | m_StringArgument: 7 351 | m_BoolArgument: 0 352 | m_CallState: 2 353 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 354 | Culture=neutral, PublicKeyToken=null 355 | - name: 8 356 | id: -100641005 357 | action: 358 | m_PersistentCalls: 359 | m_Calls: 360 | - m_Target: {fileID: 1753905105} 361 | m_MethodName: Test 362 | m_Mode: 5 363 | m_Arguments: 364 | m_ObjectArgument: {fileID: 0} 365 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 366 | m_IntArgument: 0 367 | m_FloatArgument: 0 368 | m_StringArgument: 8 369 | m_BoolArgument: 0 370 | m_CallState: 2 371 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 372 | Culture=neutral, PublicKeyToken=null 373 | - name: 9 374 | id: -1928894587 375 | action: 376 | m_PersistentCalls: 377 | m_Calls: 378 | - m_Target: {fileID: 1753905105} 379 | m_MethodName: Test 380 | m_Mode: 5 381 | m_Arguments: 382 | m_ObjectArgument: {fileID: 0} 383 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 384 | m_IntArgument: 0 385 | m_FloatArgument: 0 386 | m_StringArgument: 9 387 | m_BoolArgument: 0 388 | m_CallState: 2 389 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 390 | Culture=neutral, PublicKeyToken=null 391 | - name: 10 392 | id: -1587730975 393 | action: 394 | m_PersistentCalls: 395 | m_Calls: 396 | - m_Target: {fileID: 1753905105} 397 | m_MethodName: Test 398 | m_Mode: 5 399 | m_Arguments: 400 | m_ObjectArgument: {fileID: 0} 401 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 402 | m_IntArgument: 0 403 | m_FloatArgument: 0 404 | m_StringArgument: 10 405 | m_BoolArgument: 0 406 | m_CallState: 2 407 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 408 | Culture=neutral, PublicKeyToken=null 409 | - name: 11 410 | id: -698739337 411 | action: 412 | m_PersistentCalls: 413 | m_Calls: 414 | - m_Target: {fileID: 1753905105} 415 | m_MethodName: Test 416 | m_Mode: 5 417 | m_Arguments: 418 | m_ObjectArgument: {fileID: 0} 419 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 420 | m_IntArgument: 0 421 | m_FloatArgument: 0 422 | m_StringArgument: 11 423 | m_BoolArgument: 0 424 | m_CallState: 2 425 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 426 | Culture=neutral, PublicKeyToken=null 427 | - name: 12 428 | id: 1330857165 429 | action: 430 | m_PersistentCalls: 431 | m_Calls: 432 | - m_Target: {fileID: 1753905105} 433 | m_MethodName: Test 434 | m_Mode: 5 435 | m_Arguments: 436 | m_ObjectArgument: {fileID: 0} 437 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 438 | m_IntArgument: 0 439 | m_FloatArgument: 0 440 | m_StringArgument: 12 441 | m_BoolArgument: 0 442 | m_CallState: 2 443 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 444 | Culture=neutral, PublicKeyToken=null 445 | - name: 13 446 | id: 945058907 447 | action: 448 | m_PersistentCalls: 449 | m_Calls: 450 | - m_Target: {fileID: 1753905105} 451 | m_MethodName: Test 452 | m_Mode: 5 453 | m_Arguments: 454 | m_ObjectArgument: {fileID: 0} 455 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 456 | m_IntArgument: 0 457 | m_FloatArgument: 0 458 | m_StringArgument: 13 459 | m_BoolArgument: 0 460 | m_CallState: 2 461 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 462 | Culture=neutral, PublicKeyToken=null 463 | - name: 14 464 | id: -1506745864 465 | action: 466 | m_PersistentCalls: 467 | m_Calls: 468 | - m_Target: {fileID: 1753905105} 469 | m_MethodName: Test 470 | m_Mode: 5 471 | m_Arguments: 472 | m_ObjectArgument: {fileID: 0} 473 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 474 | m_IntArgument: 0 475 | m_FloatArgument: 0 476 | m_StringArgument: 14 477 | m_BoolArgument: 0 478 | m_CallState: 2 479 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 480 | Culture=neutral, PublicKeyToken=null 481 | - name: 15 482 | id: -784871058 483 | action: 484 | m_PersistentCalls: 485 | m_Calls: 486 | - m_Target: {fileID: 1753905105} 487 | m_MethodName: Test 488 | m_Mode: 5 489 | m_Arguments: 490 | m_ObjectArgument: {fileID: 0} 491 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 492 | m_IntArgument: 0 493 | m_FloatArgument: 0 494 | m_StringArgument: 15 495 | m_BoolArgument: 0 496 | m_CallState: 2 497 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 498 | Culture=neutral, PublicKeyToken=null 499 | - name: 16 500 | id: 1212055764 501 | action: 502 | m_PersistentCalls: 503 | m_Calls: 504 | - m_Target: {fileID: 1753905105} 505 | m_MethodName: Test 506 | m_Mode: 5 507 | m_Arguments: 508 | m_ObjectArgument: {fileID: 0} 509 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 510 | m_IntArgument: 0 511 | m_FloatArgument: 0 512 | m_StringArgument: 16 513 | m_BoolArgument: 0 514 | m_CallState: 2 515 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 516 | Culture=neutral, PublicKeyToken=null 517 | - name: 17 518 | id: 1060745282 519 | action: 520 | m_PersistentCalls: 521 | m_Calls: 522 | - m_Target: {fileID: 1753905105} 523 | m_MethodName: Test 524 | m_Mode: 5 525 | m_Arguments: 526 | m_ObjectArgument: {fileID: 0} 527 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 528 | m_IntArgument: 0 529 | m_FloatArgument: 0 530 | m_StringArgument: 17 531 | m_BoolArgument: 0 532 | m_CallState: 2 533 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 534 | Culture=neutral, PublicKeyToken=null 535 | - name: 18 536 | id: -1350128173 537 | action: 538 | m_PersistentCalls: 539 | m_Calls: 540 | - m_Target: {fileID: 1753905105} 541 | m_MethodName: Test 542 | m_Mode: 5 543 | m_Arguments: 544 | m_ObjectArgument: {fileID: 0} 545 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 546 | m_IntArgument: 0 547 | m_FloatArgument: 0 548 | m_StringArgument: 18 549 | m_BoolArgument: 0 550 | m_CallState: 2 551 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 552 | Culture=neutral, PublicKeyToken=null 553 | - name: 19 554 | id: -662594235 555 | action: 556 | m_PersistentCalls: 557 | m_Calls: 558 | - m_Target: {fileID: 1753905105} 559 | m_MethodName: Test 560 | m_Mode: 5 561 | m_Arguments: 562 | m_ObjectArgument: {fileID: 0} 563 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 564 | m_IntArgument: 0 565 | m_FloatArgument: 0 566 | m_StringArgument: 19 567 | m_BoolArgument: 0 568 | m_CallState: 2 569 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 570 | Culture=neutral, PublicKeyToken=null 571 | - name: 20 572 | id: -1972341214 573 | action: 574 | m_PersistentCalls: 575 | m_Calls: 576 | - m_Target: {fileID: 1753905105} 577 | m_MethodName: Test 578 | m_Mode: 5 579 | m_Arguments: 580 | m_ObjectArgument: {fileID: 0} 581 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 582 | m_IntArgument: 0 583 | m_FloatArgument: 0 584 | m_StringArgument: 20 585 | m_BoolArgument: 0 586 | m_CallState: 2 587 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 588 | Culture=neutral, PublicKeyToken=null 589 | debug: 0 590 | --- !u!95 &1753905104 591 | Animator: 592 | serializedVersion: 3 593 | m_ObjectHideFlags: 0 594 | m_CorrespondingSourceObject: {fileID: 0} 595 | m_PrefabInstance: {fileID: 0} 596 | m_PrefabAsset: {fileID: 0} 597 | m_GameObject: {fileID: 1753905102} 598 | m_Enabled: 1 599 | m_Avatar: {fileID: 0} 600 | m_Controller: {fileID: 9100000, guid: 4586a48e41182664fb1199ce3547f0cb, type: 2} 601 | m_CullingMode: 0 602 | m_UpdateMode: 0 603 | m_ApplyRootMotion: 0 604 | m_LinearVelocityBlending: 0 605 | m_WarningMessage: 606 | m_HasTransformHierarchy: 1 607 | m_AllowConstantClipSamplingOptimization: 1 608 | m_KeepAnimatorControllerStateOnDisable: 0 609 | --- !u!114 &1753905105 610 | MonoBehaviour: 611 | m_ObjectHideFlags: 0 612 | m_CorrespondingSourceObject: {fileID: 0} 613 | m_PrefabInstance: {fileID: 0} 614 | m_PrefabAsset: {fileID: 0} 615 | m_GameObject: {fileID: 1753905102} 616 | m_Enabled: 1 617 | m_EditorHideFlags: 0 618 | m_Script: {fileID: 11500000, guid: 334e5fb7c0e4b11429f336f6db6a4545, type: 3} 619 | m_Name: 620 | m_EditorClassIdentifier: 621 | expectedEventsInOrder: 622 | - 1 623 | - 2 624 | - 3 625 | - 4 626 | - 5 627 | - 6 628 | - 7 629 | - 8 630 | - 9 631 | - 10 632 | - 11 633 | - 12 634 | - 13 635 | - 14 636 | - 15 637 | - 16 638 | - 17 639 | - 18 640 | - 19 641 | - 20 642 | --- !u!4 &1753905106 643 | Transform: 644 | m_ObjectHideFlags: 0 645 | m_CorrespondingSourceObject: {fileID: 0} 646 | m_PrefabInstance: {fileID: 0} 647 | m_PrefabAsset: {fileID: 0} 648 | m_GameObject: {fileID: 1753905102} 649 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 650 | m_LocalPosition: {x: 0, y: 0, z: 0} 651 | m_LocalScale: {x: 1, y: 1, z: 1} 652 | m_Children: [] 653 | m_Father: {fileID: 0} 654 | m_RootOrder: 1 655 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 656 | --------------------------------------------------------------------------------