ScriptExecutor 类
ScriptExecutor 类提供了在 Unity 游戏中动态编译并执行 C# 脚本的能力。它能够根据不同对象的状态,在战斗中实时修改属性、触发事件或执行逻辑。
- 命名空间:
GlobalNamespace
- 程序集:
Assembly-CSharp.dll
语法
public class ScriptExecutor : IScriptExecute
构造函数
| 构造函数 |
描述 |
ScriptExecutor(StatusManager status, DataConfig dataConfig) |
创建一个带有初始状态对象的 ScriptExecutor 实例。 |
ScriptExecutor(DataConfig dataConfig) |
创建一个没有初始状态对象的 ScriptExecutor 实例。 |
属性
| 属性 |
类型 |
描述 |
Self |
StatusManager |
效果施放者。 |
Object |
List<StatusManager> |
效果目标对象列表。 |
dataConfig |
DataConfig |
数据配置。 |
Target |
StatusManager |
当前目标。 |
ScriptDict |
Dictionary<string, Delegate> |
已编译的脚本缓存。 |
ValueDice |
DiceWrapper |
数值骰子。 |
CheckDice |
DiceWrapper |
检定骰子。 |
DefaultDice |
DiceWrapper |
默认骰子。 |
Vars |
Dictionary<string, string> |
全局变量。 |
FightVars |
Dictionary<string, string> |
战斗时的变量。 |
HandCard |
List<CardItem> |
当前手牌列表。 |
fightType |
FightType |
当前战斗类型。 |
INF |
string |
无限持续时间的标识。 |
方法
脚本管理
| 方法 |
描述 |
void PreCompileScripts(string ScriptName, ScriptOptions options = null) |
编译并缓存指定名称的脚本。 |
void RunScript(string ScriptsName) |
执行指定名称的脚本。 |
属性操作
| 方法 |
描述 |
void ChangeHp(string val) |
改变目标的血量,支持正负值。 |
void SetHp(string val) |
设置目标的当前血量。 |
void SetMaxHp(string val) |
设置目标的最大血量。 |
void ChangeMaxHp(string val) |
增加目标的最大血量。 |
void ChangeDefence(string val) |
改变目标的护盾值。 |
void ChangePower(string val) |
改变玩家的能量。 |
void SetPower(string val) |
设置玩家的能量。 |
void ChangeMaxPower(string val) |
改变玩家的最大能量。 |
void ChangeMoney(string val) |
改变玩家的金币。 |
Buff 操作
| 方法 |
描述 |
void AddBuff(string buffId, string duration, string level) |
给目标添加 Buff。 |
void RemoveBuff(string buffId) |
移除目标的某个 Buff。 |
void RemoveAllBuff() |
移除目标的所有 Buff。 |
void RemoveBadBuff(string val, string good = "false") |
移除若干个正面或负面 Buff。 |
void RemoveAllBadBuff(string type) |
移除所有正面或负面 Buff。 |
void RunImmediately(string buffId, string eventName) |
立即触发 Buff 的指定事件。 |
卡牌操作
| 方法 |
描述 |
void AddCard(string id) |
添加一张卡牌到卡组。 |
void DrawCount(string val) |
抽取指定数量的卡牌。 |
void ThrowCard(string val, string type) |
丢弃卡牌。 |
void BurnCard(string val, string type) |
燃烬指定数量卡牌,1为非强制,有确认键,0为无确认键,必须选完 |
void SendCard(string val) |
发送卡牌给目标玩家(联机传递卡牌)。 |
void ShuffleDeck() |
清空弃牌堆重新洗牌。 |
void ChangeCardTop(string val) |
改变手牌上限。 |
void AddCardById(string id) |
根据 ID 添加卡牌。 |
void AddCardByCardList(string count, string tag = "all") |
从抽牌堆中选择卡牌添加到手卡。 |
void AddCardByUsedCardList(string count, string tag = "all") |
从弃牌堆中选择卡牌添加到手卡。 |
void RandomAddCard(string id) |
随机插入一张指定的卡牌到卡组。 |
战斗与事件操作
| 方法 |
描述 |
void ChangeType(FightType type) |
改变当前战斗状态。 |
void EscapeFight() |
逃离当前战斗。 |
void ChangeRound() |
跳过当前对象的回合。 |
void Undone() |
标记为未完成的效果。 |
void DoAction(string index) |
执行目标的一个行动(index代表顺序,从0开始)。 |
void AddEnemy(string id) |
添加一个敌人到战场。 |
void Resurrection(string value) |
以value血量复活目标。 |
void AddEvent(string eventName, Action action) |
添加无参数事件监听。 |
void AddEvent(string eventName, Action<SourceData> action) |
添加带 SourceData 参数的事件监听。 |
void ForAllStatus(Action<StatusManager> action) |
对所有目标依次执行。 |
动态变量操作(承伤率等)
| 方法 |
描述 |
void ChangeDynamicVar(string varName, string value) |
修改动态变量的值。 |
void ChangeDynamicVarPercent(string varName, string value) |
按百分比修改动态变量的值。 |
工具与辅助
| 方法 |
描述 |
void SetStatus(string filter) |
根据筛选器设置目标对象。例如:Self、Target、AllEnemy 等。组合语法,由范围词与类型词组合。如"AllRandomEnemy1"(随机一个敌人)等 ,其中左边必须是范围限定,后跟类型限定,后跟可能的数量限定。 |
Enemy GetEnemy() |
获取当前 Self 对应的 Enemy类型。 |
string atk() |
获取当前目标的攻击力。 |
string def() |
获取当前目标的防御力。 |
List<Dictionary<string, string>> GetcardsByRarity(string minRarity, string maxRarity) |
根据稀有度范围筛选卡牌。 |
void WatchRoleTable(string propertyName, Action action) |
监听角色表的属性变化。 |
void WatchRoleTable(string propertyName, Action<int> action) |
带参数监听角色表属性变化。 |
void AddDescription(string index, string type, string value) |
添加下标为index的新特定类型的DesVal,(index从1开始,1对应描述中的{0},2对应{1},以此类推。类型共有"Damage","Defence","Hp","Power","Draw","Money","Buff") |
void Clear() |
移除所有事件监听,并释放资源。 |
嵌套类
DiceWrapper 类
public class DiceWrapper
骰子封装器,提供掷骰功能。
| 成员 |
描述 |
Dice.State result |
当前掷骰的结果。 |
Dice.State Roll(int? Target = null) |
掷骰并返回结果。 |
Dice.State InternalRoll(int? Target = null) |
内部掷骰,不触发外部事件。 |
Dice WithRange(int min, int max) |
设置骰子掷骰的范围。 |
PlayerInfo 类(静态)
提供游戏中玩家的各种信息及操作。
| 属性 |
描述 |
MaxHp |
玩家最大生命值。 |
Hp |
当前生命值。 |
Power |
当前能量。 |
MaxPower |
最大能量。 |
Money |
金币数量。 |
RelicCount |
遗物数量。 |
CardCount |
当前卡组数量。 |
BlessingCount |
祝福数量。 |
CardTopCount |
卡组上限。 |
enemyCount |
当前敌人数量。 |
| 方法 |
描述 |
void GiveWin() |
强制胜利。 |
void AddCard(string id) |
添加卡牌。 |
void RemoveCard(string id) |
移除卡牌。 |
void AddRelic(string id) |
添加遗物。 |
void RemoveRelic(string id) |
移除遗物。 |
void AddBless(string id) |
添加祝福。 |
void RemoveBless(string id) |
移除祝福。 |
void ShowReward() |
显示奖励。 |
void StartLevel(string type, string id2 = null) |
开始指定关卡。 |
void GameOver() |
游戏结束。 |
脚本示例代码
SetStatus("AllEnemy");
Damage("1");