Unity 在GUI上动态绘制按钮并绑定不同事件
时间: 2024-03-08 19:49:58 浏览: 118
动态生成按钮加事件
要在Unity中动态绘制GUI按钮并绑定不同事件,可以使用`GUILayout.Button()`方法和`GUILayout.Toggle()`方法。这些方法都可以用于创建按钮,但是它们的用法略有不同。
以下是一个简单的示例代码,可以在GUI中动态创建两个按钮并分别绑定不同的事件:
```csharp
using UnityEngine;
public class MyScript : MonoBehaviour
{
private bool isButton1Clicked = false;
private bool isButton2Clicked = false;
private void OnGUI()
{
GUILayout.BeginArea(new Rect(10, 10, 200, 100));
// 创建第一个按钮
if (GUILayout.Button("Button 1"))
{
isButton1Clicked = !isButton1Clicked;
// 执行Button 1的事件
if (isButton1Clicked)
{
Debug.Log("Button 1 clicked!");
}
else
{
Debug.Log("Button 1 unclicked!");
}
}
// 创建第二个按钮
isButton2Clicked = GUILayout.Toggle(isButton2Clicked, "Button 2");
if (isButton2Clicked)
{
// 执行Button 2的事件
Debug.Log("Button 2 clicked!");
}
else
{
Debug.Log("Button 2 unclicked!");
}
GUILayout.EndArea();
}
}
```
在上面的代码中,我们使用了`GUILayout.Button()`方法和`GUILayout.Toggle()`方法来动态创建了两个按钮。我们使用`GUILayout.BeginArea()`和`GUILayout.EndArea()`方法分别指定了按钮的位置和大小。我们还为每个按钮分配了不同的事件,并使用了`Debug.Log()`方法输出了事件的信息。
需要注意的是,`OnGUI()`方法是在GUI线程中运行的,因此必须避免在其中执行任何耗时的操作。如果需要执行耗时的操作,应该将其移到主线程中。
阅读全文