【问题标题】:Object in unity3d not returning position when assigned to public variable分配给公共变量时,unity3d中的对象不返回位置
【发布时间】:2015-10-16 08:35:47
【问题描述】:

我正在尝试使用 transform.position 查找两个对象之间的距离。

这是我的脚本代码:

using UnityEngine;
using System.Collections;

public class Trigger : MonoBehaviour {

public GameObject Door;
public GameObject Player;

int count = 0;

// Use this for initialization
void Start () {
    Debug.Log (Door);
    Debug.Log (Player);
}

// Update is called once per frame
void Update () {
    Debug.Log (Door.transform.position);
    //Debug.Log (Door);
    //Debug.Log (Player);
    //float distance = Vector3.Distance (Door.transform.position, Player.transform.position);
    //Debug.Log (distance);
}

这是一张图片,显示 1) 场景和层次结构 2) 游戏对象的检查员将脚本分配给:

但是现在的问题是,当我想找到该对象的位置时,它只返回初始位置 - 即它没有更新游戏对象玩家的位置 - 我如何更新游戏对象变量?

【问题讨论】:

  • 您在 Trigger Start() 方法中看到任何错误吗?
  • 您的游戏对象门未分配给任何对象实例。 Start() 方法不会触发错误,因为它只会打印出 NULL 或其他内容,但是当您尝试使用 Door 作为实例并访问转换时,会引发上述错误。
  • 我以为我已经将游戏对象门分配给了场景中的游戏对象(门)——以及游戏对象玩家

标签: variables unity3d runtime-error variable-assignment


【解决方案1】:
  • 当我遇到同样的错误时,原因是我不小心将脚本拖到了场景视图中的错误对象上。

  • 如果您无意中将脚本附加到多个游戏对象并且仅在一个位置初始化它,就会发生这种情况。

我检查了你的错误图片,你申请了 Door 对象是对的。为 WALLS 或 PLAYER 放置脚本。会解决问题

【讨论】:

  • 谢谢这解决了这个问题 - 但是现在的问题是当我想找到那个对象的位置但是它只返回初始位置 - 即它没有更新游戏对象玩家的位置 - 你呢知道我该如何解决这个问题吗?
  • 没关系我修好了(事实证明玩家实际上并没有移动它是移动的子对象单元)
猜你喜欢
  • 2011-11-04
  • 2016-11-14
  • 1970-01-01
  • 2018-01-24
  • 2019-06-17
  • 1970-01-01
  • 2015-04-15
  • 2020-11-15
  • 2016-03-19
相关资源
最近更新 更多