有麻烦。找不到我把事情搞砸的地方。如果有人能发现这个问题,我将不胜感激。错误是: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);
}
}
'''
类名后有一个悬空冒号(:
)。由于您没有继承任何类,因此不应在其中使用冒号:
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