【发布时间】:2020-10-13 16:39:20
【问题描述】:
目前,我正在开发一个资源管理游戏,玩家可以在其中选择某种工具,例如火,并将其应用于瓷砖。该脚本应该检查玩家是否使用开火工具单击了“森林”图块,但它实例化了许多草地图块并且位于错误的位置。如何阻止玩家按住点击并仅实例化一个对象?另外,如果有人知道为什么瓷砖出现在命中对象变换上方,那将不胜感激。
void CheckMouseDown()
{
if (Input.GetAxis("Fire1") != 0 && canClick == true)
{
print("yes");
canClick = false;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
// Casts the ray and get the first game object hit
Physics.Raycast(ray, out hit);
if (hit.collider.gameObject.CompareTag("Forest"))
{
if (gamerule.gm.IsBurning == true)
{
Instantiate(meadow, hit.transform);
}
}
}
else
{
canClick = true;
}
}
【问题讨论】:
-
我认为你应该搜索的词是“Singleton”(这里有很多关于 SO 的帖子)。
-
正如@GetOffMyLawn 提到的问题是你在它处于关闭状态时实例化它,你应该只在两种状态(按钮向上/按钮向下)之间转换时才这样做。
标签: c# unity3d instantiation