【问题标题】:Unity LineRenderer - unable to get referenceUnity LineRenderer - 无法获得参考
【发布时间】:2020-10-08 15:33:14
【问题描述】:

我在顶层有一个带有 LineRenderer 的 Unity 场景(即不是某些组件的子组件),称为“LineOfFlight”。

我正在尝试以编程方式(而不是通过编辑器)获取对它的引用:

    LineRenderer
            lineOfFlight;
    GameObject
            tmp = GameObject.Find("LineOfFlight");

    if (tmp != null)
        lineOfFlight = tmp.GetComponent<LineRenderer>();

    Debug.Log("lineOfFlight=" + (lineOfFlight == null ? "null" : "not null") + ", tmp=" + (tmp == null ? "null" : tmp.ToString()));

在调试日志中,tmp 显示为“LineOfFlight (UnityEngine.GameObject)”,看起来不错,但 lineOfFlight 显示为“null”。即无法获取组件。

我在 Awake() 中做这一切。我做错了什么?

【问题讨论】:

  • 能否请您在文件中包含完整的代码,而不需要编辑任何内容,包括它们所在的函数等。现在我们对您的问题的信息不完整,因为代码本身似乎为我工作。

标签: c# unity3d gameobject


【解决方案1】:

在您的问题中未包含的部分代码中存在错误,因为代码本身在正确格式化并在函数中设置时可以正常工作。

或者,您的名为“LineOfFlight”的GameObject 的名称可能有拼写错误,或者没有添加LineRenderer 组件。

using UnityEngine;

public class LineRendererText : MonoBehaviour
{

    LineRenderer lineOfFlight = null;

    private void Start()
    {
        GameObject tmp = GameObject.Find("LineOfFlight");

        if (tmp != null)
            lineOfFlight = tmp.GetComponent<LineRenderer>();

        Debug.Log("lineOfFlight=" + (lineOfFlight == null ? "null" : "not null") + ", tmp=" + (tmp == null ? "null" : tmp.ToString()));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多