如何设置静态变量并仅为AR Core演示实例化一个预制件

时间:2017-08-31 10:38:36

标签: android unity3d arcore

我正在尝试修改Unity AR Core SDK中的演示场景 我创建了一个静态bool变量public getIcons(): IconDescription[] { let result: IconDescription[] = []; for (let key in iconRegistry) { result = _.map(iconRegistry, item => { let icons: IconDescription[] = []; for (let value in item) { console.log('KEY:', key, 'VALUE:', value, 'ICON:', item[value]); icons.push({ key, value, icon: item[value] }); } return icons; }); } return result; } 来检查是否创建了Andy预制件。

在以下检查中

isCreated

我已将变量设置为true,然后在此处再次检查

if (Session.Raycast(m_firstPersonCamera.ScreenPointToRay(touch.position), raycastFilter, outHit))

但由于某种原因,变量永远不会设置为true 。 我还注意到日志中的this error,并且不禁想知道它是否以某种方式阻止它被设置。

  

08-29 14:11:40.564 13392-13407 /? E / Unity:OPENGL NATIVE PLUG-IN ERROR:GL_INVALID_ENUM:枚举参数超出范围
  (文件名:./ Runtime / GfxDevice / opengles / GfxDeviceGLES.cpp行:368)

请帮忙。

1 个答案:

答案 0 :(得分:0)

我不知道你希望你的布尔值有多么严重,但我通过做类似的事情来达到同样的结果:

bool m_placed = false; // under the color array

然后就像你一样,我在这里检查一下:

if (Session.Raycast(m_firstPersonCamera.ScreenPointToRay(touch.position), raycastFilter, out hit) && !m_placed) {
    ...
    m_placed = true; // At the very end of this block
}

这对我来说很有效。我没有添加任何内容

if (Session.Raycast(m_firstPersonCamera.ScreenPointToRay(touch.position), raycastFilter, outHit))

OpenGL错误是一个已经引发的常见问题。它不应该影响这一点。

https://github.com/google-ar/arcore-unity-sdk/issues/3