using System;
using System.Reflection;
private static bool IsOverrideMethod(Type type, string methodName)
{
var method = type.GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic);
if (method == null)
return false;
return method.DeclaringType != method.GetBaseDefinition().DeclaringType;
}
確認コード
using UnityEngine;
public class SampleMonoBehaviour : MonoBehaviour
{
private class BaseClass
{
protected virtual void BaseMethod()
{
Debug.Log("CaseClass");
}
}
private class Class1 : BaseClass
{
}
private class Class2 : BaseClass
{
protected override void BaseMethod()
{
Debug.Log("Class2");
}
}
private void Awake()
{
var class1 = new Class1();
var class2 = new Class2();
Debug.Log(IsOverrideMethod(class1.GetType(), "BaseMethod"));
Debug.Log(IsOverrideMethod(class2.GetType(), "BaseMethod"));
}
}