首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改访问修饰符

更改访问修饰符
EN

Stack Overflow用户
提问于 2015-11-11 17:57:05
回答 2查看 399关注 0票数 3

我一直在用C#编写代码,并遇到了一些问题。我一直在跟踪本YouTube教程,我有一些错误。在第七行的“步行州代码”中,它写着:

错误CS0507 'WalkingState.ProcessMotion(Vector3)':当重写“public”继承的成员'BaseState.ProcessMotion(Vector3)‘时无法更改访问修饰符

这意味着什么,我该如何解决这个问题?

基本状态代码:

代码语言:javascript
复制
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;
    }
}

步行州代码:

代码语言:javascript
复制
using UnityEngine;
using System.Collections;

public class WalkingState : BaseState
{
    protected override Vector3 ProcessMotion(Vector3 input)
    {
        return input * motor.Speed;
    }
}
EN

回答 2

Stack Overflow用户

发布于 2015-11-11 17:59:37

ProcessMotion在基类中被声明为public。您还需要在派生类中使其为public

而不是:

代码语言:javascript
复制
protected override Vector3 ProcessMotion(Vector3 input)

做:

代码语言:javascript
复制
public override Vector3 ProcessMotion(Vector3 input)
票数 9
EN

Stack Overflow用户

发布于 2015-11-11 18:00:46

错误消息非常清楚:基类的方法标记为public,但是您试图在派生类中将其转换为protected。这是不允许的,它在派生类中也必须是公共的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33656807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档