提问者:小点点

遇到错误CS1031时出错:应为类型


有麻烦。找不到我把事情搞砸的地方。如果有人能发现这个问题,我将不胜感激。错误是:error CS1031:Type expected我尝试在脚本上运行Unity调试,但没有成功。我真的不觉得有什么问题。

'''
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class AiStateMachine : 
{
    public AiState[] states;
    public AiAgent agent;
    public AiStateId currentState; 

    public AiStateMachine(AiAgent agent)
    {
        this.agent = agent;
        int numStates = System.Enum.Getnames(typeof(AiStateId)).Length;
        states = new AiState[numStates];

    }

    public void RegisterState(AiState state)
    {
        int index = (int)state.GetId();
        states[index] = state;
    }

    public AIStateMachine GetState(AiStateId stateId) 
    {
        int index = (int)stateId;
        return states[index];
    }

    public void Update() 
    {
        GetState(currentState)?.Update(agent);

    }

    public void ChangeState(AiStateId newState)
    {
        GetState(currentState)?.Exit(agent);
        currentState = newState;
        GetState(currentState)?.Enter(agent); 
    }
}
'''

共2个答案

匿名用户

类名后有一个悬空冒号()。由于您没有继承任何类,因此不应在其中使用冒号:

public class AiStateMachine 
{
    // ":" removed here ----^

匿名用户

虽然在这种特殊情况下它不一定有用,但我想说的是,如果你用谷歌搜索错误代码,通常会有一些来自微软的信息来帮助你。以下是此错误的解决方案:

https://docs.microsoft.com/en-us/dotnet/csharp/misc/cs1031

在本例中,尽管看起来您有一个类,该类希望通过在类声明末尾添加冒号而派生出,但后面没有任何信息:

public class AiStateMachine : 

尝试删除冒号或添加类应继承的内容。如果需要,本页还提供了一些关于继承的重要信息:

https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/tutorials/inheritance