我正在制作具有角色属性(例如力量,敏捷性等)的游戏。我将它们全部放在<string, double>
词典中。我需要对装备,buff等的属性实施“ mods”。我想通过查找/替换将"CurrentStats[Key]"
的所有实例替换为某种function(string input)
。 (我有成百上千的引用,我不能全部手工完成)
所以基本上,我正在寻找一种写函数的方法,我可以用某种方式写
Function("Strength") = 5;
进行分配
同时仍然可以使用
if(Function("Strength") == 5)
用于获取。
这可能吗?
答案 0 :(得分:1)
Visual Studio在其搜索和替换中内置了正则表达式。您只需在进行替换时启用该选项即可。
您可能只需执行全局搜索,然后将CurrentStats\[([^\]]+)\]
替换为MyFunction($1)
。
说明:这将搜索文字字符串CurrentStats[]
,两个方括号之间的内容是一个组(在替换中称为$1
),表示为用{{1}包围}和(
,其中包含)
,或者,“一个字符组(不是结尾引号[^\]]+
的任何字符重复了一次或多次)。
请注意,如果键本身可以包含]
之类的键,则此键将无效,因为它显然将与该键的右括号匹配。正则表达式并不是非常擅长匹配括号或标签。
答案 1 :(得分:0)
地方策略是为您的角色设置一个类。您可以使用属性。如果要分配功能,通常使用参数调用函数,但是可以直接分配属性。
public class Character {
private bool overpowered = false;
private int _strength = 0;
public int Strength
{
get { return this._strength; }
set {
if (value > 10) { overpowered = true; }
this._strength = value;
}
}
// [...]
}
然后使用属性通过对象简单地访问它:
Character c = new Character();
c.Strength = 5;
if (c.Strength == 5) { /* ... */ }
在这里使用字典毫无意义。
答案 2 :(得分:0)
看起来ref返回是我的追求。我不知道如何将其标记为已回答。在这里的第一篇文章。谢谢大家