Dictionary和Items保护Unity3d 5.3.1中KeyedCollection的成员?

时间:2016-01-27 12:22:47

标签: c# unity3d mono

我已经使用Unity 5一年了,直到上周我们想要将IDE更新为5.3.1版本时,一切正常。

现在编译器显示两个错误:

The name `Dictionary' does not exist in the current context.
The name `Items' does not exist in the current context.

都本地化在一个简单的KeyedCollection

public class CommandProcessQueueCollection : KeyedCollection<int, CommandProcessQueue>
{
   public bool TryGetQueue(int id, out CommandProcessQueue queue)
   {
       if (Dictionary != null)
       {
           return Dictionary.TryGetValue(id, out queue);
       }

       foreach (var i in Items)
       {
           var k = GetKeyForItem(i);
           if (Comparer.Equals(id, k))
           {
              queue = i;
              return true;
           }
       }
       queue = default(CommandProcessQueue);

       return false;
   }

   protected override int GetKeyForItem(CommandProcessQueue queue)
   {
      return queue.Id;
   }
}

经过几次尝试后,事情变得更加棘手,因为在安装了5.3.1的5台不同机器上编译完全相同的代码。

嗯,5个中有2个证明编译没有任何错误

此外,msbuild似乎也没有任何错误地编译代码。

可能在Mono用于编辑的.NetFramework中,机器之间存在差异。

你对这个奇怪的问题有什么看法吗?

PS:我正在添加using System.Collections.ObjectModel,我在Unity编辑器中的当前API兼容性选项设置为.NET 2.0。

1 个答案:

答案 0 :(得分:0)

好的,我的团队解决了。

在那些机器中,没有安装Windows支持编辑器5.3.1f1,因此webplayer的标准模块正在运行,并且几乎没有.NET的API。