Как использовать Microsoft Infer.net в Unity 2017
Я использую Unity 2017.2. Для инфраструктуры Infer.Net требуется.NET 4.0, а Unity может использовать только сборки, предназначенные для.NET 3.5. Как я могу это сделать?
1 ответ
В 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's Assembly-CSharp. Для сборки FSharp установите языковой пакет F# в Visual Studio. Затем скопируйте сборку из:
C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.3.0.0
в папку "Активы" и ссылки на нее в вашем проекте C#. Добавьте вышеуказанный скрипт к игровому объекту по вашему выбору.
Проверьте консоль в Unity на наличие выходных сообщений вышеуказанной программы.