0

我正在使用 Unity 2017.2。Infer.Net框架需要 .NET 4.0,而 Unity 只能使用面向 .NET 3.5 的程序集我怎么做?

4

1 回答 1

2

在 Unity 2017.2 中,您可以访问:

编辑 -> 项目设置 -> 播放器 -> 其他设置 -> 配置 -> API 兼容级别

并切换到“实验性 .NET 4.6”。

这是您的测试代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using System;
using System.Text;
using MicrosoftResearch.Infer.Models;
using MicrosoftResearch.Infer;

public class TestInferNet : MonoBehaviour {

    // Use this for initialization
    void Start () {

        Debug.Log("Start Infer.net");

        Variable<bool> firstCoin = Variable.Bernoulli(0.5).Named("firstCoin");
        Variable<bool> secondCoin = Variable.Bernoulli(0.5).Named("secondCoin");
        Variable<bool> bothHeads  = (firstCoin & secondCoin).Named("bothHeads");

        InferenceEngine ie = new InferenceEngine();

        if (!(ie.Algorithm is VariationalMessagePassing))
        {
            Debug.Log("Probability both coins are heads: "+ie.Infer(bothHeads));
            bothHeads.ObservedValue=false;
            Debug.Log("Probability distribution over firstCoin: " + ie.Infer(firstCoin));
        }
        else
            Debug.Log("This example does not run with Variational Message Passing");

        Debug.Log("Done start");

    }

    // Update is called once per frame
    void Update () {

    }
} 

您只需将 Infer.Compiler.dll 和出于某种奇怪的原因将 FSharp.Core 4.3.0 添加到 Unity 的 Assembly-CSharp 项目中。对于 FSharp 程序集,在 Visual Studio 中安装 F# 语言包。然后从以下位置复制程序集:

C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.3.0.0

到您的资产文件夹并在您的 C# 项目中引用它。将上述脚本添加到您选择的游戏对象中。

检查 Unity 中的控制台以获取上述程序的输出消息。

于 2017-12-10T23:51:36.893 回答