如何使用反射调用项目范围的属性?



我正在为一个游戏构建一个新闻源系统,我有一个文件,其中包含系统读取的各种字符串消息以在屏幕上显示它们。

像这样的字符串不是问题:"欢迎来到垃圾岛">

但我想添加一些动态文本,其中包括来自类或非 void 函数的一些特定变量,这些变量将它们的结果返回到消息的定义位置:

示例:"时间:[显示当前时间]"应给出"时间:晚上 10:23">

我认为使用标记代码的标签可能足够好。 为了实现上面示例的格式,我想出了这个:

"Time:">

注意:daytime 是一个浮点值,ToTime 返回一个时间格式的字符串

这是我的方法,但当然不起作用:

string msg = messages [_index];
string prefix = "";
string subfix = "";
string code = "";
if (msg.Contains ("<code=")) {
int start = msg.IndexOf ("<code=")
prefix = msg.Substring (0, start);
start += 6;
end = msg.IndexOf ("/>");
code = msg.Substring (start, end - start);
suffix = msg.Substring (end+2, msg.Length-1);
Debug.Log ("Function found: " + code);
string codeReturnValue = //DO MAGIC REFLECTION WITH "code" 
text_message.text = prefix + codeReturnValue + subfix;
} else { 
text_message.text = msg;
}

但是,如何使用反射将"代码"转换为实际调用呢?

我认为这是不可能的,但是我将如何管理这样的东西,而不必创建大量硬编码函数,而是根据消息字符串收集所有信息?

您可以使用 Roslyn 的脚本 API。

这是一篇很好的文章,他们完全可以做你想要的。

最新更新