出现错误 CS1955:不可调用的成员“SceneManager”不能像方法一样使用
Posted
技术标签:
【中文标题】出现错误 CS1955:不可调用的成员“SceneManager”不能像方法一样使用【英文标题】:Getting error CS1955: Non-invocable member 'SceneManager' cannot be used like a method 【发布时间】:2022-01-16 06:39:46 【问题描述】:我试图让场景在玩家触发失败条件时重新加载(通过 dieieng),以创建各种检查点系统。这个游戏是 FPS 顺便说一句,以防万一。
以下是相关代码:
string m_SceneToLoad;
.
void Update()
if (gameIsEnding)
float timeRatio = 1 - (m_TimeLoadEndGameScene - Time.time) / endSceneLoadDelay;
endGameFadeCanvasGroup.alpha = timeRatio;
AudioUtility.SetMasterVolume(1 - timeRatio);
// See if it's time to load the end scene (after the delay)
if (Time.time >= m_TimeLoadEndGameScene)
SceneManager.LoadScene(m_SceneToLoad);
gameIsEnding = false;
else
if (m_ObjectiveManager.AreAllObjectivesCompleted())
EndGame(true);
// Test if player died
if (m_Player.isDead)
EndGame(false);
.
void EndGame(bool win)
// unlocks the cursor before leaving the scene, to be able to click buttons
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
// Remember that we need to load the appropriate end scene after a delay
gameIsEnding = true;
endGameFadeCanvasGroup.gameObject.SetActive(true);
if (win)
m_SceneToLoad = winSceneName;
m_TimeLoadEndGameScene = Time.time + endSceneLoadDelay + delayBeforeFadeToBlack;
// play a sound on win
var audiosource = gameObject.AddComponent<AudioSource>();
audioSource.clip = victorySound;
audioSource.playOnAwake = false;
audioSource.outputAudioMixerGroup = AudioUtility.GetAudioGroup(AudioUtility.AudioGroups.HUDVictory);
audioSource.PlayScheduled(AudioSettings.dspTime + delayBeforeWinMessage);
// create a game message
var message = Instantiate(WinGameMessagePrefab).GetComponent<DisplayMessage>();
if (message)
message.delayBeforeShowing = delayBeforeWinMessage;
message.GetComponent<Transform>().SetAsLastSibling();
else
Scene scene = SceneManager().GetActiveScene;
m_SceneToLoad = scene.name;
m_TimeLoadEndGameScene = Time.time + endSceneLoadDelay;
我不明白为什么我会收到错误消息。请帮忙。
编辑:错误在这一行:Scene scene = SceneManager().GetActiveScene;
【问题讨论】:
如果你说错误在哪里就好了,那我们就不用去搜索了。我认为它在这里:Scene scene = SceneManager().GetActiveScene;
显然,SceneManager
不是方法,而是属性。
@PMF 正确,我会添加它
@PMF SceneManager
是 type 而不是属性。 SceneManager.GetActiveScene()
然而是一种方法 ;)
@derHugo Duh,所以这是另一种可能性。我实际上猜到了这个;-)
【参考方案1】:
SceneManager
是一个类型,而不是一个属性。 SceneManager.GetActiveScene()
然而是一个静态方法...
应该是这样的
var scene = SceneManager.GetActiveScene();
【讨论】:
以上是关于出现错误 CS1955:不可调用的成员“SceneManager”不能像方法一样使用的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:在第 7 行调用非对象上的成员函数 prepare()。我想不通,为啥会出现此错误?
如何将.cs文件编译成.exe可执行文件/ 我用vs2010命令提示编译.cs文件出现错误
带有 mongodb 的流明:出现错误:在 null 上调用成员函数 prepare()