我从事基于文本的游戏已有一段时间了,遇到的一个问题是,我必须根据在整个游戏中可能发生变化的变量编写不同的段落。
我到处寻找解析器之类的东西,但大多数都是找到的正则表达式,在这里我认为它没有用。我正在寻找某种方式来查看这样的字符串。
String x = "'It's nice to meet you [if (Female){ "Miss, what's a pretty young thing like you doing out in the dessert."} else { "Sir, what can I do for ya?"}]' the man asks in a drawl.";
目前,我必须编写与if语句分开的段落,但是编写起来会花费更长的时间,并且很难保持对话的畅通。我的目标是要有一个类,可以根据整个游戏中变化的变量在执行时将字符串发送到该类并获取格式化的版本。
如果这是您的目标,那么c#确实不是您的工具。它只是不提供此功能,尽管它将在6.0版中提供字符串插值,但我怀疑它是否会支持您想要的完整语句。这种功能根本不是语言的目标,并且实际上会使主要目标之一(一流的工具支持)更加困难。
一个有趣的替代方法可能是编写代码来在Powershell中进行插值,该动态代码是动态的,支持全字符串插值,自Windows XP 3开始安装在每台Windows机器上,并且可以与任何.Net语言进行本机互操作。
您甚至可以通过仅针对一个组件调用powershell来将其余代码包含在c#中,从而实现此目的。
由于ifs的powershell语法与c#非常相似,因此您的代码可能类似于
interpolate(@"'It's nice to meet you $(if (Female){ ""Miss, what's a pretty
young thing like you doing out in the dessert.""} else { ""Sir, what can I
do for ya?""})' the man asks in a drawl.");
话虽这么说,做到这一点并非易事,但如果必须使用c#代码文件中的字符串插值,它可能是您的最佳选择。
其他选择:
这些东西都不是容易的,但是一切都是可行的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句