如何停止每帧调用一次更新功能



我希望脚本只调用标记一次。不向控制台发送垃圾邮件。

// Update is called once per frame
void Update()
{
StateManager sm = TrackerManager.Instance.GetStateManager();
IEnumerable<TrackableBehaviour> tbs = sm.GetActiveTrackableBehaviours();
foreach (TrackableBehaviour tb in tbs)
{
string name = tb.TrackableName;
Debug.Log("call update " + name);
targetname.GetComponent<Text>().text = name;

if (name == markerName)
{
detail.gameObject.SetActive(true);
panel.gameObject.SetActive(true);
logoImage.gameObject.SetActive(true);
detail.GetComponent<Text>().text =Data + "n" + stringB;
StartCoroutine(LoadSpriteImageFromUrl(photo));
}
else
{
}
}
}

这是我的代码。

我对Vuforia一无所知,但您描述的行为很容易实现。

让我们调用应该只运行一次的代码初始化代码。 然后,您可以创建一个仅执行此代码的单独方法。要确保只执行一次,您可以使用标志来检查它是否已执行。然后将一个简单的逻辑放入您的更新方法中:如果初始化代码尚未执行,请执行,如果已执行,请跳过它。

public class ContainingClass
{
public static bool InitRun = false;
public void Init() //Executed once on the first update call
{

}
public void Update() //Executed on every frame
{
if(!InitRun)
{
Init(); //Call intialization code
InitRun = true; //set flag that initialization has been run
}
}
}

这至少应该为您描述的 bevahiour 提供合适的解决方案。

我还建议在框架中搜索内置的初始化功能,因为它应该提供这些功能。

最新更新