C# 我应该在unity中的多个按钮上使用一个脚本,还是为每个按钮创建一个脚本?
我与Unity一起工作,需要有经验的用户的帮助。如果我有两个按钮,我应该使用两个脚本(每个按钮一个)还是两个按钮都使用一个脚本?这在多个按钮的更大范围内是如何应用的?您愿意硬编码每个按钮的功能吗?制作单独的脚本 您愿意为所有按钮编写一个通用脚本吗?制作一个可以从中编辑的脚本。(如果他们都做同样的事情,这可能是更好的选择)C# 我应该在unity中的多个按钮上使用一个脚本,还是为每个按钮创建一个脚本?,c#,unity3d,C#,Unity3d,我与Unity一起工作,需要有经验的用户的帮助。如果我有两个按钮,我应该使用两个脚本(每个按钮一个)还是两个按钮都使用一个脚本?这在多个按钮的更大范围内是如何应用的?您愿意硬编码每个按钮的功能吗?制作单独的脚本 您愿意为所有按钮编写一个通用脚本吗?制作一个可以从中编辑的脚本。(如果他们都做同样的事情,这可能是更好的选择) 请参阅了解后者。这取决于按钮所在的位置。通常,按钮分组在一个面板中。例如,有带按钮的暂停菜单面板(如保存、重新启动游戏按钮)和带按钮的设置菜单。您可以根据这些按钮的操作以及它们
请参阅了解后者。这取决于按钮所在的位置。通常,按钮分组在一个面板中。例如,有带按钮的暂停菜单面板(如保存、重新启动游戏按钮)和带按钮的设置菜单。您可以根据这些按钮的操作以及它们应在何时可见,将它们分组到面板下的其他UI对象中 每个按钮都不需要新脚本。每个场景或菜单面板都需要一个新脚本。因此,每个场景、菜单或面板可能都有一个脚本来处理它们的按钮 您可以使用公共按钮变量,然后使用
onClick
事件为同一面板或菜单上的按钮订阅其单击事件
您可以为每个按钮添加一个功能:
public Button button1;
public Button button2;
public Button button3;
public Button button4;
void OnEnable()
{
//Register Button Events
button1.onClick.AddListener(() => buttonCallBack1());
button2.onClick.AddListener(() => buttonCallBack2());
button3.onClick.AddListener(() => buttonCallBack3());
button4.onClick.AddListener(() => buttonCallBack4());
}
private void buttonCallBack1() { }
private void buttonCallBack2() { }
private void buttonCallBack3() { }
private void buttonCallBack4() { }
或者对所有按钮使用一个函数,然后使用if
语句来处理每个按钮。如果按钮是同一个面板,我通常使用一个功能来分组和处理它们的点击,如下所示:
public Button button1;
public Button button2;
public Button button3;
public Button button4;
void OnEnable()
{
//Register Button Events
button1.onClick.AddListener(() => buttonCallBack(button1));
button2.onClick.AddListener(() => buttonCallBack(button2));
button3.onClick.AddListener(() => buttonCallBack(button3));
button4.onClick.AddListener(() => buttonCallBack(button4));
}
private void buttonCallBack(Button buttonPressed)
{
if (buttonPressed == button1)
{
//Your code for button 1
Debug.Log("Clicked: " + button1.name);
}
if (buttonPressed == button2)
{
//Your code for button 2
Debug.Log("Clicked: " + button2.name);
}
if (buttonPressed == button3)
{
//Your code for button 3
Debug.Log("Clicked: " + button3.name);
}
if (buttonPressed == button4)
{
//Your code for button 4
Debug.Log("Clicked: " + button4.name);
}
}
您甚至不需要命名函数
onClick.AddListener(()=>{/*code here*/})代码>程序员只是将其用作命名函数的包装器,但直接使用委托也可以。