我有 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;
}
我的错误在哪里?谢谢
答案 0 :(得分:0)
不是在Start函数中订阅事件,而是在
中订阅
Shape
然后不是在启动函数中取消订阅事件,而是在
中订阅
void OnEnable()
像这样:
void OnDisable()