Well, the often used alternative to gamestudios while loops with wait(1), which also Unity uses are event functions. in unity one is for example called Start. That is called in the moment the object is created. Then there is the update function, which is called each frame, directly before rendering And then there of course are some other events as well like mouseDown or what ever it is called, which is executed in the moment a mousebutton is pressed above the object and there of course are also other functions like that. It is actually very easy.
These function are always called in the same order of course. A bit more tricky in unity is in my opinion the way you can access other objects. But also that works fine if you once found out how to do it. What I like is that the code is in general very modular and quite clean, the disadvantage of the object oriented design are on the other hand the very long code lines which tend to be a bit messy. I for example have a script instance which has the pointer to another scripts instance which has the gameobject it handles as pointer, which has the transform member, which holds the position, which holds the x, y and z components. The result is something like this: scrobj1.scrobj2.gameObject.transform.position.x, but well this is an extreme case of course, just to demonstrate what I mean.