【发布时间】:2022-12-17 18:27:16
【问题描述】:
我只想让一个操作可用两次。 例如:
我在键盘上按下 5,Object1 被实例化,但与此同时,计数器增加了 1。 在此之后,我再次按 5,Object1 再次实例化,计数器再次增加 1。 所以,这一次,如果我第三次尝试按 5,什么也没有发生。
应该很容易吧?这就是我的想法,我仍然认为它应该如此简单,但是每次我按 5 时,都会实例化 Object1 并且计数器不会增加。 更具体地说,计数器增加了片刻,在那一刻之后,它重置为 0。
public class Placement : MonoBehaviour
{
public GameObject Object1;
private int count = 0;
void Start()
{
}
void Update()
{
Debug.Log(count);
if ((Input.GetKeyDown(KeyCode.Alpha5)) && count < 2)
{
count = count + 1;
Instantiate(Object1, transform.position, transform.rotation);
this.enabled = false;
}
}
}
我简化了代码只是为了直截了当。 通过控制台(调试)我看到计数在每个周期自动重置为 0...
【问题讨论】:
-
你确定它一直都是同一个
Placement对象吗?如果count被“重置”,那么听起来您正在创建新的Placement对象。 -
您只有一个
Placement对象实例还是正在重新创建。你需要展示你的循环/循环逻辑,这就是关键所在 -
如果
Instantiate在每次按下该键时都在 Object1 类上创建一个新实例,那么它的计数器每次都将初始化为零。您将有两个Object1实例,但只引用一个。 -
此外,您从未实际实例化或创建
object1的对象。 TheInstantiatefunction将克隆(我们可以看到)未初始化的对象object1并返回对克隆对象的引用。