2017-06-01 3 views
1

Unity 5.6.1でC#プロジェクトを更新して後でHololensで実行しようとしています。もともと、このプロジェクトではSystem.Threadingを使用していましたが、Unityの問題のためにタスクを代わりに使用する必要があると思います。C#を使用したUnityビルドエラータスク

Visual Studioでプロジェクトを開くと、タスクを使用して正常に動作します。 Unityでプロジェクトをビルドすると、Tasksが存在しないと表示されます(以下のエラー)。ユニバーサル10 SDKのUnityで.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(); 
     } 
    } 
} 

与えられたユニティ・エラー:

資産/ SampleCSApp/BaseThread.cs(14,34):エラーCS0234:型または名前空間名 `タスクは名前空間`システムに存在しません。スレッディング '。アセンブリの参照がありませんか?

+0

店舗の既存の無料のスレッドライブラリを使用する必要があります。使用したコード例は最大ではありません。 –

答えて

3

ユニティは.NET 2.0に基づいており、いくつかの.NET 3.5の機能が組み込まれています。タスクは.NET 4.0の機能です。オプトインオプションを使用して.NET 4.6をサポートするUnity 2017.1がリリースされる(またはthe beta versionを使用する)まで待つ必要があります。詳細は、this forum postを参照してください。

フォーラムの皆様に、 Monoランタイムアップグレードの今後の計画についてお知らせください。

Unity 2017.1リリースはすぐにパブリックベータ版として公開されます。このリリースの では、Monoランタイムアップグレード機能がオプションになります。特定のプロジェクト の場合、 Unity(.NET 3.5サポート)または新しいMonoランタイム(.NET 4.6 サポート)のMonoの既存バージョンを使用することができます。 Unity 2017.1では、既定の設定で古いバージョンの Monoを使用します。まもなく(おそらくUnityの2017.2リリース)、新しいランタイムを既定のランタイムをオプションとして使用して に変更します。後で を実行すると、古いランタイムのサポートが削除されます。詳細は のブログ記事にすぐに掲載されますが、私たちはこの フォーラムの皆さんに知ってもらいたいと考えていました。

このプロセスを進めるために多くの皆様、多くの方々に感謝します。 私たちのチームは、 のMonotランタイムアップグレードをUnityユーザーのすべてに出荷することに重点を置いており、 の問題はありません。 多くのものを見つけるために入れた作品は、壊れてしまったのは非常に貴重です。

+0

返事をお寄せいただきありがとうございます。 Unityビルド設定 - >プレーヤ設定 - >その他の設定 - >設定 - > Api互換性レベルで、.NET 4.6オプションがあります。それが何のために使われるのか知っていますか? – sethdippold21

+0

まだ実際には新しいスクリプトのものと一緒にプレイしたことはありません。 –

関連する問題