unity 多个按钮分别加载对应多个预制体 点击许多个不同的按钮加载不同的预制体 点另一个按钮 加载另一个预制体 并替换上一个加载的预制体
时间: 2023-09-04 07:08:43 浏览: 223
你可以使用一个`Dictionary`来存储每个按钮对应的预制体,然后在每个按钮的onClick事件中调用一个公共的函数来加载对应的预制体。当点击另一个按钮时,我们可以使用与上一个问题中相同的公共函数来加载新的预制体并替换上一个加载的预制体。
以下是一个示例脚本:
```
using System.Collections.Generic;
using UnityEngine;
public class ButtonController : MonoBehaviour
{
public Dictionary<Button, GameObject> buttonPrefabMap;
private GameObject currentPrefab;
void Start()
{
buttonPrefabMap = new Dictionary<Button, GameObject>();
// 将每个按钮和对应的预制体添加到字典中
buttonPrefabMap.Add(button1, prefab1);
buttonPrefabMap.Add(button2, prefab2);
buttonPrefabMap.Add(button3, prefab3);
// 加载默认的预制体
currentPrefab = Instantiate(prefab1, transform.parent);
}
public void LoadPrefab(Button button)
{
// 获取按钮对应的预制体
GameObject prefab = buttonPrefabMap[button];
// 销毁当前加载的预制体
Destroy(currentPrefab);
// 加载新的预制体
currentPrefab = Instantiate(prefab, transform.parent);
}
}
```
在这个示例脚本中,我们创建了一个`Dictionary`,用于存储每个按钮和对应的预制体。在`Start()`函数中,我们将每个按钮和对应的预制体添加到字典中,并默认加载`prefab1`预制体。然后,我们创建了一个公共的函数`LoadPrefab()`来加载对应的预制体。在这个函数中,我们首先获取传入的按钮对应的预制体,然后销毁当前加载的预制体`currentPrefab`,最后使用Instantiate函数加载新的预制体并存储在`currentPrefab`变量中。
将这个脚本挂载到每个按钮上,并将对应的预制体分配给`buttonPrefabMap`中的键值对即可。当点击每个按钮时,将对应的按钮作为参数传递给`LoadPrefab()`函数即可。当点击另一个按钮时,也可以使用相同的方式来加载新的预制体并替换上一个加载的预制体。
阅读全文