gpt4 book ai didi

c# - 如何在 Unity3D ARToolKit 6 中为 OnMarkerFound 注册事件?

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:27 25 4
gpt4 key购买 nike

我在这里学习这个教程

https://github.com/artoolkit/ar6unity-wiki/wiki/Setting-Up-Your-First-ARToolKit-for-Unity-Scene

我需要注册来自标记的事件,以便它触发 OnMarkerFound。以下帖子已过时

OnMarkerFound event not getting called - Unity3D ARToolKit

https://archive.artoolkit.org/documentation/doku.php?id=6_Unity:unity_scripts

我读了 AAREventReceiver.cs 文件,它说的很模糊:

using UnityEngine;

/// <summary>
/// Any object that implements IAREventReceiver is eligable to register for tracking
/// events from any ARTrackable object.
/// To register with an ARTrackable:
/// arTrackedMarker.eventReceivers.add(this);
/// </summary>
///
public abstract class AAREventReceiver : MonoBehaviour {
public abstract void OnMarkerFound(ARTrackable marker);
public abstract void OnMarkerTracked(ARTrackable marker);
public abstract void OnMarkerLost(ARTrackable marker);
}

例如,我在任何地方都找不到IAREventReceiver。另外,我应该把 arTrackedMarker.eventReceivers.add(this); 放在哪里?

然后我查看我的 AR Trackable 对象以注册事件接收器。 Assets 列表显示 none 尽管我有许多 GameObjects 可用于注册事件。

enter image description here

坦率地说,我不知道如何在此处注册 v6 中的事件。即使这个文档也不准确

https://archive.artoolkit.org/documentation/doku.php?id=6_Unity:unity_scripts

能指点一下吗?谢谢。

最佳答案

AAREventReceiver.cs 中的文档是错误的。它应该说:

“任何实现AAREventReceiver 的对象都是合格的(...)”

话虽如此。您需要编写包含这些函数实现的自己的脚本:

public abstract void OnMarkerFound(ARTrackable marker);
public abstract void OnMarkerTracked(ARTrackable marker);
public abstract void OnMarkerLost(ARTrackable marker);

并让它扩展 AAREventReceiver:

public class MyEventReceiver : AAREventReceiver {
public abstract void OnMarkerFound(ARTrackable marker){
//log OnMarkerFound
}
public abstract void OnMarkerTracked(ARTrackable marker){
//log OnMarkerTracked
}
public abstract void OnMarkerLost(ARTrackable marker){
//log OnMarkerLost
}
}

然后您可以在 EventReceivers-List 中选择 MyEventReceiver 作为“Element 0”(引用您的屏幕截图)

我在这里写了一篇文章:http://augmentmy.world/migratetoartoolkit6关于如何从 ARToolKit5 迁移到 ARToolKit6

希望对你有帮助

===编辑 1:===

你不需要这个

arTrackedMarker.eventReceivers.add(this);

不再使用 ARToolKit6

关于c# - 如何在 Unity3D ARToolKit 6 中为 OnMarkerFound 注册事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45495146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com