簡體   English   中英

Unity使用C#任務構建錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM