2016-07-13 7 views
0

Я пытаюсь получить доступ кC# Словарь - Доступ Значение по Enum ключа в Unity/Kinect проекта

RootSystem.Collections.Generic.Dictionary<Microsoft.Kinect.Face.FaceProperty, Windows.Kinect.DetectionResult> FaceProperties 

в единстве с Kinect Plugin.

Таким образом, FaceProperty и DetectionResult являются Перечисления:

public enum FaceProperty : int 
{ 
    Happy         =0, 
    Engaged         =1, 
    WearingGlasses       =2, 
    LeftEyeClosed       =3, 
    RightEyeClosed       =4, 
    MouthOpen        =5, 
    MouthMoved        =6, 
    LookingAway        =7, 
} 

и

public enum DetectionResult : int 
{ 
    Unknown         =0, 
    No          =1, 
    Maybe         =2, 
    Yes          =3, 
} 

Затем в режиме отладки, я пытался получить доступ к FaceProperties:

FaceProperties      // Count = 8 
FaceProperties[0]      // Incorrect types or number of arguments 
FaceProperties[FaceProperty.Happy] // The name 'FaceProperties[global::Microsoft.Kinect.Face.FaceProperty.Happy]' 
             // does not exist in the current context. 

ли вы, есть идеи, как я могу получить доступ к значениям словаря FaceProperties?

Спасибо заранее, bertiooo

ответ

0

Вы, наверное, не хватает имен:

using Microsoft.Kinect.Face; 
+0

Хорошо Guess, но у меня уже есть эта строчка в моем сценарии ... Но он указал мне на другой вопрос: является синтаксисом словаря [Enum.Key] 'не совсем правильным или это просто проблема моего кодирования в единстве? Так сказать, проблема лежит где-то еще, согласно небольшому тесту кодирования, который я написал: [link] (http://rextester.com/BNFCD7626). Я буду исследовать в этом направлении дальше, так что спасибо вам большое. – bertiooo

+0

Я вижу, что ваш тест не срабатывает при второй попытке, словарь не имеет индексации. Просто потому, что элементы не выровнены в памяти, как список или массив. Последняя версия является лучшей, так как позволяет проверять ключ, чтобы избежать исключения. Это также быстрее, чем dict.ContainsKey – Everts

+0

Я попытался прочитать переменную во время выполнения вместо этого в панели часов отладчика, и теперь это работает. Кажется, это проблема монодевелла .. так что thx снова – bertiooo

 Смежные вопросы

  • Нет связанных вопросов^_^