diff --git a/Assets/Fungus/Scripts/EventHandlers/DragCancelled.cs b/Assets/Fungus/Scripts/EventHandlers/DragCancelled.cs index ff3bebdc..efe19336 100644 --- a/Assets/Fungus/Scripts/EventHandlers/DragCancelled.cs +++ b/Assets/Fungus/Scripts/EventHandlers/DragCancelled.cs @@ -1,9 +1,8 @@ // This code is part of the Fungus library (https://github.com/snozbot/fungus) // It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE) -using UnityEngine; using System.Collections.Generic; - +using UnityEngine; namespace Fungus { @@ -15,25 +14,26 @@ namespace Fungus "The block will execute when the player drags an object and releases it without dropping it on a target object.")] [AddComponentMenu("")] public class DragCancelled : EventHandler, ISerializationCallbackReceiver - { + { public class DragCancelledEvent { public Draggable2D DraggableObject; + public DragCancelledEvent(Draggable2D draggableObject) { DraggableObject = draggableObject; } } + [VariableProperty(typeof(GameObjectVariable))] [SerializeField] protected GameObjectVariable draggableRef; + [Tooltip("Draggable object to listen for drag events on")] [SerializeField] protected List draggableObjects; [HideInInspector] [SerializeField] protected Draggable2D draggableObject; - - protected EventDispatcher eventDispatcher; protected virtual void OnEnable() @@ -55,7 +55,9 @@ namespace Fungus OnDragCancelled(evt.DraggableObject); } - void ISerializationCallbackReceiver.OnAfterDeserialize() + #region Compatibility + + void ISerializationCallbackReceiver.OnAfterDeserialize() { //add any dragableobject already present to list for backwards compatability if (draggableObject != null) @@ -63,7 +65,6 @@ namespace Fungus if (!draggableObjects.Contains(draggableObject)) { draggableObjects.Add(draggableObject); - } draggableObject = null; } @@ -71,25 +72,24 @@ namespace Fungus void ISerializationCallbackReceiver.OnBeforeSerialize() { - } + #endregion Compatibility + #region Public members public virtual void OnDragCancelled(Draggable2D draggableObject) { if (draggableObjects.Contains(draggableObject)) { - if(draggableRef!=null) + if (draggableRef != null) { draggableRef.Value = draggableObject.gameObject; - } + } ExecuteBlock(); - } + } } - - public override string GetSummary() { string summary = "Draggable: "; @@ -100,7 +100,7 @@ namespace Fungus if (draggableObjects[i] != null) { summary += draggableObjects[i].name + ","; - } + } } return summary; } @@ -108,9 +108,8 @@ namespace Fungus { return "None"; } - } - #endregion + #endregion Public members } -} +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/EventHandlers/DragCompleted.cs b/Assets/Fungus/Scripts/EventHandlers/DragCompleted.cs index 4307d839..f08167c8 100644 --- a/Assets/Fungus/Scripts/EventHandlers/DragCompleted.cs +++ b/Assets/Fungus/Scripts/EventHandlers/DragCompleted.cs @@ -1,14 +1,16 @@ // This code is part of the Fungus library (https://github.com/snozbot/fungus) // It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE) -using UnityEngine; using System.Collections.Generic; - +using UnityEngine; namespace Fungus { /// /// The block will execute when the player drags an object and successfully drops it on a target object. + /// + /// ExecuteAlways used to get the Compatibility that we need, use of ISerializationCallbackReceiver is error prone + /// when used on Unity controlled objects as it runs on threads other than main thread. /// [EventHandlerInfo("Sprite", "Drag Completed", @@ -16,38 +18,35 @@ namespace Fungus [AddComponentMenu("")] [ExecuteAlways] public class DragCompleted : EventHandler, ISerializationCallbackReceiver - { + { public class DragCompletedEvent { public Draggable2D DraggableObject; + public DragCompletedEvent(Draggable2D draggableObject) { DraggableObject = draggableObject; } } - [VariableProperty(typeof(GameObjectVariable))] + [VariableProperty(typeof(GameObjectVariable))] [SerializeField] protected GameObjectVariable draggableRef; + [VariableProperty(typeof(GameObjectVariable))] [SerializeField] protected GameObjectVariable targetRef; - [Tooltip("Draggable object to listen for drag events on")] [HideInInspector] [SerializeField] protected Draggable2D draggableObject; - + [SerializeField] protected List draggableObjects; [Tooltip("Drag target object to listen for drag events on")] [HideInInspector] [SerializeField] protected Collider2D targetObject; - [SerializeField] protected List targetObjects; - - - + [SerializeField] protected List targetObjects; - // There's no way to poll if an object is touching another object, so // we have to listen to the callbacks and track the touching state ourselves. protected bool overTarget = false; @@ -56,59 +55,32 @@ namespace Fungus protected EventDispatcher eventDispatcher; - /// - /// Awake is called when the script instance is being loaded. - /// - void Awake() - { - //add any dragableobject already present to list for backwards compatability - if (draggableObject != null) - { - if (!draggableObjects.Contains(draggableObject)) - { - draggableObjects.Add(draggableObject); - } - } - - if (targetObject != null) - { - if (!targetObjects.Contains(targetObject)) - { - targetObjects.Add(targetObject); - } - } - draggableObject = null; - targetObject = null; - - - } - protected virtual void OnEnable() { - if(Application.IsPlaying(this)){ + if (Application.IsPlaying(this)) + { eventDispatcher = FungusManager.Instance.EventDispatcher; eventDispatcher.AddListener(OnDragCompletedEvent); eventDispatcher.AddListener(OnDragEnteredEvent); eventDispatcher.AddListener(OnDragExitedEvent); - foreach(Draggable2D dragObj in draggableObjects) + foreach (Draggable2D dragObj in draggableObjects) { dragObj.RegisterHandler(this); } } - } protected virtual void OnDisable() { - if(Application.IsPlaying(this)) + if (Application.IsPlaying(this)) { eventDispatcher.RemoveListener(OnDragCompletedEvent); eventDispatcher.RemoveListener(OnDragEnteredEvent); eventDispatcher.RemoveListener(OnDragExitedEvent); - foreach(Draggable2D dragObj in draggableObjects) + foreach (Draggable2D dragObj in draggableObjects) { dragObj.UnregisterHandler(this); } @@ -117,30 +89,56 @@ namespace Fungus } } - void OnDragCompletedEvent(DragCompletedEvent evt) + private void OnDragCompletedEvent(DragCompletedEvent evt) { OnDragCompleted(evt.DraggableObject); } - void OnDragEnteredEvent(DragEntered.DragEnteredEvent evt) + private void OnDragEnteredEvent(DragEntered.DragEnteredEvent evt) { OnDragEntered(evt.DraggableObject, evt.TargetCollider); } - void OnDragExitedEvent(DragExited.DragExitedEvent evt) + private void OnDragExitedEvent(DragExited.DragExitedEvent evt) { OnDragExited(evt.DraggableObject, evt.TargetCollider); } + #region Compatibility + void ISerializationCallbackReceiver.OnAfterDeserialize() { + //presentl using awake due to errors on non main thread access of targetCollider } void ISerializationCallbackReceiver.OnBeforeSerialize() { + } + + private void Awake() + { + //add any dragableobject already present to list for backwards compatability + if (draggableObject != null) + { + if (!draggableObjects.Contains(draggableObject)) + { + draggableObjects.Add(draggableObject); + } + } + if (targetObject != null) + { + if (!targetObjects.Contains(targetObject)) + { + targetObjects.Add(targetObject); + } + } + draggableObject = null; + targetObject = null; } + #endregion Compatibility + #region Public members /// @@ -161,7 +159,7 @@ namespace Fungus /// public virtual void OnDragEntered(Draggable2D draggableObject, Collider2D targetObject) { - if (this.targetObjects != null && this.draggableObjects !=null && + if (this.targetObjects != null && this.draggableObjects != null && this.draggableObjects.Contains(draggableObject) && this.targetObjects.Contains(targetObject)) { @@ -169,22 +167,21 @@ namespace Fungus targetCollider = targetObject; } } - + /// /// Called by the Draggable2D object when the it exits the drag target. /// public virtual void OnDragExited(Draggable2D draggableObject, Collider2D targetObject) { - if (this.targetObjects != null && this.draggableObjects !=null && + if (this.targetObjects != null && this.draggableObjects != null && this.draggableObjects.Contains(draggableObject) && this.targetObjects.Contains(targetObject)) { overTarget = false; targetCollider = null; - } } - + /// /// Called by the Draggable2D object when the the drag ends over the drag target. /// @@ -196,11 +193,11 @@ namespace Fungus // Assume that the player will have to do perform another drag and drop operation // to complete the drag again. This is necessary because we don't get an OnDragExited if the // draggable object is set to be inactive. - if(draggableRef!=null) + if (draggableRef != null) { draggableRef.Value = draggableObject.gameObject; } - if(targetRef!=null) + if (targetRef != null) { targetRef.Value = targetCollider.gameObject; } @@ -212,7 +209,6 @@ namespace Fungus } } - public override string GetSummary() { string summary = "Draggable: "; @@ -223,7 +219,7 @@ namespace Fungus if (draggableObjects[i] != null) { summary += draggableObjects[i].name + ","; - } + } } } @@ -235,7 +231,7 @@ namespace Fungus if (targetObjects[i] != null) { summary += targetObjects[i].name + ","; - } + } } } @@ -247,6 +243,6 @@ namespace Fungus return summary; } - #endregion + #endregion Public members } } \ No newline at end of file diff --git a/Assets/Fungus/Scripts/EventHandlers/DragEntered.cs b/Assets/Fungus/Scripts/EventHandlers/DragEntered.cs index 0ca5a15a..42518c68 100644 --- a/Assets/Fungus/Scripts/EventHandlers/DragEntered.cs +++ b/Assets/Fungus/Scripts/EventHandlers/DragEntered.cs @@ -1,53 +1,92 @@ // This code is part of the Fungus library (https://github.com/snozbot/fungus) // It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE) -using UnityEngine; -using System; -using System.Collections; using System.Collections.Generic; +using UnityEngine; namespace Fungus { /// /// The block will execute when the player is dragging an object which starts touching the target object. + /// + /// ExecuteAlways used to get the Compatibility that we need, use of ISerializationCallbackReceiver is error prone + /// when used on Unity controlled objects as it runs on threads other than main thread. /// [EventHandlerInfo("Sprite", "Drag Entered", "The block will execute when the player is dragging an object which starts touching the target object.")] [AddComponentMenu("")] - [ExecuteAlways] public class DragEntered : EventHandler, ISerializationCallbackReceiver - { + { public class DragEnteredEvent { public Draggable2D DraggableObject; public Collider2D TargetCollider; + public DragEnteredEvent(Draggable2D draggableObject, Collider2D targetCollider) { DraggableObject = draggableObject; TargetCollider = targetCollider; } } + [VariableProperty(typeof(GameObjectVariable))] [SerializeField] protected GameObjectVariable draggableRef; + [VariableProperty(typeof(GameObjectVariable))] [SerializeField] protected GameObjectVariable targetRef; + [Tooltip("Draggable object to listen for drag events on")] [HideInInspector] [SerializeField] protected Draggable2D draggableObject; - + [SerializeField] protected List draggableObjects; [Tooltip("Drag target object to listen for drag events on")] [HideInInspector] [SerializeField] protected Collider2D targetObject; - [SerializeField] protected List targetObjects; + [SerializeField] protected List targetObjects; protected EventDispatcher eventDispatcher; - void Awake() + protected virtual void OnEnable() + { + if (Application.IsPlaying(this)) + { + eventDispatcher = FungusManager.Instance.EventDispatcher; + + eventDispatcher.AddListener(OnDragEnteredEvent); + } + } + + protected virtual void OnDisable() + { + if (Application.IsPlaying(this)) + { + eventDispatcher.RemoveListener(OnDragEnteredEvent); + + eventDispatcher = null; + } + } + + private void OnDragEnteredEvent(DragEnteredEvent evt) + { + OnDragEntered(evt.DraggableObject, evt.TargetCollider); + } + + #region Compatibility + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + } + + private void Awake() { //add any dragableobject already present to list for backwards compatability if (draggableObject != null) @@ -67,32 +106,10 @@ namespace Fungus } draggableObject = null; targetObject = null; - - } - protected virtual void OnEnable() - { - if(Application.IsPlaying(this)){ - eventDispatcher = FungusManager.Instance.EventDispatcher; - - eventDispatcher.AddListener(OnDragEnteredEvent); - } - } - - protected virtual void OnDisable() - { - if(Application.IsPlaying(this)){ - eventDispatcher.RemoveListener(OnDragEnteredEvent); + #endregion Compatibility - eventDispatcher = null; - } - } - - void OnDragEnteredEvent(DragEnteredEvent evt) - { - OnDragEntered(evt.DraggableObject, evt.TargetCollider); - } #region Public members /// @@ -100,15 +117,15 @@ namespace Fungus /// public virtual void OnDragEntered(Draggable2D draggableObject, Collider2D targetObject) { - if (this.targetObjects != null && this.draggableObjects !=null && + if (this.targetObjects != null && this.draggableObjects != null && this.draggableObjects.Contains(draggableObject) && this.targetObjects.Contains(targetObject)) { - if(draggableRef!=null) + if (draggableRef != null) { draggableRef.Value = draggableObject.gameObject; } - if(targetRef!=null) + if (targetRef != null) { targetRef.Value = targetObject.gameObject; } @@ -116,16 +133,6 @@ namespace Fungus } } - void ISerializationCallbackReceiver.OnAfterDeserialize() - { - - } - - void ISerializationCallbackReceiver.OnBeforeSerialize() - { - - } - public override string GetSummary() { string summary = "Draggable: "; @@ -136,7 +143,7 @@ namespace Fungus if (draggableObjects[i] != null) { summary += draggableObjects[i].name + ","; - } + } } } @@ -148,7 +155,7 @@ namespace Fungus if (targetObjects[i] != null) { summary += targetObjects[i].name + ","; - } + } } } @@ -160,6 +167,6 @@ namespace Fungus return summary; } - #endregion + #endregion Public members } -} +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/EventHandlers/DragExited.cs b/Assets/Fungus/Scripts/EventHandlers/DragExited.cs index cd9092f4..fed54ef5 100644 --- a/Assets/Fungus/Scripts/EventHandlers/DragExited.cs +++ b/Assets/Fungus/Scripts/EventHandlers/DragExited.cs @@ -1,27 +1,29 @@ // This code is part of the Fungus library (https://github.com/snozbot/fungus) // It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE) -using UnityEngine; using System.Collections.Generic; - +using UnityEngine; namespace Fungus { /// /// The block will execute when the player is dragging an object which stops touching the target object. + /// + /// ExecuteAlways used to get the Compatibility that we need, use of ISerializationCallbackReceiver is error prone + /// when used on Unity controlled objects as it runs on threads other than main thread. /// [EventHandlerInfo("Sprite", "Drag Exited", "The block will execute when the player is dragging an object which stops touching the target object.")] [AddComponentMenu("")] - [ExecuteAlways] public class DragExited : EventHandler, ISerializationCallbackReceiver - { + { public class DragExitedEvent { public Draggable2D DraggableObject; public Collider2D TargetCollider; + public DragExitedEvent(Draggable2D draggableObject, Collider2D targetCollider) { DraggableObject = draggableObject; @@ -31,85 +33,83 @@ namespace Fungus [VariableProperty(typeof(GameObjectVariable))] [SerializeField] protected GameObjectVariable draggableRef; + [VariableProperty(typeof(GameObjectVariable))] [SerializeField] protected GameObjectVariable targetRef; [Tooltip("Draggable object to listen for drag events on")] [HideInInspector] [SerializeField] protected Draggable2D draggableObject; - + [SerializeField] protected List draggableObjects; [Tooltip("Drag target object to listen for drag events on")] [HideInInspector] [SerializeField] protected Collider2D targetObject; - [SerializeField] protected List targetObjects; - + [SerializeField] protected List targetObjects; protected EventDispatcher eventDispatcher; - - /// - /// Awake is called when the script instance is being loaded. - /// - void Awake() - { - //add any dragableobject already present to list for backwards compatability - if (draggableObject != null) - { - if (!draggableObjects.Contains(draggableObject)) - { - draggableObjects.Add(draggableObject); - } - } - - if (targetObject != null) - { - if (!targetObjects.Contains(targetObject)) - { - targetObjects.Add(targetObject); - } - } - draggableObject = null; - targetObject = null; - } - protected virtual void OnEnable() { - if(Application.IsPlaying(this)){ + if (Application.IsPlaying(this)) + { eventDispatcher = FungusManager.Instance.EventDispatcher; eventDispatcher.AddListener(OnDragEnteredEvent); } - } protected virtual void OnDisable() { - if(Application.IsPlaying(this)){ - eventDispatcher.RemoveListener(OnDragEnteredEvent); + if (Application.IsPlaying(this)) + { + eventDispatcher.RemoveListener(OnDragEnteredEvent); eventDispatcher = null; } - } - void OnDragEnteredEvent(DragExitedEvent evt) + private void OnDragEnteredEvent(DragExitedEvent evt) { OnDragExited(evt.DraggableObject, evt.TargetCollider); } + #region Compatibility + void ISerializationCallbackReceiver.OnAfterDeserialize() { - } void ISerializationCallbackReceiver.OnBeforeSerialize() { + } + + private void Awake() + { + //add any dragableobject already present to list for backwards compatability + if (draggableObject != null) + { + if (!draggableObjects.Contains(draggableObject)) + { + draggableObjects.Add(draggableObject); + } + } + if (targetObject != null) + { + if (!targetObjects.Contains(targetObject)) + { + targetObjects.Add(targetObject); + } + } + draggableObject = null; + targetObject = null; } + #endregion Compatibility + #region Public members /// @@ -117,15 +117,15 @@ namespace Fungus /// public virtual void OnDragExited(Draggable2D draggableObject, Collider2D targetObject) { - if (this.targetObjects != null && this.draggableObjects !=null && + if (this.targetObjects != null && this.draggableObjects != null && this.draggableObjects.Contains(draggableObject) && this.targetObjects.Contains(targetObject)) { - if(draggableRef!=null) + if (draggableRef != null) { draggableRef.Value = draggableObject.gameObject; } - if(targetRef!=null) + if (targetRef != null) { targetRef.Value = targetObject.gameObject; } @@ -133,7 +133,6 @@ namespace Fungus } } - public override string GetSummary() { string summary = "Draggable: "; @@ -144,7 +143,7 @@ namespace Fungus if (draggableObjects[i] != null) { summary += draggableObjects[i].name + ","; - } + } } } @@ -156,7 +155,7 @@ namespace Fungus if (targetObjects[i] != null) { summary += targetObjects[i].name + ","; - } + } } } @@ -168,6 +167,6 @@ namespace Fungus return summary; } - #endregion + #endregion Public members } -} +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/EventHandlers/DragStarted.cs b/Assets/Fungus/Scripts/EventHandlers/DragStarted.cs index 4e8d290b..077455c2 100644 --- a/Assets/Fungus/Scripts/EventHandlers/DragStarted.cs +++ b/Assets/Fungus/Scripts/EventHandlers/DragStarted.cs @@ -1,8 +1,8 @@ // This code is part of the Fungus library (https://github.com/snozbot/fungus) // It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE) -using UnityEngine; using System.Collections.Generic; +using UnityEngine; namespace Fungus { @@ -14,26 +14,27 @@ namespace Fungus "The block will execute when the player starts dragging an object.")] [AddComponentMenu("")] public class DragStarted : EventHandler, ISerializationCallbackReceiver - { + { public class DragStartedEvent { public Draggable2D DraggableObject; + public DragStartedEvent(Draggable2D draggableObject) { DraggableObject = draggableObject; } } + [VariableProperty(typeof(GameObjectVariable))] [SerializeField] protected GameObjectVariable draggableRef; + [SerializeField] protected List draggableObjects; [HideInInspector] [SerializeField] protected Draggable2D draggableObject; - protected EventDispatcher eventDispatcher; - protected virtual void OnEnable() { eventDispatcher = FungusManager.Instance.EventDispatcher; @@ -41,8 +42,6 @@ namespace Fungus eventDispatcher.AddListener(OnDragStartedEvent); } - - protected virtual void OnDisable() { eventDispatcher.RemoveListener(OnDragStartedEvent); @@ -50,11 +49,13 @@ namespace Fungus eventDispatcher = null; } - void OnDragStartedEvent(DragStartedEvent evt) + private void OnDragStartedEvent(DragStartedEvent evt) { OnDragStarted(evt.DraggableObject); } + #region Compatibility + void ISerializationCallbackReceiver.OnAfterDeserialize() { //add any dragableobject already present to list for backwards compatability @@ -63,7 +64,6 @@ namespace Fungus if (!draggableObjects.Contains(draggableObject)) { draggableObjects.Add(draggableObject); - } draggableObject = null; } @@ -71,9 +71,10 @@ namespace Fungus void ISerializationCallbackReceiver.OnBeforeSerialize() { - } + #endregion Compatibility + #region Public members /// @@ -83,12 +84,12 @@ namespace Fungus { if (draggableObjects.Contains(draggableObject)) { - if(draggableRef!=null) + if (draggableRef != null) { draggableRef.Value = draggableObject.gameObject; } ExecuteBlock(); - } + } } public override string GetSummary() @@ -101,7 +102,7 @@ namespace Fungus if (draggableObjects[i] != null) { summary += draggableObjects[i].name + ","; - } + } } } @@ -110,9 +111,9 @@ namespace Fungus return "None"; } - return summary; + return summary; } - #endregion + #endregion Public members } -} +} \ No newline at end of file diff --git a/Assets/FungusExamples/DragAndDrop/DragandDrop(DraggableObjectLists).unity b/Assets/FungusExamples/DragAndDrop/DragandDrop(DraggableObjectLists).unity index 59a65c22..e561ebba 100644 --- a/Assets/FungusExamples/DragAndDrop/DragandDrop(DraggableObjectLists).unity +++ b/Assets/FungusExamples/DragAndDrop/DragandDrop(DraggableObjectLists).unity @@ -993,9 +993,9 @@ MonoBehaviour: m_EditorClassIdentifier: nodeRect: serializedVersion: 2 - x: 26.67772 - y: 43.14051 - width: 402.06586 + x: 140.13919 + y: 14.294373 + width: 405 height: 40 tint: {r: 1, g: 1, b: 1, a: 1} useCustomTint: 0 @@ -1019,18 +1019,19 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: version: 1 - scrollPos: {x: 550.1149, y: 176.97496} + scrollPos: {x: 22.411636, y: 147.07748} variablesScrollPos: {x: 0, y: 0} variablesExpanded: 1 blockViewHeight: 501 - zoom: 0.48400036 + zoom: 1 scrollViewRect: serializedVersion: 2 x: -343 y: -340 width: 1114 height: 859 - selectedBlocks: [] + selectedBlocks: + - {fileID: 1077498089} selectedCommands: [] variables: - {fileID: 1077498086} @@ -1157,9 +1158,9 @@ MonoBehaviour: m_EditorClassIdentifier: nodeRect: serializedVersion: 2 - x: 386.49557 - y: 195.74385 - width: 402.06586 + x: 126.88034 + y: 230.35919 + width: 405 height: 40 tint: {r: 1, g: 1, b: 1, a: 1} useCustomTint: 0 @@ -1286,9 +1287,9 @@ MonoBehaviour: m_EditorClassIdentifier: nodeRect: serializedVersion: 2 - x: 609.26447 - y: 92.36371 - width: 402.06586 + x: 116.95709 + y: 148.13286 + width: 405 height: 40 tint: {r: 1, g: 1, b: 1, a: 1} useCustomTint: 0 @@ -1313,9 +1314,9 @@ MonoBehaviour: m_EditorClassIdentifier: nodeRect: serializedVersion: 2 - x: -68.13205 - y: 152.53719 - width: 402.06586 + x: 58.790962 + y: 94.84494 + width: 405 height: 40 tint: {r: 1, g: 1, b: 1, a: 1} useCustomTint: 0 @@ -1388,9 +1389,9 @@ MonoBehaviour: m_EditorClassIdentifier: nodeRect: serializedVersion: 2 - x: 434.23154 - y: -11.975143 - width: 402.06586 + x: 122.69321 + y: -67.74434 + width: 405 height: 40 tint: {r: 1, g: 1, b: 1, a: 1} useCustomTint: 0