C#函数覆盖

时间:2016-03-18 08:16:01

标签: c# unity3d polymorphism override vuforia

我使用vuforia sdk来跟踪2d标记。现在我可以处理标记检测并丢失。 Vuforia sdk有一个.cs文件。它的内容:

namespace Vuforia
{
    public class DefaultTrackableEventHandler : MonoBehaviour,
                                                ITrackableEventHandler
    {
        private TrackableBehaviour mTrackableBehaviour;
        void Start()
        { ... }

        public void OnTrackableStateChanged(
                                        TrackableBehaviour.Status previousStatus,
                                        TrackableBehaviour.Status newStatus)
        {
            ....
        }
    }
}

我尝试覆盖OnTrackableStateChanged功能。所以我创建了一个新的.cs文件。

public class ImageTargetScript : DefaultTrackableEventHandler {
     public void OnTrackableStateChanged(
                                            TrackableBehaviour.Status previousStatus,
                                            TrackableBehaviour.Status newStatus)
    {
         Debug.Log("**OVERRIDE FUNCTION**");
    }
}

我将新的.cs文件拖到游戏对象上。当我在团结中运行此代码时,我不会将输出文本视为" OVERRIDE FUNCTION"。

我的错是什么?如何覆盖此功能?

1 个答案:

答案 0 :(得分:2)

基类中的OnTrackableStateChanged应标记为virtual,因此可以覆盖它(现在它不能,您应该在IDE中看到有关此内容的警告)。覆盖方法中应包含override关键字:

public virtual void OnTrackableStateChanged(...) { }

public override void OnTrackableStateChanged(...) { }