在Unity3d中将值传递给另一个脚本

时间:2016-01-08 18:42:05

标签: c# unity3d send

目前,我正在尝试将值从一个脚本添加/减去另一个脚本。我希望脚本一为脚本2添加+125生命值,但不知道如何。这种情况下没有涉及游戏对象。

脚本一是

using UnityEngine;
using System.Collections;

public class AddHealth : MonoBehaviour {

    int health = 10;

    public void ChokeAdd()

    {
        AddHealthNow();
    }

    public void AddHealthNow()
    {
        health += 125;
        Debug.Log("Added +125 Health");
    }
}

脚本二是

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

namespace CompleteProject
{
    public class DataManager : MonoBehaviour

    {
        public static int depth;        
        public Text BOPPressureText;
        int health = 20;

        void Awake ()

        {
            depth = 0 ;
        }

        void Update ()
        {
            BOPPressureText.text = depth + 7 * (health) + " psi ";
        }
    }
}

1 个答案:

答案 0 :(得分:1)

如果您尝试为第二个脚本添加运行状况,请将您的health字段声明为公开。这样您就可以在第一个脚本中访问它的值。

public int health;

但我不会那样做。通过以下属性公开此字段:

public int Health 
{
 get 
   {
    return this.health;
   }
 set 
   {
    this.health = value;
   }
}

默认情况下,运行状况将声明为

private int health;

其他脚本无法访问私有字段。 您还需要引用第二个脚本。您可以通过以下方式访问:

public DataManager data;

您必须在Unity Editor中将第二个对象分配到此字段中。然后 这样,您就可以通过在第一个脚本中调用health来访问字段data.health += 125

我不知道Unity中的具体内容,但我认为您也可以通过以下方式调用您的脚本:

DataManager data = GetComponent<DataManager>();
data.health += 125;

获取其他脚本的其他方法就像在第一个脚本中那样调用它:

var secondScript = GameObject.FindObjectOfType(typeof(DataManager)) as DataManager;
secondScript.health += 125;