Unity 鼠标右键生成预制体:协程实现
以下是一个使用协程在鼠标右键点击位置生成预制体的 Unity 脚本示例:
using UnityEngine;
public class SpawnPrefabOnRightClick : MonoBehaviour
{
public GameObject prefab; // 需要生成的预制体
private void Update()
{
if (Input.GetMouseButtonDown(1))
{
Vector3 spawnPosition = GetMouseWorldPosition();
StartCoroutine(SpawnPrefab(spawnPosition));
}
}
private Vector3 GetMouseWorldPosition()
{
Vector3 mousePosition = Input.mousePosition;
mousePosition.z = -Camera.main.transform.position.z;
return Camera.main.ScreenToWorldPoint(mousePosition);
}
private IEnumerator SpawnPrefab(Vector3 spawnPosition)
{
GameObject newPrefab = Instantiate(prefab, spawnPosition, Quaternion.identity);
yield return null; // 等待一帧,确保生成的预制体已经被实例化
// 在这里可以添加其他需要等待的逻辑
yield break; // 协程结束
}
}
这段脚本首先在 Update 方法中检测鼠标右键点击事件。当检测到右键点击后,获取鼠标在世界坐标系中的位置,并调用 SpawnPrefab 协程来生成预制体。
GetMouseWorldPosition 方法将鼠标屏幕坐标转换为世界坐标。SpawnPrefab 协程则使用 Instantiate 方法在指定位置生成预制体,并使用 yield return null 来等待一帧,确保预制体已经被实例化。
你可以将以上代码添加到一个空的游戏对象上,然后将需要生成的预制体赋值给 prefab 变量。
原文地址: https://www.cveoy.top/t/topic/pP2f 著作权归作者所有。请勿转载和采集!