我想在两个脚本中使用一个 int 并在第二个脚本中减少它

I want to use one int in two scripts and decrease it in the second one

我想在两个脚本中使用这个 int:public int wood; 我希望两个脚本中的 int 值相同。

这是我的第一个脚本:

public class Tree : 
  
MonoBehaviour { public int wood;
    
     private void OnTriggerEnter2D(Collider2D collision)
     {
         wood += 1;
     }
    }

这是我希望木材在其中使用的第二个脚本:

public class Base : MonoBehaviour {

 private void OnTriggerEnter2D(Collider2D collision)
 {
 }
}

我想降低 OnTriggerEnter2D 中的木材价值。我该怎么做?

您可以将按钮组件添加到您的游戏对象。(要在代码中使用此组件,请使用 Button btn = Gameobject.GetComponent<Button>();。要检测按钮上的点击,您可以使用按钮具有的 onclick 事件。

void Start(){
    btn.onClick.AddListener(ButtonClicked);
}
void ButtonClicked(){
    //code
}

你也可以添加OnMouseDown and OnMouseUp函数来创建按钮(这只需要碰撞器组件,而不需要按钮组件。

void OnMouseDown(){
    clicking = true;
}
void OnMouseUp(){
    clicking = false;
}

单击按钮时会引发事件。 所以你需要注册当这个事件触发时你想做什么。

有多种方法,但其中一种可能是:

buttonVariable.onClick.AddListener(OnButtonDoSomething);

使用 lambda expresion 将是:

button.onClick.AddListener(() => OnButtonDoSomething());

因此您需要在任何脚本中的 StartOnEnableAwake 方法上声明它。然后有一个 Button 引用,这样你就可以存储你的 buttonVariable 并最终声明你的方法 OnButtonDoSomething.

为了解决您的问题,您将存储一个名为 buttonGotClicked 的布尔变量,并在您新创建的方法中将此布尔变量设置为:

private void OnButtonDoSomething()
{
    buttonGotClicked = true;
}

那么你可以if(buttonGotClicked)...