如何通过GetComponent从另一个游戏对象中的另一个脚本访问变量?

双码

我已经搜索了一下,但无法正常工作。我想我只是不知道正确的语法,或者只是不太了解上下文。

我有一个包含公共int的BombDrop脚本。我让它与公共静态函数一起工作,但是有人说这是一种非常不好的编程习惯,我应该学习封装。这是我写的:

BombDrop脚本:

 <!-- language: c# -->

 public class BombDrop : MonoBehaviour {

 public GameObject BombPrefab;

 //Bombs that the player can drop
 public int maxBombs = 1;


 // Update is called once per frame
 void Update () {

 if (Input.GetKeyDown(KeyCode.Space)){

         if(maxBombs > 0){
         DropBomb();

         //telling in console current bombs
         Debug.Log("maxBombs = " + maxBombs);
         }
   }


 }    

 void DropBomb(){

     // remove one bomb from the current maxBombs
     maxBombs -= 1;

     // spawn bomb prefab
     Vector2 pos = transform.position;
     pos.x = Mathf.Round(pos.x);
     pos.y = Mathf.Round(pos.y);
     Instantiate(BombPrefab, pos, Quaternion.identity);

 }
}

因此,我希望附加到prefabgameobject Bombprefab的Bomb脚本访问BombDrop中的maxBombs整数,以便在炸弹销毁时向BombDrop中的maxBombs添加+ 1。

这是需要参考的炸弹脚本。

 public class Bomb : MonoBehaviour {
 // Time after which the bomb explodes
 float time = 3.0f;

 // Explosion Prefab
 public GameObject explosion;

 BoxCollider2D collider;

 private BombDrop BombDropScript;




 void Awake (){

     BombDropScript = GetComponent<BombDrop> ();
 }

 void Start () {

     collider = gameObject.GetComponent<BoxCollider2D> ();

     // Call the Explode function after a few seconds
     Invoke("Explode", time);

 }

 void OnTriggerExit2D(Collider2D other){

     collider.isTrigger = false;
 }

 void Explode() {
     // Remove Bomb from game
     Destroy(gameObject);

     // When bomb is destroyed add 1 to the max 
     // number of bombs you can drop simultaneously .
     BombDropScript.maxBombs += 1;

     // Spawn Explosion
     Instantiate(explosion,
                 transform.position,
                 Quaternion.identity);

在文档中它说应该像

BombDropScript = otherGameObject.GetComponent<BombDrop>();

但这是行不通的。也许我只是不了解这里的语法。是否应该说otherGameObject?原因是什么都不做。我仍然在explode()中的BombDropScript.maxBombs上收到错误:“未设置对象引用执行对象的实例”

apxcode

您需要找到包含计划获取引用的脚本组件的GameObject。确保GameObject已经在场景中,否则Find将返回null

 GameObject g = GameObject.Find("GameObject Name");

然后,您可以获取脚本:

 BombDrop bScript = g.GetComponent<BombDrop>();

然后,您可以访问脚本的变量和函数。

 bScript.foo();

我刚刚意识到,前几天我回答了一个非常类似的问题,请在此处检查:不知道如何获得敌人的健康


自从我已经回答过之后,我将在您的问题上稍作讨论。

您的代码正在执行的操作是说“在我的GameObject中查找BombDropScript,大多数情况下脚本不会附加到相同的GameObject。

也可以使用setter和getter maxBombs

public class BombDrop : MonoBehaviour
{
    public void setMaxBombs(int amount)
    {
        maxBombs += amount;
    }

    public int getMaxBoms()
    {
        return maxBombs;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Unity3d:通过GetComponent错误从另一个脚本访问类

来自分类Dev

如何从另一个类访问对象变量?

来自分类Dev

从另一个函数访问对象中的变量

来自分类Dev

尝试访问另一个GameObject中的另一个脚本

来自分类Dev

从另一个脚本源访问变量

来自分类Dev

从另一个脚本源访问变量

来自分类Dev

如何使用str变量在另一个脚本中执行一个脚本?

来自分类Dev

如何从jQuery中的另一个对象访问在一个对象中声明的变量

来自分类Dev

如果要访问的脚本未附加到同一个游戏对象,我如何访问另一个脚本函数?

来自分类Dev

如何在另一个JavaScript中访问一个JavaScript中的变量?

来自分类Dev

如何通过引用从另一个变量中删除字典中的对象

来自分类Dev

如何从一个脚本到另一个脚本获取游戏对象数组的值?

来自分类Dev

Android-一个Activity如何访问另一个Activity中的变量?

来自分类Dev

Android-一个Activity如何访问另一个Activity中的变量?

来自分类Dev

如何通过在Javascript另一个类的实例访问另一个类中的方法

来自分类Dev

如何通过PHP中的另一个变量引用对象?

来自分类Dev

如何从另一个对象的对象引用变量?

来自分类Dev

从另一个脚本访问类中的类?

来自分类Dev

从另一个脚本访问类中的类?

来自分类Dev

如何从另一个脚本导入变量?

来自分类Dev

如何从另一个脚本导入变量?

来自分类Dev

验证另一个bash脚本中的变量

来自分类Dev

如何访问另一个视图内的变量?

来自分类Dev

如何从另一个输出访问变量

来自分类Dev

如何访问另一个变量C#

来自分类Dev

如何从另一个文件访问变量?

来自分类Dev

在Swift中从另一个ViewController访问变量

来自分类Dev

从Java中的另一个类访问变量

来自分类Dev

在JAVA中访问另一个类变量

Related 相关文章

  1. 1

    Unity3d:通过GetComponent错误从另一个脚本访问类

  2. 2

    如何从另一个类访问对象变量?

  3. 3

    从另一个函数访问对象中的变量

  4. 4

    尝试访问另一个GameObject中的另一个脚本

  5. 5

    从另一个脚本源访问变量

  6. 6

    从另一个脚本源访问变量

  7. 7

    如何使用str变量在另一个脚本中执行一个脚本?

  8. 8

    如何从jQuery中的另一个对象访问在一个对象中声明的变量

  9. 9

    如果要访问的脚本未附加到同一个游戏对象,我如何访问另一个脚本函数?

  10. 10

    如何在另一个JavaScript中访问一个JavaScript中的变量?

  11. 11

    如何通过引用从另一个变量中删除字典中的对象

  12. 12

    如何从一个脚本到另一个脚本获取游戏对象数组的值?

  13. 13

    Android-一个Activity如何访问另一个Activity中的变量?

  14. 14

    Android-一个Activity如何访问另一个Activity中的变量?

  15. 15

    如何通过在Javascript另一个类的实例访问另一个类中的方法

  16. 16

    如何通过PHP中的另一个变量引用对象?

  17. 17

    如何从另一个对象的对象引用变量?

  18. 18

    从另一个脚本访问类中的类?

  19. 19

    从另一个脚本访问类中的类?

  20. 20

    如何从另一个脚本导入变量?

  21. 21

    如何从另一个脚本导入变量?

  22. 22

    验证另一个bash脚本中的变量

  23. 23

    如何访问另一个视图内的变量?

  24. 24

    如何从另一个输出访问变量

  25. 25

    如何访问另一个变量C#

  26. 26

    如何从另一个文件访问变量?

  27. 27

    在Swift中从另一个ViewController访问变量

  28. 28

    从Java中的另一个类访问变量

  29. 29

    在JAVA中访问另一个类变量

热门标签

归档