I'm trying to learn how to use surface guis since I've never used it, but I'm a little hesitant about what to do, I'm trying to make an inventory, but I'm not sure how it will open, for example, it should be instantiated, or just be cloned and then modified, it should be ready and just teleported to the player, and how the player can interact with it without any problems.

So in summary, how could I create a surface gui properly and how could I interact with the player.

My goal in this question is to learn how to use surface guis in an ideal way from someone who has experience in this so that I do not have problems in the process.