将函数传递给另一个脚本

时间:2019-03-30 19:29:17

标签: c# unity3d

我是一个初学者,我需要一些帮助才能将一个脚本上的功能传递给另一个脚本,以便可以使用他的值。首先,我有一个名为“敌人”的课程,我在其中计算被杀死的敌人,然后我有了一个脚本,该脚本允许玩家使用门进入下一个级别。所以我想在玩家杀死X个敌人后使用计数器“打开”门。 如何传递计数器值?谢谢。

public class Enemies : MonoBehaviour {

    public GameObject enemy;
    public int health = 100;
    public int deathCounter = 0;

    public void TakeDamage(int damage)
    {
        health -= damage;
        if (health <= 0)
        {

            Destroy(enemy);
            deathCounter++;
        }
    }
}

public class nextlevel : MonoBehaviour {
    public Enemies deadcounter;
    public int index;

    private void OnTriggerEnter2D(Collider2D other)
    {
        if(other.CompareTag("Player"))
        {

            SceneManager.LoadScene(1);

        }    
    }     
}

1 个答案:

答案 0 :(得分:1)

为此,您需要引用脚本。这是两种简单的获取方法:

1)创建一个公共变量并在检查器中分配它

您可以创建类型为Ennemies的公共变量,也可以创建私有变量并对其进行序列化。

public Ennemies yourScript;

[SerializeField]
private Ennemies _yourScript;`

然后,您应该在检查器中看到对脚本的空引用。只需将包含您脚本的GameObject拖到空白位置,它将自动创建对该脚本的引用。

Empty component

Assigned component


2)从脚本中的GameObject中提取组件

您可以使用GetComponent<>()从包含脚本的GameObject中提取脚本。您可以通过孩子,父母或第一种方法获得对该对象的引用。

GameObject ennemy;
Enemies yourScript;

yourScript = ennemy.GetComponent<Enemies>();

从脚本中获取值

一旦引用了脚本,就可以简单地将值作为存储脚本的变量的属性来访问。 deathCounter是一个公共变量,您可以随时随地读取和修改它。

int counter = yourScript.deathCounter;  
相关问题