Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将int变量引用到Unity中另一个游戏对象中的另一个脚本?_C#_Unity3d - Fatal编程技术网

C# 如何将int变量引用到Unity中另一个游戏对象中的另一个脚本?

C# 如何将int变量引用到Unity中另一个游戏对象中的另一个脚本?,c#,unity3d,C#,Unity3d,我想在另一个游戏对象上使用MainHero的健康变量。然而,我发现的所有答案只有在两个脚本绑定到一个对象时才相关。有没有办法让组件只传输一个变量?提前感谢。首先 public class MainHero : MonoBehaviour { public int health; . . . } 第二 public class AnotherHero : MonoBehaviour { MainHero mainHero; int anotherHealth

我想在另一个游戏对象上使用MainHero的健康变量。然而,我发现的所有答案只有在两个脚本绑定到一个对象时才相关。有没有办法让组件只传输一个变量?提前感谢。

首先

public class MainHero : MonoBehaviour
{
   public int health;

   .
   .
   .
}
第二

public class AnotherHero : MonoBehaviour
{
   MainHero mainHero;
   int anotherHealth;

   void Start()
   {
      mainHero = GameObject.FindGameObjectWithTag("YOUR MAINHERO OBJECT TAG").GetComponent<MainHero>();

      anotherHealth = mainHero.health;
   }
   .
   .
   .
}
在层次结构中选择MainHero对象并检查Inspector窗口。 您将看到对象名称下的标记。

如上图所示,如果您的标记设置为未标记。 单击Untaged,您将在下拉列表底部看到AddTag。 单击它并添加您自己的标记,并在创建时设置标记

最后,将您在中创建的标记放入

("YOUR MAINHERO OBJECT TAG")

在unity文档中查找GetComponent您的heal变量应该是公共的。使用gencomonpont,您可以在gameobjects中找到类。您还可以使用FindgameObjecname在场景中查找游戏对象。不太明智,但做这项工作。此外,FindComponentOfType将在场景中查找您的类类型以访问其数据。如果您的字段是公共字段或您将其放在[SerializeField]上方,则可以通过将其他组件的引用拖动到编辑器中的字段中,将其附加到其他组件。希望helpsHello和感谢您的回复,我确实喜欢您的示例中显示的内容,但我在Unity NullReferenceException中遇到以下错误:对象引用未设置为对象的实例我已分配了标记,但它显示以下行正在创建错误。anotherHealth=mainHero.health;我已经检查过了,所有内容都写对了,代码本身没有显示错误。@WAYRT您是否已将您的主要英雄的健康设置为公共健康?应该行的,一切都是公开的。我确实在另一个英雄中编辑了主健康状况,然后在另一个第三个脚本中引用,但错误表明问题在于另一个英雄脚本。
("YOUR MAINHERO OBJECT TAG")