我正在创建一个2D的统一游戏。游戏的想法是2D点(马)围绕赛马场比赛。我有一个名为horsePos(马的位置,如第一,第二,第三)的int变量。这很有效。我试图做的是看看哪匹马在前面,无论是Horse(原始预制件)还是预制件的示例化版本(Horse(1))。
所以我使用了一个外部脚本,它是一个名为Game Handler的空gameObject。这是我对gameObject的引用。
horseOne = GameObject.Find("Horse");
horseTwo = GameObject.Find("Horse (1)");
在更新中尝试以下代码时,它给了我错误“'GameObject'不包含'horsePos'的定义,并且找不到接受类型'GameObject'的第一个参数的可访问扩展方法'horsePos'”
if (horseOne.horsePos < horseTwo.horsePos)
{
Debug.Log("horse 1 infront");
}
我已经尝试使用,但由于我针对超过1个示例的特定脚本,我不相信这将工作,所以我需要针对gameObject,然后脚本的特定gameObject。
任何帮助将不胜感激,如果有任何额外的信息,我会提供它。提前感谢!
1条答案
按热度按时间ffx8fchx1#
永远不要使用GameObject.Find。这只是一个不好的习惯。对于这种用例,请使用检查器引用预制件并将示例化的对象存储在变量中。像这样更改代码:
之后,通过拖放将horsePrefab分配给检查器中的GameHandler。这将使您的代码更好,并解决您的问题。此外,为了更正确的方法,可以考虑像这样定义horsePrefab字段,以避免破坏失能: