[英]Unity build errors using C# Tasks
我正在嘗試在Unity 5.6.1中更新並構建一個C#項目,以便稍后在Hololens上運行。 最初,該項目使用了System.Threading,但我認為我需要使用Tasks,因為Unity存在一些問題。
當我在Visual Studio中打開項目時,它使用任務運行正常。 當我在Unity中構建項目時,它表示任務不存在(下面的錯誤)。 我在Universal on Universal 10 SDK上使用.Net 4.6進行構建。
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace SampleCSApp
{
// Based on http://answers.unity3d.com/questions/357033/unity3d-and-c-coroutines-vs-threading.html
class BaseThread
{
private bool _isDone = false;
private object _handle = new object();
//private System.Threading.Thread _thread = null;
private System.Threading.Tasks.Task _thread = null;
private static int WAIT_FOR_MS = 100;
public bool IsDone
{
get
{
bool tmp;
lock (_handle)
{
tmp = _isDone;
}
return tmp;
}
set
{
lock (_handle)
{
_isDone = value;
}
}
}
public virtual void Start()
{
_thread = new System.Threading.Tasks.Task(Run);
//_thread = new System.Threading.Thread(Run);
_thread.Start();
}
public virtual void Abort()
{
_thread.Dispose();
//_thread.Abort();
}
protected virtual void ThreadFunction() { }
public void WaitFor()
{
while (!IsDone)
{
_thread.Wait(WAIT_FOR_MS);
//System.Threading.Thread.Sleep(WAIT_FOR_MS);
}
}
private void Run()
{
ThreadFunction();
}
}
}
給出的統一錯誤:
Assets / SampleCSApp / BaseThread.cs(14,34):錯誤CS0234:命名空間“System.Threading”中不存在類型或命名空間名稱“Tasks”。 你錯過了裝配參考嗎?
Unity基於.NET 2.0,引入了一些.NET 3.5功能。任務是.NET 4.0的一項功能。 您需要等待Unity 2017.1發布(或使用測試版 ),它將通過選擇加入選項支持.NET 4.6。 有關詳細信息,請參閱此論壇帖子 。
我們想讓論壇上的每個人都知道我們未來的Mono運行時升級計划。
Unity 2017.1版本很快將作為公開測試版提供。 在此版本中,Mono運行時升級功能將是一個選項。 對於給定項目,您可以選擇使用Unity中的現有Mono版本(支持.NET 3.5)或新的Mono運行時(支持.NET 4.6)。 在Unity 2017.1中,默認設置是使用較舊版本的Mono。 很快(可能是Unity的2017.2版本)我們將使用舊的運行時作為選項,使新的Mono運行時默認。 稍后,我們將刪除對舊運行時的支持。 更多細節將很快出現在博客文章中,但我們希望首先讓這個論壇上的每個人都知道。
我們非常感謝你們許多人提供的時間,精力和反饋,以推動這一進程。 我們的團隊專注於將Mono運行時升級發送給所有Unity用戶,而不會破壞任何內容。 你找到許多破壞的東西是非常寶貴的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.