gpt4 book ai didi

c# - 将字符串解析为 Unity3D 中的代码 (C#)

转载 作者:行者123 更新时间:2023-12-04 03:15:05 26 4
gpt4 key购买 nike

所以我想在 Unity 中构建这个小型代码沙箱,这样我就可以向学生教授算法和编码的基础知识。

他们的想法是让他们在文本框或类似的东西中输入(非常基本的)代码,然后观察他们的代码对 Unity 场景中存在的对象的影响。我很确定这已经完成了一百万次,但我很想尝试一下。问题是,我不知道从哪里开始......

我想这个想法是将字符串编译成代码并在运行时按一个按钮执行。

我已经阅读了许多关于 SO 的其他问题,并提出了非常多样化的解决方案,例如使用 C# 解析器、反射、表达式树、CodeDom 等。

根据我对所有这些的理解(即不多),CodeDom 似乎更合适,但后来我读到它只在 Visual Studio 内部运行并在公共(public)构建中产生错误。那么这是否意味着这将成为 Unity3D 中的一个问题(因为它基于 Mono?)

谢谢你的帮助,

最佳答案

在以下情况下,您在同一脚本中查找给定名称的现有方法(您可以轻松地将其转换为另一个脚本或程序集中的任何脚本(尽管不推荐)):

string actionStr = inputField.text;
Type t = this.GetType();
MethodInfo mi = t.GetMethod(actionStr);
if(mi == null)
{
ErrorMethod(actionStr + " method could not be found");
}else
{
mi.Invoke(this);
}

另一种方法是将所有方法存储在字典中(更快):

Dictionary<string, Action>dict = null;
void Start()
{
this.dict = new Dictionary<string, Action>();
this.dict.Add("dosomething", DoSomething);
}
void DoSomething(){}

public void OnActionCall(string inputFieldStr)
{
string str = inputFieldStr.ToLower();
if(this.dict.Contains(str) == false)
{
ErrorMethod(actionStr + " method could not be found");
return;
}
this.dict[str]();
}

关于c# - 将字符串解析为 Unity3D 中的代码 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41779776/

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