我有 2 个场景,我需要在第一个场景被更改之前取消订阅事件。
public event Action ObjIndexChanged = () => { };
void HandleCommand(Command command)
{
switch (command.name)
{
case "LAUNCH":
GameSettings.ObjIndex = Convert.ToInt32(command.data["structureId"]) - 1;
SceneManager.LoadScene("Main", LoadSceneMode.Single);
break;
case "CHANGE":
GameSettings.ObjIndex = Convert.ToInt32(command.data["structureId"]) - 1;
ObjIndexChanged.Invoke();
break;
case "EXIT":
SceneManager.LoadScene("Background", LoadSceneMode.Single);
break;
default:
break;
}
}
还有我的游戏管理器:
private void Start()
{
commandsReceiver.ObjIndexChanged += OnIndexChanged;
}
private void OnIndexChanged()
{
//GameLogic
}
private void OnDestroy()
{
commandsReceiver.ObjIndexChanged -= OnIndexChanged;
}
- 我加载 MainScene。操作被调用了 1 次
- 加载背景场景
- 加载主场景。动作被调用了 2 次
- 加载背景场景
- 加载主场景。动作被调用 3 次
我的错误在哪里?谢谢