C# 我想在两个脚本中使用一个int,在第二个脚本中减少它
我想在两个脚本中使用这个int:C# 我想在两个脚本中使用一个int,在第二个脚本中减少它,c#,unity3d,variables,int,collider,C#,Unity3d,Variables,Int,Collider,我想在两个脚本中使用这个int:public int-wood 我希望两个脚本中的int值相同 这是我的第一个脚本: public class Tree : MonoBehaviour { public int wood; private void OnTriggerEnter2D(Collider2D collision) { wood += 1; } } 这是我的第二个脚本,我希望在其中使用木材: public cl
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();
。若要检测对按钮的单击,可以使用按钮具有的事件
void Start(){
btn.onClick.AddListener(按钮单击);
}
void按钮单击(){
//代码
}
还可以添加和函数来创建按钮(这只需要碰撞器组件,而不需要按钮组件)
void OnMouseDown(){
clicking = true;
}
void OnMouseUp(){
clicking = false;
}
单击按钮时,它会抛出一个事件。
因此,您需要注册在触发此事件时要执行的操作
有多种方法,但其中一种可能是:
buttonVariable.onClick.AddListener(OnButtonDoSomething);
使用将是:
因此,您需要在任何脚本中的Start
、OnEnable
或Awake
方法上声明此项。然后使用按钮
引用,以便存储按钮变量
,最后声明方法onbuttondooming
为了适应您的问题,您将存储一个名为buttonGotClicked
的布尔变量,并在新创建的方法中设置此布尔值,如下所示:
private void OnButtonDoSomething()
{
buttonGotClicked = true;
}
然后您可以执行if(buttonGotClicked).
我在start void中编写了Debug.Log(“HI”),但在控制台中它没有说任何东西,我编写了:{bool clicking=false;void OnMouseDown(){clicking=true;}void Update(){if(clicking==true){Debug.Log(“clicking”);}}}游戏对象是否附加了碰撞器?我说的两种方法都应该单独执行。但是,您还提到void Start不起作用,脚本是否附加到游戏对象(即场景中的)上。我添加了public new GameObject GameObject;但是它在cosole中没有说任何东西。其他代码是sami使用的其他解决方案按钮;public new GameObject GameObject;void Update(){Button.onClick.AddListener(onClick);}void onClick(){Destroy(GameObject);}但是该对象没有首先得到destroyerFirst。您正在创建一个名为“gameobject”的新gameobject。通常gameobject会引用脚本设置的对象,但是您已经用新gameobject重置了它。尝试使用this.gameobject来销毁按钮。其次,将按钮.onClick.AddListener(onClick);
放入void Start()
,否则该按钮将继续将侦听器从该按钮添加到空中。最后,尝试将debug.log放入onclick函数中,查看它是否正在运行。
private void OnButtonDoSomething()
{
buttonGotClicked = true;
}