C# 如何获得每个实例化游戏对象的位置

C# 如何获得每个实例化游戏对象的位置,c#,unity3d,C#,Unity3d,我是一个新手,试图做一个简单的点击跳式2D游戏,我能够自己解决问题,但我不能解决这个问题。 因此,问题是: 1). 我有三个脚本Movement.cs、barriend.cs和Score.cs(Movement.cs和Score.cs都附加到“Player”游戏对象) 2) 。在Score.cs中,我希望玩家每次跳跃时都能得分+,避免与障碍物碰撞(就像飞鸟一样) 3) 这是我的Score.cs脚本: 我包含代码段是因为“代码未格式化”错误 使用UnityEngine; 使用系统集合; 公共课成绩

我是一个新手,试图做一个简单的点击跳式2D游戏,我能够自己解决问题,但我不能解决这个问题。 因此,问题是: 1). 我有三个脚本Movement.cs、barriend.cs和Score.cs(Movement.cs和Score.cs都附加到“Player”游戏对象)

2) 。在Score.cs中,我希望玩家每次跳跃时都能得分+,避免与障碍物碰撞(就像飞鸟一样)

3) 这是我的Score.cs脚本: 我包含代码段是因为“代码未格式化”错误
使用UnityEngine;
使用系统集合;
公共课成绩:单一行为
{
公共游戏对象障碍;
公共障碍物;
公众智力得分;
无效开始()
{
障碍=游戏对象。查找(“板条箱”);
obs=障碍物。GetComponent();
}
无效更新()
{

if(obs.transform.position.x为什么不起作用?我试着在我的barrier.cs脚本中指定“克隆”我的板条箱预制件的副本并进行评分,但它也不起作用。你把它扔给游戏对象了吗?比如

clone = Instantiate (crate, new Vector3 (startingPositionX, startingPositionY, 0f), Quaternion.identity) as GameObject;
??
您现在拥有的是一个空引用,因为您正在尝试访问一个已销毁对象的transfrom属性。

是的,我也这样做了,但它不起作用,顺便说一句,我不知道应该将什么分配给游戏对象(板条箱和克隆)因此,我将我的板条箱预制件分配给他们两个。我不知道这是否是问题所在。在障碍中,不要破坏板条箱-稍后实例化的预制件,而是销毁克隆。在分数类中,您引用了主对象,而不是它的实例。在生成类中,添加GameObject.Find(“Player”).GetComponenet().barrier=clone。在确定位置之前,在score类中验证对象是否为null。例如,如果(obs!=null&&obs.transfrom!=null)//比您的代码更仔细这是一个特殊的解决方案,用于验证它是否有效。如果有效,则使用GameObject.Find(“Player”).GetComponenet()仅在开始时保存对它的引用。GameObject.Find()有点慢,可能会影响以后的性能。因此,我从您的回答中得到的是:1)销毁克隆。2)验证对象是否为空。3)我很困惑(我假设您说的“生成类”是指障碍物。cs)下面的代码到底会做什么“GameObject.Find(“Player”).GetComponenet()”。我对unity还很陌生(这是我使用unity的第二天)。还有一件事,我如何在inspector中引用实例而不是主对象?