首页 > 解决方案 > 在检查它是否是子对象而不是父对象之后,如何使用特定子对象的参数/函数?

问题描述

我正在尝试为一个游戏制作一个系统,其中我有一个名为 Scene 的类,它存储诸如 GameObjects 之类的东西。我创建了一个名为 GameScene 的子类,它还存储关卡、整数列表和 Player。最重要的是,我有一个静态对象来存储当前存在的场景。

现在我想制作一个游戏内调试器:

  1. 检查当前场景是否为 GameScene
  2. 如果这是真的,显示一些有关播放器速度等的信息。

然而,这带来了一个问题,因为在我检查当前场景是否是 GameplayScene 之后,我仍然必须让编译器相信我正在处理 GameplayScene,而不仅仅是任何旧场景。我该怎么做呢?

我假设(并希望)这是一个滑稽可笑的简单答案,但我只是没有找到合适的术语。

这就是我想做的事情。

if (InputManager.doLevelStuff && SceneManager.currentScene is GameScene)
    SceneManager.currentScene.level.DoLevelStuff();
}

当然这会产生错误,因为 Scene 不包含级别的定义。

标签: c#

解决方案


我不确定我是否跟随你,但为了使用 IS 调用派生类型的方法是不够的,你需要强制转换为特定的类 ((GameScene)SceneManager.currentScene.level).DoLevelStuff() 更好的方法是使用 as 并检查 null


推荐阅读