One of the most effective things I found to help minimize meltdowns when my children were small was an old fashioned kitchen timer.
Kids do much better if they have some sense of what is coming, and are given a set period of time to wind up their current activity. If you put yourself in their shoes, it is not hard to understand. When you are in the middle of a favorite movie, sports event or even just a good book, how would you react if someone told you that you had to stop right now and come with them to do something else, usually without any explanation as to why that was necessary. I doubt that you would be very happy, and might very well refuse.
One of the problems is that small children don't have much concept of time, and this is where the timer comes in. The best choice is an old-fashioned timer with a dial, preferably one that clicks off the minutes and dings when time is up. Digital timers don't work nearly as well since it is much harder for the child to visualize the time passing.
Give it a try. Give a two- or five-minute warning when it is time for lunch, a nap or to get out the door to go somewhere. It is also very helpful if you tell them what is going to happen next (not a discussion, just a brief statement of fact). It also works well if they resist napping. I used to set the timer for an hour, and told them that if they laid down and rested quietly, they could get up when the timer rang. Most of the time, they were sound asleep and never heard it. If they are still awake, you must be prepared to let them get up. (It is important that the timer be where they can see it but not reach it. It doesn't take long for them to discover how to change the time.)