При попытке собрать демонстрационный проект Google Cardboard для ios происходит сбой из-за ошибки компилятора.

Я не вносил изменений в образец проекта. Я использую Unity 5.0.2f1. Когда я пытаюсь собрать демонстрационный проект для Google Cardboard для ios, он говорит, что не может построить, потому что скрипты имеют ошибки компиляции. Он показывает две ошибки компилятора:

Assets/Cardboard/Editor/CardboardEditor.cs(128,42):error CS0117: 'UnityEditor.PlayerSettings' does not contain a definition for 'GetGraphicsAPIs'

а также

Assets/Cardboard/Editor/CardboardEditor.cs(130,5): error CS1579: foreach statement cannot operate on variables of type 'object' because it does not contain a definition for 'GetEnumerator' or is not accessible

Я предполагаю, что решение первой ошибки решит вторую. Код, который выдает ошибки, выглядит так:

private static void CheckGraphicsAPI() {
#if UNITY_IOS
#if UNITY_5 || UNITY_4_6 && !UNITY_4_6_1 && !UNITY_4_6_2
#if UNITY_5
    var iOSBuildTarget = BuildTarget.iOS;
    var iOSGraphicsAPIs = PlayerSettings.GetGraphicsAPIs(BuildTarget.iOS);
    bool isOpenGL = true;
    foreach (var device in iOSGraphicsAPIs) {
      isOpenGL &= (device == GraphicsDeviceType.OpenGLES2 || device == GraphicsDeviceType.OpenGLES3);
    }
#else
    var iOSBuildTarget = BuildTarget.iPhone;
    bool isOpenGL = PlayerSettings.targetIOSGraphics == TargetIOSGraphics.OpenGLES_2_0
    || PlayerSettings.targetIOSGraphics == TargetIOSGraphics.OpenGLES_3_0;
#endif  // UNITY_5
    if (EditorUserBuildSettings.activeBuildTarget == iOSBuildTarget
        && !Application.isPlaying
        && Object.FindObjectOfType<Cardboard>() != null
        && !isOpenGL) {
      Debug.LogWarning("iOS Graphics API should be set to OpenGL for best " +
        "distortion-correction performance in Cardboard.");
    }
#endif  // UNITY_5 || UNITY_4_6 && !UNITY_4_6_1 && !UNITY_4_6_2
#endif  // UNITY_IOS
  }
}

person TheSneak    schedule 12.09.2015    source источник
comment
обновить Xcode, может быть?   -  person Shannon Perkins    schedule 13.09.2015
comment
Ошибка возникает, когда я пытаюсь собрать проект в единстве, прежде чем он когда-либо дойдет до того, чтобы поместить его в xcode.   -  person TheSneak    schedule 13.09.2015


Ответы (1)


Эта функция просто пытается напомнить вам, что если вы хотите использовать нативную (C++) коррекцию искажений в SDK, графический API в настройках проигрывателя должен быть OpenGL (т. е. не Metal).

Если вы это уже знаете (или вам все равно), вы можете обойти ошибку, закомментировав тело этой функции.

(Unity меняет свои перечисления и функции для проверки Graphics API в нескольких добавочных выпусках. Таким образом, эти ошибки продолжают появляться, и Cardboard SDK должен наверстывать упущенное в следующем выпуске.)

person smd    schedule 13.09.2015