簡體   English   中英

在Unity3d中將值傳遞給一個腳本傳遞給另一個腳本

[英]Pass Value to One Script to Another in Unity3d

目前,我正在嘗試從一個腳本向另一個腳本添加/減去值。 我希望腳本一為腳本二增加+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 ";
        }
    }
}

如果您要向第二個腳本中添加運行狀況,請將您的health字段聲明為public。 這樣您就可以在第一個腳本中訪問其值。

public int health;

但是我不會那樣做。 通過以下屬性公開此字段:

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

默認情況下,運行狀況將聲明為

private int health;

其他腳本無法訪問私有字段。 您還需要引用第二個腳本。 您可以通過以下方式訪問它:

public DataManager data;

您必須在Unity編輯器的此字段中分配第二個對象。 然后,通過這種方式,您可以通過在第一個腳本中調用data.health += 125來訪問字段health

我不知道Unity中的具體內容,但我認為您也可以通過以下方式調用腳本:

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

獲取其他腳本的另一種方法是像在第一個腳本中那樣調用它:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM