c# - UnityScript 或 C# 中的 Eval() 替换为 Unity

标签 c# windows-phone-8 unity3d unityscript

据我所知,我的问题以前没有得到回答。我正在使用 Unity 为 Windows Phone 8 创建一个应用程序,我想获取用户的输入并将其作为代码执行。现在通常使用 JavaScript 可以只使用 eval("code here"),但 Unity 不喜欢那样,并说我的目标 (WP8) 不允许使用 eval()。

所以我的问题是 - 我如何在不使用 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 */
}

如果你想让用户删除立方体,从列表中获取并删除它。 并且.. 是的,这段代码只是为了阐明我想说的话。

关于c# - UnityScript 或 C# 中的 Eval() 替换为 Unity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20454255/

相关文章:

c# - 身份框架GenerateUserToken验证问题

c# - 将现有表映射到 C# 中的域类

c# - 如何使用动态类型参数创建 System.Func 类型

android - 有没有办法从对服务器的http请求确定移动操作系统(iOS、Android等)?

c# - 使用 Newtonsoft.Json 解析 Json 数组对象

c# - 链接到 C# 中的控制面板(运行广告程序和配置管理器)

Azure 移动服务与 Azure 通知中心 - 哪个用于推送通知?

c# - Resharper 警告 Unity3D 调用的未使用方法

c# - 将 Texture2D 转换为 OpenCV Mat?

ios - 为什么 Unity iOS 应用程序如此庞大?