首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jint + XNA (C#)

Jint + XNA (C#)
EN

Stack Overflow用户
提问于 2010-01-01 22:45:13
回答 3查看 1.2K关注 0票数 6

有没有可能使用jint来操纵用XNA (C#)创建的3D环境,并在这个环境中添加功能(同样使用jint)?

EN

回答 3

Stack Overflow用户

发布于 2010-01-02 18:44:50

作为Jint的贡献者,我推荐你使用Jint。Jint使它比Lua所做的更简单。此外,我不知道这在Lua中是否可行,但你可以给它.NET对象,并在javascript中使用它们(Jint代表Javascript INTpreter)。您还可以使用权限集保护您的应用程序。下面是Jint之前提供的相同代码:

代码语言:javascript
复制
    class Program
{
    static void Main(string[] args)
    {
        Program p = new Program();
        p.Run();
    }

    private void Run()
    {
        JintEngine engine = new JintEngine();
        engine.SetFunction("GTest", new Jint.Delegates.Func<object, double>(LUA_GTest));
        engine.Run("GTest([['3,3']])");
    }

    private double LUA_GTest(object d)
    {
        Console.WriteLine("Got {0} - {1}", d.GetType().ToString(), d.ToString());
        while (d is ArrayList)
        {
            d = ((ArrayList)d)[0];
            Console.WriteLine("Got {0} - {1}", d.GetType().ToString(), d.ToString());
        }
        if (d is string)
        {
            d = double.Parse((string)d);
            Console.WriteLine("Got {0} - {1}", d.GetType().ToString(), d.ToString());
        }
        if (d is double)
            return (double)d * 2;
        return 0;
    }
}
票数 4
EN

Stack Overflow用户

发布于 2010-01-01 23:14:33

Jint是一个选项,LUA是一个选项check out LuaForge

LUA是一种非常有趣且易于使用的语言,对协作多任务(协程)提供了很好的支持。它的基本数据类型是表(介于字典和数组之间),非常灵活和强大。

这是我刚刚写的一些东西,只是为了测试它。我为脚本注册了一个名为GTest的函数,该函数映射到名为LUA_GTest的对象中的C#方法。该方法接受一个通用对象,在脚本中,我向它传递了一个表,其中包含一个表,该表中包含一个表示双精度值的字符串。在C#中,我解开所有东西并返回一个基于双精度值的值。

代码语言:javascript
复制
class Program
{
    static void Main(string[] args)
    {
        Program p = new Program();
        p.Run();
    }

    private void Run()
    {
        Lua lua = new Lua();
        var methodInfo = typeof(Program).GetMethod("LUA_GTest", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
        lua.RegisterFunction("GTest", this, methodInfo);
        lua.DoString("GTest({{\"3.3\"}})");
    }

    private double LUA_GTest(object d)
    {
        Console.WriteLine("Got {0} - {1}", d.GetType().ToString(), d.ToString());
        while (d is LuaTable)
        {
            d = ((LuaTable)d)[1];
            Console.WriteLine("Got {0} - {1}", d.GetType().ToString(), d.ToString());
        }
        if (d is string)
        {
            d = double.Parse((string)d);
            Console.WriteLine("Got {0} - {1}", d.GetType().ToString(), d.ToString());
        }
        if (d is double)
            return (double)d * 2;
        return 0;
    }
}
票数 2
EN

Stack Overflow用户

发布于 2010-01-01 23:04:01

考虑如何为.Net选择脚本平台,让我们看看this SO question

通常,您可以在XNA应用程序中构建脚本引擎。使用脚本引擎并在应用程序中提供挂钩与通过公共接口调用外部程序集没有太大区别。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1988767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档