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");
}
}
}
Answer by Fortyseven · Jan 01, 2016 at 12:55 AM
Looks like your derived Update (and Start/OnGUI) method isn't calling it's base.Update()
. I haven't tested it, though. ;)
Yup. The Update() in Tester class is empty and isn't calling any methods. Remove the empty methods in the derived class if those methods are meant to do the same thing as the base class. Later, if you need the derived calss to do something specific in Update etc., use the same protected virtual / protected override approach as in your click methods
Answer by AminAghajoon · Jan 02, 2016 at 12:09 PM
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.
Your answer
Follow this Question
Related Questions
Knowing when a Childobject is hit by Raycast 0 Answers
Black Scrreen after Splash Screen after deploy on HoloLens 1 Answer
Countdown timer... 2 Answers
Loot table problems 1 Answer