【问题标题】:I want to use one int in two scripts and decrease it in the second one [closed]我想在两个脚本中使用一个 int 并在第二个脚本中减少它 [关闭]
【发布时间】:2020-08-16 19:38:51
【问题描述】:

我想在两个脚本中使用这个 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 中的木材值。我该怎么做?

【问题讨论】:

    标签: c# unity3d variables int collider


    【解决方案1】:

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

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

    您还可以添加OnMouseDownOnMouseUp 函数来创建按钮(这将只需要碰撞器组件,而不需要按钮组件。

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

    【讨论】:

    • 我在 start void 中写了 Debug.Log("HI") 但它没有在控制台中说任何 hing 它不起作用我写道:{ bool click=false;无效 OnMouseDown() { 点击 = true; } void Update() { if (clicking == true) { Debug.Log("clicking"); } }
    • 你有一个碰撞器连接到游戏对象吗?我说的两种方法都应该单独完成。但是,您还提到 void Start 不起作用,是附加到游戏对象(即在场景中)的脚本。
    • 我添加了 public new GameObject gameObject;但是在cosole中没有说任何其他代码都是一样的
    • 我使用了其他解决方案Button按钮;公共新游戏对象游戏对象;无效更新() { button.onClick.AddListener(onclick); } void onclick() { 销毁(gameObject); } 但对象没有得到驱逐舰
    • 第一。您正在创建一个名为“gameObject”的新游戏对象。通常,gameObject 将引用脚本设置的对象,但是您已使用新的 gameObject 将其重置。尝试使用 this.gameObject 销毁按钮。其次,将button.onClick.AddListener(onclick); 放在void Start() 中,否则按钮会不断从按钮添加一个监听器到void。最后,尝试在 onclick 函数中放一个 debug.log 看看它是否正在运行。
    【解决方案2】:

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

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

    buttonVariable.onClick.AddListener(OnButtonDoSomething);
    

    使用lambda expresion 将是:

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

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

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

    private void OnButtonDoSomething()
    {
        buttonGotClicked = true;
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-30
      • 2018-07-10
      • 2021-01-15
      • 1970-01-01
      • 2023-02-08
      • 2012-10-02
      • 1970-01-01
      • 2011-10-10
      相关资源
      最近更新 更多