06/02/2020
I follow an Youtube tutorial to make the base of the dialogue function this week.
If player stay near with the NPC with dialogue (here I use an object to simulate NPC), a text will show up to tell player to interact with the NPC.

If player choose to interact with the NPC, the dialogue box will pop up on the top of the NPC. The dialogue box will keep tracing the NPC position if player still stay around the detection area (Detection area = collider area).

Object Dialogue
Since different object may tell player different hints when player interact with them, I use the NPC dialogue as a blueprint to make the object dialogue class. And I make a few change on my dialogue script.
1. Rotate player towards the object that interacting to
2. Can control if the dialogue will pop up automatically or not
3. Set the dialogue box position on the top of the object or on a fixed point on the screen

on the top of the object 
on the screen
4. Highlight the object

*The highlighted effect is made by shader graph and C# script.
- Create a shader graph with exposed parameter

- Create a material from the shader graph
- Create a C# script to get the object texture and then set the texture to the material
- Apply the material on the interacting object
- Reset the object material to its original one if player is not around it