简体   繁体   English

有限 State 机器的问题“错误 CS1503:参数 1:无法从‘UIManager’转换为‘GameStateAbstract’”

[英]Problem with a Finite State Machine "error CS1503: Argument 1: cannot convert from 'UIManager' to 'GameStateAbstract'"

I'm new in Unity.我是 Unity 的新手。 I have started developing a basic game while learning but the following errors arise when trying to chain the states(it's for doing a menu system).我在学习的同时开始开发一个基本游戏,但是在尝试链接状态时出现以下错误(这是为了做一个菜单系统)。

The errors seems to be the same:错误似乎是一样的:

Argument 1: cannot convert from 'UIManager' to 'GameStateAbstract'参数 1:无法从“UIManager”转换为“GameStateAbstract”

Argument 1: cannot convert from 'UIManager' to 'GameStateAbstract' //Happends same file in another line参数 1:无法从“UIManager”转换为“GameStateAbstract”//在另一行中出现相同的文件

Argument 1: cannot convert from 'GameManager' to 'GameStateAbstract'参数 1:无法从“GameManager”转换为“GameStateAbstract”

context(UIManager):上下文(用户界面管理器):

public class UIManager : MonoBehaviour 
{
#UIManager Singletons
private static UIManager _instance;
public static UIManager Instance
{
    get
    {
        if (_instance == null)
        {
            Debug.LogError("UIManager is NULL");
        }
        return _instance;
    }
}

#Fields
public GameObject gameOverPanel;
public GameObject onPlayOverlays;
public GameObject startMenuPanel;

public GameStateAbstract _currentState;

public readonly PlayStates onPlayStates = new PlayStates();
public readonly DeadStates onDeadStates = new DeadStates();
public readonly MenuStates onMenuStates= new MenuStates();

public void TransitionToState(GameStateAbstract state)
{
    _currentState = state;
    _currentState.EnterState(this);
}
public void Context(GameStateAbstract state)
{
    _currentState.Conditions(this);
}
void Awake()
{
    _instance = this;
    TransitionToState(onMenuStates);
}
}

Abstract State:摘要 State:

public abstract class GameStateAbstract 
{
public abstract void EnterState(GameStateAbstract layer); 

public abstract void Update(GameStateAbstract layer);

public abstract void Conditions(GameStateAbstract layer);
}

Concrete State:具体State:

public class MenuStates : GameStateAbstract 
{

public override void Update(GameStateAbstract layer)
{
}
public override void EnterState(GameStateAbstract layer)
{
}
public override void Conditions(GameStateAbstract layer)
{
}
}

GameManager:游戏经理:

public class GameManager : MonoBehaviour
{
void Update()
{
UIManager.Instance.CurrentState.Update(this);
}
}

Thanks for answering!谢谢回答!

public abstract void Update(GameStateAbstract layer);

Your parameter is a 'GameStateAbstract' object but you are passing a 'GameManager' object:您的参数是“GameStateAbstract”object,但您传递的是“GameManager”object:

UIManager.Instance.CurrentState.Update(this);

(this) in this instance is called from GameManager (this) 在这个实例中是从 GameManager 调用的

Make sure you are passing valid parameters or else you will have compile errors.确保传递的参数有效,否则会出现编译错误。

Also abstract class should be extended with a child class and the child class should be used to create objects.同样抽象 class 应该用子 class 扩展,子 class 应该用于创建对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 CS1503 参数 1:无法从 'string' 转换为 'string[*,*]' - CS1503 Argument1: cannot convert from 'string' to 'string[*,*]' C# 错误 CS1503 参数 1:无法从“字符串”转换为“字符” - C# Error CS1503 Argument 1: cannot convert from 'string' to 'Character' 如何解决此错误“错误 CS1503:参数 1:无法从‘void’转换为‘bool’” - How to resolve this error "error CS1503: Argument 1: cannot convert from 'void' to 'bool'" 错误 CS1503:参数 1:无法从“UnityEngine.XR.XRNode”转换为“string” - error CS1503: Argument 1: cannot convert from 'UnityEngine.XR.XRNode' to 'string (Unity3D) 错误 CS1503:参数 2:无法从“浮动”转换为“UnityEngine.Space” - (Unity3D) error CS1503: Argument 2: cannot convert from 'float' to 'UnityEngine.Space' 出现错误 CS1503:“参数 1:无法从 'System.Diagnostics,PerformanceCounter' 转换为 'int' - Getting Error CS1503: "Argument 1: Cannot convert from 'System.Diagnostics,PerformanceCounter' to 'int' 错误CS1503参数1:无法从“ KurseviApp.Kurs”转换为“ KurseviApp.Student” - Error CS1503 Argument 1: cannot convert from 'KurseviApp.Kurs' to 'KurseviApp.Student' 错误 CS1503 参数 1:无法从“NYDStok.BarButtonItem”转换为“DevExpress.XtraBars.BarItem” - Error CS1503 Argument 1: cannot convert from 'NYDStok.BarButtonItem' to 'DevExpress.XtraBars.BarItem' CsvWriter、CS1503 参数 2:无法转换 CultureInfo - CsvWriter, CS1503 Argument 2: cannot convert CultureInfo 错误CS1503:参数“#2”无法将“对象”表达式转换为类型“ UnityEngine.Vector3” - error CS1503: Argument `#2' cannot convert `object' expression to type `UnityEngine.Vector3'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM