gpt4 book ai didi

javascript - 是否可以使用 Lua/Javascript 脚本使用新变量扩展 C# 对象?

转载 作者:搜寻专家 更新时间:2023-11-01 05:27:56 25 4
gpt4 key购买 nike

假设我有 C# 类:

class Player {
string Name;
int HitPoints
}

我想为我的游戏添加模组/脚本支持,用户可以使用他自己的变量来扩展它。 (比如说“bool StartedKill5RatsQuest”)然后对他来说访问他的参数或默认参数是一样的。

用户脚本:

player.HP = 10;
player.StartedKill5RatsQuest = true;

是否可以使用任何众所周知的脚本语言来实现?

最佳答案

您不能直接这样做。但是,通过引入一组内部“变量”可以获得类似的功能:

Dictionary<string, object> _scriptVariables = new Dictionary<string, object>();

有了这个,您可以为您的玩家提供一组创建/获取/设置他们的“变量”的方法,例如:

public void CreateVariable<T> ( string name, T defaultValue );
public void Set<T> (string name, T value );
public T Get<T> ( string name );
etc...

这些方法会访问您的字典并操纵其值,因此您的用户可能会这样写:

public void Initialize()
{
player.CreateVariable<int>("HP");
player.CreateVariable<bool>("StartedKill5RatsQuest");

player.Set("HP", 10);
player.Set("StartedKill5RatsQuest", true);
}

public void Update()
{
...
if(player.Get<bool>("StartedKill5RatsQuest"))
{
...
}
}

这比直接成员操作更冗长,在类中实现支持方法时,您应该对类型有所了解,但它可以完成工作。

关于javascript - 是否可以使用 Lua/Javascript 脚本使用新变量扩展 C# 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49231900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com