我一直在用C#编写代码,并遇到了一些问题。我一直在跟踪本YouTube教程,我有一些错误。在第七行的“步行州代码”中,它写着:
错误CS0507 'WalkingState.ProcessMotion(Vector3)':当重写“public”继承的成员'BaseState.ProcessMotion(Vector3)‘时无法更改访问修饰符
这意味着什么,我该如何解决这个问题?
基本状态代码:
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;
}
}发布于 2015-11-11 17:59:37
ProcessMotion在基类中被声明为public。您还需要在派生类中使其为public。
而不是:
protected override Vector3 ProcessMotion(Vector3 input)做:
public override Vector3 ProcessMotion(Vector3 input)发布于 2015-11-11 18:00:46
错误消息非常清楚:基类的方法标记为public,但是您试图在派生类中将其转换为protected。这是不允许的,它在派生类中也必须是公共的。
https://stackoverflow.com/questions/33656807
复制相似问题