I wanna make an interactive system, objective system and dialog

So, i wanna make an horror game, and i want items around the house to be interactable and to say something when clicked, but im not sure how
ive searched everywhere and i cant do anything at all
to be more clear, i want the game to start with a scene then to the actual game, where the objective is brush your teeth, so basically click an item and clear the objective to the next one, eat something forem the frige, the same happens to all objectives until the last one which is leaving the house where you click on the door and the screen goes pitch black, but, firstly, how do i even make objects clickable and how do i make them trigger an event to clear an objective
i wanna make something like “my eyes deceive” yknow, make furniture clickable to sya stuff like in undertale, idk if i explained well

Make an interface with a method which will be executed when player’s raycast hit the object. Make a player to do raycasts on pressing mouse and executing that method if it have hit the valid object (I personally do trygetcomponent or getcomponent with a nullcheck). Implement that interface in scripts you attach to objects player should click on, depending what should happen when a player do so.
Something like:

Something like this on Player:

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.E))
        {
            if (Physics.Raycast(cam.position, cam.forward, out RaycastHit hit, usingDistance))
            {
                Iusable usable = hit.collider.gameObject.GetComponent<Iusable>();
                if (usable != null)
                {
                    usable.OnUse(gameObject);
                }
            }
        }
    }

This is an Interface, just create a new script with only this:

    using UnityEngine;
    public interface Iusable
    {
        void OnUse(GameObject obj);
    }

This is the one of the scripts you can attach to something clickable

    using UnityEngine;
    public class DeadlyThing : MonoBehaviour, Iusable
    {
        public void OnUse(GameObject obj)
        {
            Debug.Log("You dead");
            Destroy(obj);
        }
    }

For objectives you would need to somehow track the amount of stuff you have done and haven’t completed yet, in most simple case just an integer counter increasing every task you do and checking if howmanytasksdone = howmanytasks after every completed task

For “dialogue” you would likely need UI element popping up on the screen, the text one specifically, and fade out/ remove it afterwards. Something like

    using UnityEngine;
    using UnityEngine.UI;
    public class SayHi : MonoBehaviour, Iusable
    {
        GameObject textObject;
        Text text;
        float showTime;
        string toSay = "hi";
        public void OnUse(GameObject obj)
        {
            text.text = toSay;
            textObject.SetActive(true);
            Invoke("Hide", showTime);
        }
        private void Hide()
        {
            textObject.SetActive(false);
        }
    }

Yeah you would need to make an UI text on Canvas and stuff, you may search up for how to make UI in Unity

Thank you! Ill make sure to try harder next time, so sorry!