Trouble with virtual and protected

So I am trying to create my own methods (like Update, Start etc)

I get no errors but nothing happens, here are my classes:

using UnityEngine;
using System.Collections;

public class BeastScript : MonoBehaviour
{



    void Update()
    {
        #region INPUT
        //KEYS
        if (Input.anyKeyDown)
        {
            OnKeyDown(Input.inputString);
        }

        if (Input.anyKey)
        {
            OnKeyHold(Input.inputString);
        }
        //MOUSE
        if (Input.GetMouseButtonDown(0))
        {
            OnMouseClick(0);
        }

        if (Input.GetMouseButtonDown(1))
        {
            OnMouseClick(1);
        }

        if (Input.GetMouseButtonDown(2))
        {
            OnMouseClick(2);
        }

        if (Input.GetMouseButton(0))
        {
            OnMouseClickHold(0);
        }

        if (Input.GetMouseButton(1))
        {
            OnMouseClickHold(1);
        }

        if (Input.GetMouseButton(2))
        {
            OnMouseClickHold(2);
        }

        if (Input.GetMouseButtonUp(0))
        {
            OnMouseRelease(0);
        }

        if (Input.GetMouseButtonUp(1))
        {
            OnMouseRelease(1);
        }

        if (Input.GetMouseButtonUp(2))
        {
            OnMouseRelease(2);
        }
        #endregion INPUT



    }


    public virtual void OnKeyDown(string key) { }
    public virtual void OnKeyHold(string key) { }
    public virtual void OnMouseClick(int button) { }
    public virtual void OnMouseClickHold(int button) { }
    public virtual void OnMouseRelease(int button) { }

}

Here is the derived

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using Beast;
using Beast.BUI;
using Beast.Extensions;
using System;
using UnityEngine.Events;

using Beast.Web;

public class Tester : BeastScript {

    void Start()
    {

    }

    void OnGUI ()
    {
        
    }

	void Update ()
    {
        
    }

    public override void OnMouseClick(int button)
    {
        base.OnMouseClick(button);

        if (button == 0)
        {
            print("Works");
        }
    }
}

Looks like your derived Update (and Start/OnGUI) method isn’t calling it’s base.Update(). I haven’t tested it, though. :wink:

BeastScript Update method should also be virtual . then every thing must be fine .
beware if you want to use update function of derived class you must override it and put base.update() in it.