Unity CS0308 error: The non-generic method cannot be used with the type arguments

Unity CS0308 error: The non-generic method cannot be used with the type arguments

我试图在 Unity3D 中构建游戏,我使用的是 Unity 5.1.1 专业版,我导入了 Google VR sdk,但出现此错误。

void Awake() {
#if !UNITY_5_2
         // im getting a error on this line 
        GetComponentInChildren<VideoControlsManager>(true).Player = player;
#else
    GetComponentInChildren<VideoControlsManager>().Player = player;
#endif
  }
}

根据 documentation 的第一行,<generictype> 不可接受。但是这个例子使用了<generictype>。您可以提交一张票,看看哪个是正确的。由于错误,我怀疑定义行是正确的书写方式。所以...

这样写你的台词:

GetComponentInChildren(typeof(VideoControlsManager)).Player = player;

你可以使用 Component.GetComponentsInChildren 因为它需要一个布尔值来包含非活动对象,但是因为它 returns 一个数组你可以使用 ForEach 将你的变量分配给每个元素

 public VideoControlsManager[] VideoControlsManagers;
VideoControlsManagers = GetComponentsInChildren<VideoControlsManager>(true);

        foreach( VideoControlsManager v in VideoControlsManagers )
            v.Player  = player;