如何在 Unity3D ARToolKit 6 中为 OnMarkerFound 注册事件?
How to register for event in Unity3D ARToolKit 6 for OnMarkerFound?
我在这里学习本教程
https://github.com/artoolkit/ar6unity-wiki/wiki/Setting-Up-Your-First-ARToolKit-for-Unity-Scene
我需要注册来自标记的事件,以便它触发 OnMarkerFound。以下post 已过时
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 对象以注册事件接收器。资产列表显示 none
尽管我有很多游戏对象可用于注册事件。
坦率地说,我不知道如何在此处注册 v6 中的事件。即使这个文档也不准确
https://archive.artoolkit.org/documentation/doku.php?id=6_Unity:unity_scripts
能指点一下吗?谢谢。
AAREventReceiver.cs 中的文档是错误的。它应该说:
"Any object that implements AAREventReceiver is eligible (...)"
话虽如此。您需要编写包含这些函数实现的自己的脚本:
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
}
}
然后你可以select EventReceivers-List中的MyEventReceiver为'Element 0'(参考你的截图)
我在这里写了一篇文章:http://augmentmy.world/migratetoartoolkit6
关于如何从 ARToolKit5 迁移到 ARToolKit6
希望对您有所帮助
===编辑 1:===
你不需要这个
arTrackedMarker.eventReceivers.add(this);
不再使用 ARToolKit6
我在这里学习本教程
https://github.com/artoolkit/ar6unity-wiki/wiki/Setting-Up-Your-First-ARToolKit-for-Unity-Scene
我需要注册来自标记的事件,以便它触发 OnMarkerFound。以下post 已过时
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 对象以注册事件接收器。资产列表显示 none
尽管我有很多游戏对象可用于注册事件。
坦率地说,我不知道如何在此处注册 v6 中的事件。即使这个文档也不准确
https://archive.artoolkit.org/documentation/doku.php?id=6_Unity:unity_scripts
能指点一下吗?谢谢。
AAREventReceiver.cs 中的文档是错误的。它应该说:
"Any object that implements AAREventReceiver is eligible (...)"
话虽如此。您需要编写包含这些函数实现的自己的脚本:
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
}
}
然后你可以select EventReceivers-List中的MyEventReceiver为'Element 0'(参考你的截图)
我在这里写了一篇文章:http://augmentmy.world/migratetoartoolkit6 关于如何从 ARToolKit5 迁移到 ARToolKit6
希望对您有所帮助
===编辑 1:===
你不需要这个
arTrackedMarker.eventReceivers.add(this);
不再使用 ARToolKit6