using System;
using UniRx;
using UnityEngine;
namespace SoulliesFramework.General
{
///
/// 指令:从指令上下文中获取一个变量,并将其作为字符串在控制台输出。
///
public class Cmd_GetAndLogVariable : CommandBase
{
private readonly string variableName;
public Cmd_GetAndLogVariable(string variableName)
{
this.variableName = variableName;
}
protected override IObservable OnExecute(CommandContext context)
{
// 尝试从 SharedData 中获取变量。
if (context.sharedInfo.TryGetValue(variableName, out object value))
{
// 获取成功,将其转换为字符串并输出。
string stringValue = value?.ToString() ?? "null";
Debug.Log($"[Cmd_GetAndLogVariable] 成功获取变量 '{variableName}',值为: '{stringValue}'");
}
else
{
// 获取失败,输出警告信息。
Debug.LogWarning($"[Cmd_GetAndLogVariable] 获取变量 '{variableName}' 失败,该变量未在上下文中定义。");
}
// 同样是瞬时操作。
return Observable.Return(Unit.Default);
}
}
}