繁体   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