C# 更改访问修饰符
我一直在用C#编写代码,遇到了一些问题。我一直在跟踪,我有一些错误。在步行状态代码的第七行,它说: 错误CS0507“WalkingState.ProcessMotion(Vector3)”:重写“public”继承成员“BaseState.ProcessMotion(Vector3)”时无法更改访问修饰符 这意味着什么?我如何解决这个问题 基本状态代码:C# 更改访问修饰符,c#,unity3d,C#,Unity3d,我一直在用C#编写代码,遇到了一些问题。我一直在跟踪,我有一些错误。在步行状态代码的第七行,它说: 错误CS0507“WalkingState.ProcessMotion(Vector3)”:重写“public”继承成员“BaseState.ProcessMotion(Vector3)”时无法更改访问修饰符 这意味着什么?我如何解决这个问题 基本状态代码: using UnityEngine; using System.Collections; public abstract class Ba
using UnityEngine;
using System.Collections;
public abstract class BaseState : MonoBehaviour
{
protected BaseMotor motor;
#region baseState implementation
public virtual void Construct()
{
motor = GetComponent<BaseMotor>();
}
public virtual void Destruct ()
{
Destroy(this);
}
public virtual void Transition ()
{
}
#endregion
public abstract Vector3 ProcessMotion(Vector3 input);
public virtual Quaternion ProcessRotation(Vector3 input)
{
return transform.rotation;
}
}
using UnityEngine;
using System.Collections;
public class WalkingState : BaseState
{
protected override Vector3 ProcessMotion(Vector3 input)
{
return input * motor.Speed;
}
}
ProcessMotion
在基类中声明为public
。您还需要在派生类中将其设置为公共
而不是:
protected override Vector3 ProcessMotion(Vector3 input)
做:
错误消息非常清楚:基类将方法标记为
public
,但您试图在派生类中将其更改为protected
。这是不允许的,它在派生类中也必须是public。当您从基类使用public时,不能使用protected
public override Vector3 ProcessMotion(Vector3 input)