diff options
author | chai <chaifix@163.com> | 2021-01-27 16:30:19 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-01-27 16:30:19 +0800 |
commit | 6ee18886c8af3858de5e97599b23086823d9f320 (patch) | |
tree | aed86a8c4887586d976410ecd3d14789b2ee3583 /Client/Assets/Behavior Designer/Runtime/Basic Tasks/Debug/LogFormat.cs | |
parent | 97da432c35b8c7aaf9dd2c39e2aa4b1f55f36065 (diff) |
*更新Behaviour Designer版本,在最下版本有BUG
Diffstat (limited to 'Client/Assets/Behavior Designer/Runtime/Basic Tasks/Debug/LogFormat.cs')
-rw-r--r-- | Client/Assets/Behavior Designer/Runtime/Basic Tasks/Debug/LogFormat.cs | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/Debug/LogFormat.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/Debug/LogFormat.cs new file mode 100644 index 00000000..939031fc --- /dev/null +++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/Debug/LogFormat.cs @@ -0,0 +1,76 @@ +using UnityEngine; + +namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityDebug +{ + [TaskDescription("LogFormat is analgous to Debug.LogFormat().\n" + + "It takes format string, substitutes arguments supplied a '{0-4}' and returns success.\n" + + "Any fields or arguments not supplied are ignored." + + "It can be used for debugging.")] + [TaskIcon("{SkinColor}LogIcon.png")] + public class LogFormat : Action + { + [Tooltip("Text format with {0}, {1}, etc")] + public SharedString textFormat; + + [Tooltip("Is this text an error?")] + public SharedBool logError; + + public SharedVariable arg0; + public SharedVariable arg1; + public SharedVariable arg2; + public SharedVariable arg3; + + public override TaskStatus OnUpdate() + { + var paramsArray = buildParamsArray(); + // Log the text and return success + if (logError.Value) { + Debug.LogErrorFormat(textFormat.Value, paramsArray); + } else { + Debug.LogFormat(textFormat.Value, paramsArray); + } + return TaskStatus.Success; + } + + private object[] buildParamsArray() { + object[] paramsArray; + if (isValid(arg3)) { + paramsArray = new object[4]; + paramsArray[3] = arg3.GetValue(); + paramsArray[2] = arg2.GetValue(); + paramsArray[1] = arg1.GetValue(); + paramsArray[0] = arg0.GetValue(); + } else if (isValid(arg2)) { + paramsArray = new object[3]; + paramsArray[2] = arg2.GetValue(); + paramsArray[1] = arg1.GetValue(); + paramsArray[0] = arg0.GetValue(); + } else if (isValid(arg1)) { + paramsArray = new object[2]; + paramsArray[1] = arg1.GetValue(); + paramsArray[0] = arg0.GetValue(); + } else if (isValid(arg0)) { + paramsArray = new object[1]; + paramsArray[0] = arg0.GetValue(); + } else { + return null; + } + return paramsArray; + } + + private bool isValid(SharedVariable sv) { + return null != sv && !sv.IsNone; + } + + public override void OnReset() + { + // Reset the properties back to their original values + textFormat = string.Empty; + logError = false; + arg0 = null; + arg1 = null; + arg2 = null; + arg3 = null; + } + } +}
\ No newline at end of file |