C# 如何在Update()中编写一个只调用一次但检查每一帧的代码

C# 如何在Update()中编写一个只调用一次但检查每一帧的代码,c#,unity3d,C#,Unity3d,我的代码执行==>如果playerPointInt==1,则每帧调用pp1 我想做==>如果playerPointInt==1,请调用pp1一次 我该怎么做?您可以将代码放在对象初始化时调用的Awake()函数或对象启用时调用的Start()函数中。这两个函数最多调用一次。这可能不是统一调用的最佳方法,但一个简单的解决方法是在调用pp1时将布尔字段设置为true,然后在该字段为true后再不调用pp1 void Update() { if (playerPointInt == 1)

我的代码执行==>如果playerPointInt==1,则每帧调用pp1

我想做==>如果playerPointInt==1,请调用pp1一次


我该怎么做?

您可以将代码放在对象初始化时调用的Awake()函数或对象启用时调用的Start()函数中。这两个函数最多调用一次。

这可能不是统一调用的最佳方法,但一个简单的解决方法是在调用
pp1
时将布尔字段设置为
true
,然后在该字段为
true
后再不调用
pp1

void Update()
{
    if (playerPointInt == 1)
    {
        pp1();
    }
}

OP正在寻找的是执行方法
pp1()
仅一次,但不断检查
if(playerPointInt==1)
in
Update
Agree,但这不是原始问题的措辞,因此很难说出OP在问什么。我会翻转两个条件以提高效率:
if(!pp1\u调用了&&playerPointInt==1)
如果第一个条件已为false,则不必检查
playerPointInt
,但可以直接跳过代码
bool pp1_called = false;
void Update()
{
    if (playerPointInt == 1 && !pp1_called)
    {
        pp1();
        pp1_called = true;
    }
}