我希望脚本只调用标记一次。而不是向控制台发送垃圾邮件。
// 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
{
}
}
}这是我的代码。
发布于 2019-10-01 18:26:40
我对Vuforia一无所知,但你所描述的行为很容易实现。
让我们调用应该只在初始化代码中运行一次的代码。然后,您可以创建一个单独的方法,该方法只执行此代码。为了确保只执行一次,您可以使用一个标志来检查它是否已经执行过。然后在update方法中加入一个简单的逻辑:如果初始化代码还没有执行,那么就跳过它。
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
}
}
}这至少应该为你所描述的行为提供一个合适的解决方案。
我还建议在框架中搜索内置的初始化功能,因为它应该提供这些功能。
https://stackoverflow.com/questions/58181110
复制相似问题