JInt需要另一个js文件

时间:2018-02-14 19:22:47

标签: javascript c# unity3d jint

我正在寻找一种在JInt中包含另一个js文件的方法(用于C#Unity的javascript解释器)。我知道我可以简单地将所有js文件连接到一个字符串并通过正常方式运行它。但我不想指定要加载的确切文件以及文件加载顺序。我在文件夹和子文件夹中有大量未定义的文件,我只知道哪个文件是main.js。

有可能使用来自nodejs的require(' file.js'),或者这是一个非常糟糕的主意吗?

谢谢。

P.S。该项目旨在在Unity-JInt下运行。

1 个答案:

答案 0 :(得分:2)

我不确定jint是否提供此类功能。但你可以试试像

这样的东西

我们假设您有两个js文件,如下所示。

// file1.js
log('Hiii.. I am file 1');
require('C:\\file2.js');

// file2.js
log('Hiii.. I am file 2');

您可以构建require,如下所示。

using System;
using Jint;
using Jint.Native;

namespace JintSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var engine = new Engine();
            JsValue require(string fileName)
            {
                string jsSource = System.IO.File.ReadAllText(fileName);
                var res = engine.Execute(jsSource).GetCompletionValue();
                return res;
            }

            engine.SetValue("require", new Func<string, JsValue>(require))
            .SetValue("log", new Action<string>(System.Console.WriteLine));

            JsValue name = engine.Execute(@"require('C:\\file1.js')").GetCompletionValue();
        }
    }
}

我希望这会对你有所帮助。