RPG-Game Quests

I’m trying to make it so that the player has got a quest manager attached to them, as the player moves from scene to scene for the quest, the quests in the quest manager can access specific objects from the scene, for example: activating dialogue, activating/deactivate objects.
How would you do this as all my current attempts have failed.

I would suggest making the quest manager / system completely separate from the Unity stuff. There’s no real need to have it be a MonoBehaviour, and there’s no real need for it to access other scene objects in the manner you’re suggesting either. Scene objects are much like UI in that should really just be an interface for interacting with data and logic that’s controlled elsewhere- if you treat them as avatars for data, instead of data itself, then things start to get a lot easier to manage.

As a practical example, I would likely make the quest manager a static system in 90% of games- there’s no need to have instances of it because there’s only 1 “main character”. When you change scenes, it should simply fire a function in that manager that says “this is the scene we’re in now” and it should update itself accordingly. Other systems and scene objects can register to receive those updates, can access the manager and get data on quests they’re related to, and update themselves. A trigger area that is only active if you’re at on step 3 of quest 15 can start active when the scene loads, register itself to the quest manager to receive updates when a quest status changes, then disable itself if that part of the quest isn’t active yet and wait for it to become active. There’s no reason it should know absolutely anything else about the main character or the quest in question except “what are my criteria for being active” and “what should I do once I’m triggered”. Dialogue is really the same way- if a character/object is able to be talked to all of the time, then you should just run the quest-check when actually triggering the conversation, but if they only speak when a quest is active, they should register/track quest progress on scene load and disable the dialogue aspect until if/when that quest becomes active, just like the trigger example.

That’s my approach anyways, and I find that it serves me quite well. If you’re adamant about putting a quest manager in a MonoBehaviour for some reason, the majority of it should still run the same way- the difference is that each object in the scene needs to identify who the main character is and grab the component from them beforehand, or access a central GameManager of some sort and get the character GameObject / quest manager component from there. The rest would be identical.