Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在UnityScript或C#中用Unity替换Eval()_C#_Windows Phone 8_Unity3d_Unityscript - Fatal编程技术网

在UnityScript或C#中用Unity替换Eval()

在UnityScript或C#中用Unity替换Eval(),c#,windows-phone-8,unity3d,unityscript,C#,Windows Phone 8,Unity3d,Unityscript,据我所知,我的问题以前没有人回答过。我正在使用Unity为Windows Phone 8创建一个应用程序,我希望获得用户的输入并将其作为代码执行。现在通常使用JavaScript时,可以只使用eval(“这里的代码”),但Unity不喜欢这样,并说eval()不允许用于我的目标(WP8) 所以我的问题是-我如何在不使用eval()、不依赖窗口或将脚本附加到文档中的情况下以代码形式在C#或UnityScript中执行字符串-基本上它与Unity一起工作 例如,如果我可以使用eval,我会这样做:e

据我所知,我的问题以前没有人回答过。我正在使用Unity为Windows Phone 8创建一个应用程序,我希望获得用户的输入并将其作为代码执行。现在通常使用JavaScript时,可以只使用eval(“这里的代码”),但Unity不喜欢这样,并说eval()不允许用于我的目标(WP8)

所以我的问题是-我如何在不使用eval()、不依赖窗口或将脚本附加到文档中的情况下以代码形式在C#或UnityScript中执行字符串-基本上它与Unity一起工作

例如,如果我可以使用eval,我会这样做:eval(“createCuboid(0,1,2)”

谢谢你的帮助

编辑: 因此,我正在制作一个应用程序,允许用户在GUI.TextField中输入一行代码。当用户单击一个按钮时,它将获取他们的代码并运行它。在我的示例createCuboid(0,1,2)中,我有自己的函数,可以根据用户的规范创建一个长方体(如参数中所示)

我之所以希望这样做,是因为我希望用户能够自由操纵3D环境,而不必做一些更为紧凑的事情——例如,必须点击带有createCuboid的按钮,然后在多个字段中输入参数。我有多个函数,用户可以调用这些函数来操纵环境


这有帮助吗?

为什么需要让用户编写代码? 这是非常危险的。如果希望允许用户在运行时创建对象(如多维数据集),请让用户选择要创建的对象,使用字段获取函数参数(此处也检查是否正确)并创建对象

可能是这样的:

List<Cubes> cubes = new List<Cubes>();
int create = /* read */;
switch (create)
{
    case 0: {
        int x = /* ask for x */
        int y = /* ask for y */

        cubes.Add(createCuboid(x, y, 0));
        break;
    }

    /* etc */
}
List cubes=new List();
int create=/*read*/;
开关(创建)
{
案例0:{
int x=/*请求x*/
int y=/*询问y*/
添加(createCuboid(x,y,0));
打破
}
/*等*/
}
如果要让用户删除多维数据集,请从列表中获取并删除它。
和。。是的,这段代码只是为了澄清我想说的内容。

您能多发布一些关于您试图解决的问题的信息吗?因为你不应该这样做,而且听起来你在做一些完全错误的事情。据我所知,C#没有提供这样的东西。您可以编写自己的解释器来解析参数,并使用反射来设置所有内容,但这将是大量的工作(而且可能非常危险)?我得出了这样的结论,在C#中这样做是不可能的。请注意,在.net framework中这样做确实是可能的,但通常这些类型的功能不适用于Win Phone 8之类的移动操作系统。谢谢!那是个更好的主意。