【问题标题】:Unity C# Getting Light Component from GameObject ArrayUnity C# 从游戏对象数组中获取光照组件
【发布时间】:2017-05-23 19:10:02
【问题描述】:

您好,我知道这是一个简单的问题,但我从统一和 C# 开始。 我有一个包含 65 个游戏对象的数组,我需要在不同的数组中使用它们中的每一个的光组件,到目前为止我有:

    public GameObject[] lightGO;
    public Light[] lights;

    void Awake(){
            lightGO = GameObject.FindGameObjectsWithTag ("Light");
            for (int i = 0; i < lightGO.Length; i++){

                    lights[i] = lightGO[i].GetComponent<Light>();

            }

    }

GameObject Array 填充了 65 个项目,但带灯的项目保持为空,这里有任何指针吗?提前致谢!

【问题讨论】:

  • 您确定加载到lightGO 中的对象具有使用GetComponent() 检索Light 组件的正确结构吗? (即,它不是在他们的孩子身上或类似的东西上?)您能否附上您尝试访问的对象的屏幕截图?
  • 过去我在 Lights 上使用 GetComponent 时遇到过一些问题。我需要查看我的代码,看看我做了什么让它工作。
  • 基本上我需要获取我拥有的每个游戏对象的一个​​组件数组,每个游戏对象都有一个灯光组件,我成功地在 Unity 中列出了游戏对象,但我无法获取组件列出。 [图片](goo.gl/photos/V5HdjYwHu4wWcdzq9 和 goo.gl/photos/bzoXKmjZXvGhsfEE8
  • 使用“GetComponentsInChildren”而不是“GetComponent”,应该可以。
  • @Herb 只是想知道,你在哪里初始化lights? (例如,初始化一个新数组,设置它的大小等等。)

标签: c# arrays unity3d light gameobject


【解决方案1】:

非常感谢@Woltus,我创建了一个父游戏对象并将所有灯光作为它的子对象,代码最终类似于:

    public GameObject lightsM;
    public Light[] lights;

    void Awake(){

            lights = lightsM.GetComponentsInChildren<Light>();

    }

现在一切正常,谢谢一百万

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多