该脚本需要从MonoBehaviour派生,不能接受参数

时间:2019-09-15 11:35:13

标签: c# unity3d

我在Unity中有一个项目,也是C#的新项目。问题是我出错了。脚本需要从MonoBehaviour派生。我明白这是什么意思,但是当我使用MonoBehaviour时,会收到大量这样的错误:

Errors in console

如果有人能解释我在做什么错,将非常高兴-谢谢stackoverflow的好人!

每个脚本都连接到BaseWindow

命名空间BlGame.View {     公共抽象类BaseWindow     {         受保护的Transform mRoot;

    protected EScenesType mScenesType; 
    protected string mResName;         
    protected bool mResident;          
    protected bool mVisible = false;   



    public abstract void Init();


    public abstract void Realse();


    protected abstract void InitWidget();


    protected abstract void RealseWidget();


    protected abstract void OnAddListener();


    protected abstract void OnRemoveListener();


    public abstract void OnEnable();


    public abstract void OnDisable();


    public virtual void Update(float deltaTime) { }


    public EScenesType GetScenseType()
    {
        return mScenesType;
    }


    public bool IsVisible() { return mVisible;  }


    public bool IsResident() { return mResident; }


    public void Show()
    {
        if (mRoot == null)
        {
            if (Create())
            {
                InitWidget();
            }
        }

        if (mRoot && mRoot.gameObject.activeSelf == false)
        {
            mRoot.gameObject.SetActive(true);

            mVisible = true;

             OnEnable();

            OnAddListener();
        }
    }


    public void Hide()
    {
        if (mRoot && mRoot.gameObject.activeSelf == true)
        {
            OnRemoveListener();
            OnDisable();

            if (mResident)
            {
                mRoot.gameObject.SetActive(false);
            }
            else
            {
                RealseWidget();
                Destroy();
            }
        }

        mVisible = false;
    }

    //预加载
    public void PreLoad()
    {
        if (mRoot == null)
        {
            if (Create())
            {
                InitWidget();
            }
        }
    }

    //延时删除
    public void DelayDestory()
    {
        if (mRoot)
        {
            RealseWidget();
            Destroy();
        }
    }


    private bool Create()
    {
        if (mRoot)
        {
            Debug.LogError("Window Create Error Exist!");
            return false;
        }

        if (mResName == null || mResName == "")
        {
            Debug.LogError("Window Create Error ResName is empty!");
            return false;
        }

        if (GameMethod.GetUiCamera.transform== null)
        {
            Debug.LogError("Window Create Error GetUiCamera is empty! WindowName = " + mResName);
            return false;
        }

        GameObject obj = LoadUiResource.LoadRes(GameMethod.GetUiCamera.transform, mResName);

        if (obj == null)
        {
            Debug.LogError("Window Create Error LoadRes WindowName = " + mResName);
            return false;
        }

        mRoot = obj.transform;

        mRoot.gameObject.SetActive(false);

        return true;
    }

    //销毁窗体
    protected void Destroy()
    {
        if (mRoot)
        {
            LoadUiResource.DestroyLoad(mRoot.gameObject);
            mRoot = null;
        }
    }


    public Transform GetRoot()
    {
        return mRoot;
    }

}

}

类似这样的东西:

 public class UIGuideWindow : BaseWindow
{

    public UIGuideWindow()
    {
        //mScenesType = EScenesType.EST_Login;
        //mResName = GameConstDefine.UIGuideRestPath;
        //mResident = false;
    }

1 个答案:

答案 0 :(得分:3)

Unity Update Function不能具有任何这样的参数:Update(float deltaTime),这不是虚幻的引擎:))

要解决此问题,请删除float deltaTime,然后在函数实现本身内部使用Time.deltaTime